如何正确地重新映射`` 至 `` 在 vi​​m 中?

如何正确地重新映射`` 至 `` 在 vi​​m 中?

我很高兴拥有类型矩阵2030,以及一个快乐的 vim 用户。在这个键盘上, 位于<del>中央位置,而 像<esc>往常一样位于左上角。所以我想将我的<del>键重新映射到<esc>。到目前为止,我将以下几行添加到我的.vimrc

noremap <del> <esc>
nnoremap <del> <esc>
inoremap <del> <esc>
vnoremap <del> <esc>
xnoremap <del> <esc>
snoremap <del> <esc>
cnoremap <del> <esc>
onoremap <del> <esc>

它几乎可以正常工作,除了在命令行模式下:输入:cmd<del>将启动帮助:cmd<enter>,而输入:cmd<esc>将删除该行并返回正常模式。

以下是 的输出:verbose cnoremap <Del>

c  <Del>       * <Esc>>    
    Last changed in ~/.config/vim/vimrc 

其他模式的输出给出了类似的结果,带有奇怪的双 V 形>>,但工作正常(在插入模式下打字将切换到正常模式)。

答案1

我认为这种行为是由于下面描述的内容造成的:help c_Esc(将“宏”读作“映射”;它们密切相关):

  <Esc>   When typed and 'x' not present in 'cpoptions', quit
          Command-line mode without executing.  In macros or when 'x'
          present in 'cpoptions', start entered command.

您可以使用以下方法解决此问题<C-c>

:cnoremap <del> <C-c>

相关内容