是否有一种常见的方法来重新映射特定Vim插件中使用的键,例如NERDTree或TagList?我一直在尝试重新映射TagList插件的某些键,但一直无法做到。NERDTree的键更容易重新映射,但这是因为插件编写的方式吗?
是否有一种常见的方法来重新映射特定Vim插件中使用的键,例如NERDTree或TagList?我一直在尝试重新映射TagList插件的某些键,但一直无法做到。NERDTree的键更容易重新映射,但这是因为插件编写的方式吗?
<Plug>
(:help using-<Plug>
)。插件可以检查用户是否将某些内容映射到了<Plug>
命令(例如:<Plug>(textobj-indent-a)
),如果没有,则使用自己的映射。这样,用户可以定义他们想要的映射,插件会填充其余部分。let g:NERDTreeMapDeleteBookmark = 'A'
let g:NERDTreeMapMenu = 'B'
let g:NERDTreeMapHelp = 'C'
以下语句可添加到您的vimrc文件中,以定义自己的映射(而非更改插件代码)。
其他插件将使用类似no_nerdtree_maps
的变量(每个插件名称不同)。如果您在vimrc中设置了此变量,则可以为插件的函数/命令创建自己的映射。
只需在您的插件目录中打开NERD_tree.vim,您将看到一个名为“键映射的初始化变量调用”的部分,其中包含如下调用:
call s:initVariable("g:NERDTreeMapDeleteBookmark", "D")
call s:initVariable("g:NERDTreeMapMenu", "m")
call s:initVariable("g:NERDTreeMapHelp", "?")
...
s:initVariable() 的第二个参数是要使用的键盘快捷方式。只需将其更改为您想要的即可。
s:initVariable
函数将在尚未定义变量时初始化变量,因此您只需要在vimrc中定义此变量即可。 - ZyX
noremap : ; | noremap ; :
的操作,并期望它适用于插件快捷键,但是您可以使用类似于 这个(您需要查看代码直到标记为“Create a new mapping with unique lhs”的行)的东西。 - ZyX