在我的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,并且运行正常。也就是说,这个问题只发生在我正在进入的远程机器上。
有没有人有任何可能有助于解决这个烦人问题的想法?
答案 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>
进行检查,并检查插入的内容。