如何";重写;现有vim密钥绑定?

如何";重写;现有vim密钥绑定?,vim,vim-tabular,Vim,Vim Tabular,我想指定CTRL+L进入下一个选项卡(:tabnext)。我把它放在~/.vimrc: nmap <c-l> :tabnext<CR> nmap <unique> <c-r> <Plug>NetrwRefresh nmap:tabnext 它工作得很好,但当我在几个窗口上拆分屏幕时,它就不工作了。似乎CTRL+L与默认指定的“重画屏幕”操作冲突。例如,当我在中心窗口上按CTRL+L时,我什么也得不到(请参见屏幕截图): 但是,

我想指定CTRL+L进入下一个选项卡(
:tabnext
)。我把它放在
~/.vimrc

nmap <c-l> :tabnext<CR>
 nmap <unique> <c-r> <Plug>NetrwRefresh
nmap:tabnext
它工作得很好,但当我在几个窗口上拆分屏幕时,它就不工作了。似乎CTRL+L与默认指定的“重画屏幕”操作冲突。例如,当我在中心窗口上按CTRL+L时,我什么也得不到(请参见屏幕截图):

但是,当我在左窗或右窗上按相同的按钮时,效果很好。。 我想我需要“重写”默认操作,不是吗


我使用终端的VIM。

< P>中间的窗口,如果我没有错的话,是NETRW(VIM标准的文件管理插件)。它不是一个自定义插件,但它仍然是一个插件

如果您查看一下
:help netrw-ctrl-l
,您将看到它不仅仅是一个重画,它还刷新目录。因此,它是从插件映射的,仅覆盖netrw窗口的默认ctrl-l映射

如果在该窗口中执行
:verbose nmap
,您将看到它的确切定义位置:在vim安装中的
autoload/netrw.vim
文件中。看看这里,我们发现了以下片段:

if !hasmapto('<Plug>NetrwRefresh')
 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh
 imap <buffer> <unique> <c-l> <Plug>NetrwRefresh
endif

但是,更好的方法是不要踩到Vim的脚。

Netrw v155a(请参阅)通过以不同方式映射ctrl-L来解决此问题;它现在调用(未重新映射)ctrl-L作为其刷新的一部分。因此,即使在netrw窗口中,ctrl-L也会刷新所有窗口。

我认为,管理中心窗口的插件会执行自己的
nmap
,并覆盖您的绑定(因为插件在
.vimrc
之后执行)。检查插件是否有阻止绑定的配置变量;如果没有,您可能需要编辑插件以删除绑定,或者将绑定放在稍后执行的文件中。我不使用任何自定义插件,只使用默认安装在Ubuntu中的Vim 7.4。我不知道Vim good,使用时间不到1周,请您详细解释一下您的意思好吗?现在我在
.vimrc
中有以下内容:
nmap NetrwRefresh\n nmap:tabnext\n nmap:tabprevious
。但它仍然不起作用。我做错了什么?