vimrc key remap似乎不起作用,但适用于:Ex模式

时间:2014-09-18 16:41:29

标签: vim

在我的vimrc中,我有以下内容:

imap <S-Tab> <Esc><<i 

这将在插入模式下以1个制表符长度Shift + Tab取消。当我在我的vimrc中有这个时,Shift-Tab就好像它只是一个Tab。但是,如果我执行以下操作:Ex模式:

:imap <S-Tab> <Esc><<i 

重新映射正常。有谁知道可能导致问题的原因是什么? vimrc中没有其他重映射。我跑了

strace -o vim_strace vim

验证是否正在获取正确的vimrc,并且没有其他奇怪的vimrc来源。

有趣的是,我在本地计算机上拥有完全相同的vimrc,并且运行正常。也就是说,这个问题只发生在我正在进入的远程机器上。

有没有人有任何可能有助于解决这个烦人问题的想法?

2 个答案:

答案 0 :(得分:1)

您甚至不需要映射,因为您可以在插入模式下使用内置命令<c-d>。把它想象为减少缩进。有关详细信息,请参阅:h i_ctrl_d

如果您希望使用<s-tab>,请将<s-tab>映射到<c-d>,方法是将以下内容插入~/.vimrc

inoremap <s-tab> <c-d>

应该注意的是,并非所有终端都可以区分<tab><s-tab>

答案 1 :(得分:1)

可能覆盖了映射。

:verbose imap <S-Tab>

会告诉你。

也可能是<S-Tab>未在终端中正确处理,而Vim只接收普通<Tab>。您可以在插入模式下输入<C-V><S-Tab>进行检查,并检查插入的内容。