【问题标题】:Map same key for different actions in normal vim mode and inside NERDTree在普通 vim 模式和 NERDTree 中为不同操作映射相同的键
【发布时间】:2019-10-31 10:05:39
【问题描述】:

我想在普通 vim mod 中将 Alt+F1 映射到 :NERDTreeFocus 并在 NERDTree 视图中映射到 :NERDTreeToggle。我试过这个:

map <silent> <M-1> :NERDTreeToggle<CR>
nmap <silent> <M-1> :NERDTreeFocus<CR>

但它不起作用,显然,我不明白绑定在 vim 中是如何工作的。你能帮我解决一下吗?

【问题讨论】:

    标签: vim nerdtree


    【解决方案1】:

    您在: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>
    

    其他 cmets

    • You should use :noremap;它使映射不受重映射和递归的影响。
    • &lt;M-1&gt; 应该由 Alt + 1 触发,而不是由 F1 触发(除非你有一个奇怪的键盘设置)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 2011-12-13
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 2017-01-11
      相关资源
      最近更新 更多