vim忽略了.vimrc中提供的键映射

时间:2015-01-13 15:33:42

标签: vim

我有一个.vimrc文件(托管在git-repo中),包含以下键映射:

map <c-j> <c-w>j
map <c-k> <c-w>k
map <c-l> <c-w>l
map <c-h> <c-w>h

但是最近,地图<c-j>停止了工作,导致<c-j>更改为插入模式

我的git-repository没有显示任何更改,但:map命令返回:

o  <NL>          <C-W>j
   <C-K>         <C-W>k
   <C-L>         <C-W>l
   <C-H>         <C-W>h

可能是什么原因? <NL>代表什么?

  • 在vim启动后执行:map <c-j> <c-w>j,修复映射。
  • 执行noremap <c-j> <c-w>j无法解决问题
  • 将映射移动到vimrc文件的末尾也不会导致成功...

编辑1.0:

:verbose map <c-j>返回:

v  <NL>          <Plug>IMAP_JumpForward
    Last set from ~/.vim/bundle/vim-latex-suite/plugin/imaps.vim
n  <NL>          <Plug>IMAP_JumpForward
    Last set from ~/.vim/bundle/vim-latex-suite/plugin/imaps.vim
o  <NL>          <C-W>j
    Last set from ~/.vimrc

编辑2.0:

禁用vim-latex-suite使映射再次起作用。但我如何将两者结合起来呢?插件+映射?

1 个答案:

答案 0 :(得分:2)

vim-latex-suite 插件会覆盖您的<C-J>映射。 (我不知道它为什么定义全局映射; Latex文件的缓冲区本地可能就足够了,但我不知道插件。)当插件提供<Plug>映射时,很容易重新定义您~/.vimrc中存在冲突,例如:

nmap <Leader>j <Plug>IMAP_JumpForward

:help key-notation下,您会看到<C-J><NL>是等效的。可能控制键代码具有特殊含义:

<NL>      linefeed        CTRL-J   10 (used for <Nul>)