当我在这里有我的 vimrc 时:
set tabstop=2
set shiftwidth=2
set softtabstop=2
set expandtab
set smarttab
我已经安装了 supertab 插件。每当我处于插入模式时,我按下制表符,它会显示自动完成,但有时我想在字符串文字中插入一个真正的制表符。所以我的意思是每当我在双引号字符串文字中按制表符时,它应该输入我们一个真正的制表符。
当我在这里有我的 vimrc 时:
set tabstop=2
set shiftwidth=2
set softtabstop=2
set expandtab
set smarttab
我已经安装了 supertab 插件。每当我处于插入模式时,我按下制表符,它会显示自动完成,但有时我想在字符串文字中插入一个真正的制表符。所以我的意思是每当我在双引号字符串文字中按制表符时,它应该输入我们一个真正的制表符。
在插入模式或命令模式(:
编辑器底部的提示符)下,键入CTRL+V然后TAB。
使用CTRL+V表示 Vim 应该从字面上获取下一个字符。即使在插入模式下。
更新:
正如 Herbert Sitz 所说,如果 gVim 处于 Windows 模式(默认),您必须使用CRTL+Q代替CTRL+ V。
@Samnang:我和你有类似的设置;不幸的是,杰森的回答对我来说不起作用。
这是一种解决方法:
选择文本(可视模式)并进行搜索/替换,
:'s/`/\t/g
更新的答案,灵感来自 @Cyryl1972 的评论。
在所有行的开头插入制表符(另请注意:对于以下任何代码,无需选择行,因为它包含在表达式的行匹配部分中):
:1,$s/^/\t\1/
所有行中前 10 个字符后的惰性制表符:
: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
参考资料(堆栈溢出):
参考文献(其他):