Vim:如何在插入模式下重新映射<c-h>?</c-h>

时间:2013-07-27 04:10:48

标签: editor vim macvim

我想在插入模式下为导航映射以下内容

  • <c-h>#向左移动
  • <c-j>#下移
  • <c-k>#上移
  • <c-l>#向右移动

所以,我在.vimrc添加了以下内容:

inoremap <c-h> <left>
inoremap <c-j> <down>
inoremap <c-k> <up>
inoremap <c-l> <right>

现在,

  • 左边不起作用[相反,它会删除左边的字符]
  • 是对的!
  • Up up!
  • 下班!

据我了解,<c-h>默认为deletes left character。但是我无法覆盖它。

我甚至试过这个:

 inoremap <c-j> <down>
 inoremap <c-k> <up>
 inoremap <c-l> <right>
 " Re-mapping <c-h> for insert-mode
 autocmd InsertEnter call RemapCtrlH()
 function RemapCtrlH()
     iunmap <c-h>
     inoremap <c-h> <left>
 endfunction

但即使这样也不起作用。

2 个答案:

答案 0 :(得分:2)

  

所以,我在.vimrc添加了以下内容:

inoremap <c-j> <down>
inoremap <c-j> <down>
inoremap <c-k> <up>
inoremap <c-l> <right>

你的第一行和第二行是一样的!将第一个更改为以下内容:

inoremap <C-H> <Left>

您可以使用以下方式确认您的映射:

:verbose imap <C-H>

更新后更新问题,评论和接受

我保留上述信息不变,但回应评论......

  1. 与“autoclose”插件的冲突解释了为什么这在编辑器中有效但在$MYVIMRC中无效。您可以通过将映射放在after-directory的插件文件中来解决此问题。

  2. 我使用了<C-H>映射的标题大小写,与官方文档中的notation一致。 The documentation states

      

    {char}的情况并不重要;因此 CTRL - A CTRL - a 是等效的。

    如果您希望映射 CTRL - Shift - H ,请改用inoremap <C-S-H>

  3. 我很高兴:verbose map帮助您找出问题的根源!调试Vim脚本时,:verbose是一个方便的工具。

  4. 祝你好运!

答案 1 :(得分:1)

我的解决方案:

inoremap <c-p> <up>
inoremap <c-n> <down>
inoremap <c-b> <left>
inoremap <c-f> <right>

优势:它们被广泛用于所有程序。