我怎样才能在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式备忘录