繁体   English   中英

如何在Vim中插入真正的制表符?

[英]How can I insert a real tab character in Vim?

当我在这里使用我的vimrc:

set tabstop=2
set shiftwidth=2
set softtabstop=2
set expandtab
set smarttab

我安装了supertab插件。 每当我处于插入模式时,我按Tab键,它会显示自动完成,但有时我想在字符串文字中插入一个真正的制表符。 所以我的意思是每当我在双引号字符串文字中按Tab键时,它应该输入一个真正的制表符。

在插入模式或命令模式下(编辑器底部的: prompt),键入CTRL + V,然后键入TAB

使用CTRL + V信号Vim它应该按字面意思取下一个字符。 即使在插入模式下。

更新:

如Herbert Sitz所述,如果gVim处于Windows模式(默认),则必须使用CRTL + Q代替CTRL + V.

@Samnang:我和你有类似的设置; 不幸的是,Jason的答案对我来说没有用。

这是一种解决方法:

  • 替换一些字符(例如反引号:`)或字符(例如一个独特的字母数字字符串:zzz),你想要你的标签
  • 选择文本(可视模式)并进行搜索/替换,

      :“S /`/ \\吨/克 

更新的答案,灵感来自@Cyryl1972的评论。

在所有行的开头插入制表符(另请注意:对于以下任何代码,无需选择行,因为它包含在表达式的行匹配部分中):

:1,$s/^/\t\1/

所有行中前10个字符后的Inert选项卡:

:1,$s/^\(.\{10}\)/\1\t/

说明 - 第一部分:

:1,$      Match from line 1 to end of file
^(.{10}   Collect (preserve) all text from beginning of line to position 10
          (you need to escape the parentheses, \( and \), as well the FIRST
          (left) curly brace, only: \{ -- as it, { , appears to have special
          meaning in regex when used for this purpose

说明 - 第二部分:

/1        Add back the preserved text
\t        Insert a tab

......并且该线的其余部分也会自动恢复。

当前行,仅限:

:s/^/\t\1/

示例:在第2-4行的第10位插入标签(0索引):

1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 

:2,4s/^\(.\{10}\)/\1\t/

1234567890abcdefghij 
1234567890  abcdefghij 
1234567890  abcdefghij 
1234567890  abcdefghij 
1234567890abcdefghij 

参考文献(StackOverflow):

参考文献(其他):

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM