簡體   English   中英

有沒有一種方法可以映射特定於插件的鍵在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' ,然后將其綁定,然后定義一個本地緩沖區映射以覆蓋NERDTree的:

    :autocmd FileType書呆子nnoremap ...

  • 雖然可以串聯普通模式的命令(例如<Cw>...東西),但對於插件調用而言並非如此。 您可以通過:nmap <buffer> t找到NERDTree的:

    :call nerdtree#invokeKeyMap(“ t”)

標記列表也是一個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>

這會將在水平選項卡中打開的標簽列表的大小調整為整個窗口中行總數的15%。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM