Vim忽略.vimrc中提供的键Map

cpjpxq1n  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(132)

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

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

字符串
但最近,Map<c-j>停止工作,导致<c-j>更改为insert-mode
我的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,修复了Map。
  • 执行noremap <c-j> <c-w>j并不能解决问题
  • 将Map移动到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使Map再次工作。但我如何将两者合并结合起来?插件+Map?

wfveoks0

wfveoks01#

  • vim-latex-suite* 插件覆盖了你的<C-J>Map。(我不知道为什么它定义了一个全局Map;一个用于Latex文件的缓冲区本地Map可能就足够了,但我不知道这个插件。)由于插件提供了<Plug>Map,所以很容易在你的~/.vimrc中重新定义冲突的Map,例如:
nmap <Leader>j <Plug>IMAP_JumpForward

字符串
:help key-notation下,你会看到<C-J><NL>是等价的。可能控制键代码有特殊含义:

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

z8dt9xmd

z8dt9xmd2#

Solaris 11* 上的 *Vim也有类似问题。用./vim80/vimrc编写的命令:map被忽略。代码如下:

map <Space>w :w!<CR>
map <Space>q :q!<CR>
map <Space>k Y
map <Space>v p

字符串
我用这个来避免输入太多:
Spacew的作用与Shift:wShift!Enter相同。

解决方案是编写代码not in vimrc but in **defaults.vim**

我只在虚拟机上的Solaris 11上遇到过这个问题。其他unix发行版如RedHat或Debian以及Windows上的Vim都能正常工作,即vimrc中的:map-code。

相关问题