我想使用右箭头键打开 NERDtree 中的节点。我看到有 NERDTreeAddKeyMap,但我是 vimscript 新手,不知道如何正确调用它。我想使用右箭头调用 activateNode。我通过将以下行添加到 NERD_tree.vim 本身来完成此操作:
exec "nnoremap <silent> <buffer> <Right> :call <SID>activateNode(0)<cr>"
但我想在我的 .vimrc 中以正确的方式执行此操作
答案1
:help NERDTreeAddKeyMap()
将向您展示如何为 NERDTree 编写一个小插件。由于您正在调用内置的 NERDTree 函数,因此您甚至不需要自定义函数。
答案2
我认为,除非我使用的版本(4.2.0)存在限制,否则以下内容将满足您的要求。
在 mymapping.vim 中,在 ~/.vimfiles/nerdtree_plugin/
" -*- vim -*-
call NERDTreeAddKeyMap({ 'key': "Right", 'scope': "Node", 'callback': "<SID>activateNode" })
现在,为了让“Right”正常工作,您必须编辑 NERD_tree.vim,如下所示:
"FUNCTION: KeyMap.bind() {{{3
function! s:KeyMap.bind()
改变:
if mapkey =~? '^\([CM]-\|middlerelease\|2-leftmouse\|leftrelease\)'
到:
if mapkey =~? '^\([CM]-\|middlerelease\|2-leftmouse\|leftrelease\|right\)'
旧代码没有对非 <MiddleRelease>、<2-LeftMouse> 或 <LeftRelease> 的映射键进行特殊处理