2012-11-20 47 views
3

我正在使用插件vim-surround,它將ds映射到「刪除周圍的括號」,例如將(Hello)轉換爲Hello。我想映射命令以刪除函數appliction,如轉向了foo(bar)到酒吧。如何將命令映射到多個編輯

我試圖

nmap <Leader>df bdt(ds(

去單詞的開頭,刪除到第一個(,然後刪除周圍的括號內。但是,當我使用它只會刪除括號,並且不會自動刪除括號。我試過在最初的部分之後放置其他編輯命令,噸工作。所以

nmap <Leader>df bdt(x 

按預期工作。

同樣,我試着只是做

nmap <Leader>s ds(

而且也適用!

其他的事情不工作:

nmap <Leader>df bdt(<bar>ds(

有誰知道我怎樣才能使這項工作?

回答

2

我會建議一個更簡單的映射,如下所示。

nmap <silent> dsf ds)db 

這將刪除「周圍」函數應用程序,以便光標需要在parens上或內部。

+0

謝謝,這是一個有用的映射,我可以報告說,更改我的其他映射到'bdt(ds)'使它工作。雖然不太清楚爲什麼。 – mpeytonjones

+1

'b'移回到函數的開頭,所以'foo(bar)'中的'f'。 (''和'ds)'上的光標將刪除周圍的圓括號,我們兩個映射之間的主要區別是在映射中,光標必須位於函數名稱上,或者'('。 –

0

再一個,假設光標某處括號:

nnoremap <leader>df yi(B"_df)p 
  • y ANK什麼i n面的括號
  • 跳轉到B eginning function
  • d elete整體功能的在黑洞寄存器中呼叫
  • p ut以前被抽取的文本