我怎样才能在Vim中插入一个真正的制表符?

当我有我的vimrc在这里:

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

并且我安装了supertab插件。 每当我在插入模式下,我按下标签,它显示了自动完成,但有时我想插入一个真正的标签字符像string文字。 所以我的意思是每当我按双引号string中的标签,它应该input我们一个真正的制表符字符。

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

使用CTRL + V信号Vim,它应该采取字面上的下一个字符。 即使在插入模式下。

更新:

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

@Samnang:我和你有类似的设置, 不幸的是,杰森的回答对我来说并不奏效。

这是一个解决方法:

  • 用你想要的标签replace一些字符(例如反引号:`)或字符(例如一个唯一的字母数字string:zzz)
  • select文本(可视模式)并执行search/replace,

      :“S /`/ \吨/克 

更新的答案,由@ Cyryl1972的评论启发。

在所有行的开始处插入选项卡(注意:不需要select行,对于以下代码中的任何一个,如包含在expression式的部分行中):

 :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):

  • 使用正则expression式Vimreplace特定位置中的字符与另一个字符
  • 如何在string的特定位置添加字符?

参考(其他):

  • 正则expression式备忘录