有没有一种方法可以映射插件特定的键以在 Vim 中执行多个键?
Is there a way to map plugin specific keys to do multiple keys in Vim?
我想映射 NERDTree 的选项卡打开键 't',以执行多项操作。也就是说,我希望它打开选项卡,然后执行以下命令列表:TlistToggle Ctrl W、Ctrl T、Ctrl W、Shift K、30、Ctrl W、减号。所以我打开文件的标签列表,然后水平拆分列表和文件,然后调整标签列表的大小。
我试过以下方法:
nnoremap <t> NERDTree-t TlistToggle <C-W><C-T><C-W><S-K>30<C-W> -
但这似乎没有任何作用。
想法?我只是完全做错了吗?这甚至可能吗?
NERDTree 映射不是全局映射,它只存在于(并且有意义)在插件的侧边栏中。这使得它更难覆盖,但是你可以挂钩到 NERDTree 设置它的 'filetype'
,然后定义一个 buffer-local 映射来覆盖 NERDTree 的:
:autocmd 文件类型 nerdtree nnoremap t ...
虽然 normal 模式命令(如 <C-w>...
东西)确实可以连接,但对于插件调用而言并非如此。您可以通过 :nmap <buffer> t
:
找到 NERDTree's
:调用 nerdtree#invokeKeyMap("t")
Taglist 也是一个 Ex 命令;您可以将两者与 |
结合使用(在映射中写为 <Bar>
):
:call nerdtree#invokeKeyMap("t")<Bar>TlistToggle<CR>
所以,像这样的东西应该可以工作(我没有测试):
:autocmd FileType nerdtree nnoremap <buffer> t :call nerdtree#invokeKeyMap("t")<Bar>TlistToggle<CR><C-W><C-T><C-W>K30<C-W>-
这是我用来在 NERDTree 的新选项卡中打开文件然后拆分文件和调整文件大小 & TlistToggle 的最终解决方案:
autocmd FileType nerdtree nnoremap <buffer> t :call nerdtree#ui_glue#invokeKeyMap("t")<CR> :TlistToggle<CR> <C-w><C-t><C-w>K :exe "resize " . ((winheight(0) + winheight(1)) * 3/20)<CR>
这会将在水平选项卡中打开的标签列表的大小调整为整个 window 中总行数的 15%。
我想映射 NERDTree 的选项卡打开键 't',以执行多项操作。也就是说,我希望它打开选项卡,然后执行以下命令列表:TlistToggle Ctrl W、Ctrl T、Ctrl W、Shift K、30、Ctrl W、减号。所以我打开文件的标签列表,然后水平拆分列表和文件,然后调整标签列表的大小。
我试过以下方法:
nnoremap <t> NERDTree-t TlistToggle <C-W><C-T><C-W><S-K>30<C-W> -
但这似乎没有任何作用。
想法?我只是完全做错了吗?这甚至可能吗?
NERDTree 映射不是全局映射,它只存在于(并且有意义)在插件的侧边栏中。这使得它更难覆盖,但是你可以挂钩到 NERDTree 设置它的
'filetype'
,然后定义一个 buffer-local 映射来覆盖 NERDTree 的::autocmd 文件类型 nerdtree nnoremap t ...
虽然 normal 模式命令(如
找到 NERDTree's<C-w>...
东西)确实可以连接,但对于插件调用而言并非如此。您可以通过:nmap <buffer> t
::调用 nerdtree#invokeKeyMap("t")
Taglist 也是一个 Ex 命令;您可以将两者与 |
结合使用(在映射中写为 <Bar>
):
:call nerdtree#invokeKeyMap("t")<Bar>TlistToggle<CR>
所以,像这样的东西应该可以工作(我没有测试):
:autocmd FileType nerdtree nnoremap <buffer> t :call nerdtree#invokeKeyMap("t")<Bar>TlistToggle<CR><C-W><C-T><C-W>K30<C-W>-
这是我用来在 NERDTree 的新选项卡中打开文件然后拆分文件和调整文件大小 & TlistToggle 的最终解决方案:
autocmd FileType nerdtree nnoremap <buffer> t :call nerdtree#ui_glue#invokeKeyMap("t")<CR> :TlistToggle<CR> <C-w><C-t><C-w>K :exe "resize " . ((winheight(0) + winheight(1)) * 3/20)<CR>
这会将在水平选项卡中打开的标签列表的大小调整为整个 window 中总行数的 15%。