我有一个.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?
2条答案
按热度按时间wfveoks01#
<C-J>
Map。(我不知道为什么它定义了一个全局Map;一个用于Latex文件的缓冲区本地Map可能就足够了,但我不知道这个插件。)由于插件提供了<Plug>
Map,所以很容易在你的~/.vimrc
中重新定义冲突的Map,例如:字符串
在
:help key-notation
下,你会看到<C-J>
和<NL>
是等价的。可能控制键代码有特殊含义:型
z8dt9xmd2#
Solaris 11* 上的 *Vim也有类似问题。用
./vim80/vimrc
编写的命令:map
被忽略。代码如下:字符串
我用这个来避免输入太多:
Spacew的作用与Shift:wShift!Enter相同。
解决方案是编写代码
not in vimrc but in **defaults.vim**
我只在虚拟机上的Solaris 11上遇到过这个问题。其他unix发行版如RedHat或Debian以及Windows上的Vim都能正常工作,即vimrc中的:map-code。