在正常 vim 模式和 NERDTree 内部为不同的操作映射相同的键
Map same key for different actions in normal vim mode and inside NERDTree
我想在正常 vim mod 中将 Alt+F1 映射到 :NERDTreeFocus,在 NERDTree 视图中映射到 :NERDTreeToggle。我试过这个:
map <silent> <M-1> :NERDTreeToggle<CR>
nmap <silent> <M-1> :NERDTreeFocus<CR>
但它不起作用,显然,我不明白绑定在 vim 中是如何工作的。你能帮我解决一下吗?
您在 :map
和 :nmap
之间的区别仅涉及映射适用的 模式 ;您在这里需要的是 NERDTree 用于其用户界面的 scratch 缓冲区 与所有其他缓冲区之间的区别。幸运的是,Vim 允许定义仅适用于当前缓冲区的映射::help :map-local
为了设置它,您需要在活动的 NERDTree 缓冲区内。幸运的是,插件为其暂存缓冲区设置了自定义 filetype,因此 FileType
事件可用于挂钩设置,而无需直接修改插件或所有命令启动它:
:nnoremap <silent> <M-1> :NERDTreeFocus<CR>
:autocmd FileType nerdtree nnoremap <buffer> <silent> <M-1> :NERDTreeToggle<CR>
补充评论
- You should use
:noremap
;它使映射不受重新映射和递归的影响。
<M-1>
应该由 Alt + 1 触发,而不是 F1(除非你有一个奇怪的键盘设置)
我想在正常 vim mod 中将 Alt+F1 映射到 :NERDTreeFocus,在 NERDTree 视图中映射到 :NERDTreeToggle。我试过这个:
map <silent> <M-1> :NERDTreeToggle<CR>
nmap <silent> <M-1> :NERDTreeFocus<CR>
但它不起作用,显然,我不明白绑定在 vim 中是如何工作的。你能帮我解决一下吗?
您在 :map
和 :nmap
之间的区别仅涉及映射适用的 模式 ;您在这里需要的是 NERDTree 用于其用户界面的 scratch 缓冲区 与所有其他缓冲区之间的区别。幸运的是,Vim 允许定义仅适用于当前缓冲区的映射::help :map-local
为了设置它,您需要在活动的 NERDTree 缓冲区内。幸运的是,插件为其暂存缓冲区设置了自定义 filetype,因此 FileType
事件可用于挂钩设置,而无需直接修改插件或所有命令启动它:
:nnoremap <silent> <M-1> :NERDTreeFocus<CR>
:autocmd FileType nerdtree nnoremap <buffer> <silent> <M-1> :NERDTreeToggle<CR>
补充评论
- You should use
:noremap
;它使映射不受重新映射和递归的影响。 <M-1>
应该由 Alt + 1 触发,而不是 F1(除非你有一个奇怪的键盘设置)