How to insert Tab character when expandtab option is ON in VIM
当我处于INSERT模式并且我已经打开expandtab选项时,按下选项卡会导致插入已配置的空格数。
但偶尔我想插入制表符本身。
你知道怎么做吗?
您可以在"插入模式"中使用。 在插入模式下,插入下一个字符的文字副本。
如果您发现需要经常这样做,@ Dee`Kej建议(在评论中)设置Shift + Tab以插入一个真实的标签
1
| :inoremap <S-Tab> <C-V><Tab> |
另外,由@feedbackloop注意到,在Windows上你可能需要按而不是。
-
如果要插入多个选项卡,请使用.重复上一个命令。
-
我使用这种组合时遇到了一些问题,因为我处于命令模式。确保在编辑模式下执行此命令。
-
INSERT模式,技术上。
-
注意:如果您在Windows上使用gVim,则可能需要使用CTRL + Q - 请参阅stackoverflow.com/questions/6951672/…
-
如果我将映射了怎么办?
-
如果您已映射,则应该将其取消映射。否则你将需要使用可怕的黑客来输入非标准字符(Unicode等,而不仅仅是标签)。一个hack那种工作是imap xx :let @a="\t""api,它允许你输入xx并将它扩展到一个真正的标签。 (请注意,imap xx 将无效,因为选项卡将展开)。
-
我只是这个案例的一个简单的快捷方式,它似乎正在工作(没有破坏其他任何东西):inoremap - 你可以把它放在你的~/.vimrc文件中。
-
@ Dee'Kej是的,看起来很健全,如果你经常需要插入真正的标签,这是值得的。我要把它添加到身体所以每个人都可以看到它。
-
@ Dee'Kej你的键映射似乎对我不起作用。按Shift + Tab不会执行任何操作。也许这与vim没有发送Shift + Tab键组合有关?
-
@TriNguyen很可能你的操作系统正在使用Shift + Tab进行其他操作,而vim从未见过它。您可以在vim处于活动状态时禁用此键绑定,或者只选择操作系统未使用的内容。
-
我的~/.vimrc中有set expandtab,因此在插入模式下,按键会在按下时插入空格。将inoremap 添加到我的~/.vimrc允许我使用"Shift-tab"按键在插入模式下插入标签。
-
@VictoriaStuart我也使用expandtab - 但对我来说工作得很好而不需要修复。您使用的是哪个vim版本?也许某些版本之间发生了变化?或者也许你安装的其他东西是干扰?
-
Neovim(NVIM v0.2.2),但我的?/ .vimrc很大,所以很可能是差异。
您可以在Vim中禁用expandtab选项,如下所示:
要么
PS:当你完成插入标签时,用"set expandtab"或"set et"将其设置回来
PS:如果在.vimrc(softtabstop)中有相当于4个空格的制表符集,您可能还想将其设置为8个空格,以便能够通过按Tab键一次而不是两次来插入制表符(设置softtabstop = 8)。
从expandtab上的文档:
To insert a real tab when expandtab is on, use CTRL-V. See also :retab and ins-expandtab.
This option is reset when the paste
option is set and restored when the paste option is reset.
因此,如果您有切换paste选项的映射,例如
你也可以做Tab。