Vim中

2010-01-18 36 views
36

在Vim中取出一對括號,括號,或括號,如果我有代碼,例如(在紅寶石):Vim中

anArray << [anElement] 

和我的光標位於所述第一[,我可以跳到]%鍵,我可以刪除[]對之間有什麼d%所有內容,但如果我只是想刪除兩者之間的[]離開所有剩餘的內容。換句話說,什麼是最快捷的方式去:

anArray << anElement 
+9

我會做'XF]',但它不會做的括號匹配。或者,首先通過'%',然後'x'進行手動paren-matching,接着是兩個反引號,然後是'x'。 – 2010-01-18 06:17:00

+0

優秀的問題。我是一個多產的vim用戶,這種情況不時出現,而且我沒有很好的內置解決方案。 – Peter 2010-01-18 06:17:49

+0

Alok的第二個選項是一種享受。 – user2023370 2016-08-25 10:54:15

回答

42

使用Surround.vim插件的Vim:

http://www.vim.org/scripts/script.php?script_id=1697

...你可以消除周圍的分隔符與ds<delimeter>

通過安裝插件Vundler

地址:

Plugin 'tpope/vim-surround' 

到你的.vimrc文件並運行:PluginInstall

+0

也許這只是我,但我無法對插件做任何事情。這太複雜和違反直覺。 – I159 2017-07-21 17:44:53

42

ma%x`ax(寄存器a馬克位置,去匹配paren,刪除char,去標記a,刪除char)。

編輯:

%x``x做同樣的事情(感謝尖端阿洛克)

+14

正如我在我的主要評論中所說的,你不需要手動標記:你可以通過兩個反引號去到最後一個位置。所以%x''x更快。 – 2010-01-18 06:22:22

+0

這與我一直在做的事情類似,但對於編輯來說,這是一個非常有效的按鍵。 – Josh 2010-01-19 02:36:35

+4

我更喜歡'%% x''x',因爲你可以在任何地方的任何地方。 – 2012-01-17 11:17:02

2

,如果你想在同一時間刪除分隔符一行其他的答案做工精細。

如果在另一方面,你要刪除的功能,它是從整個文件使用的分隔符:

:%s/function(\(.*\))/\1/g 

該文件與arguments取代function(arguments)無處不在。

4

如果你有一個指向該行或使用%的第一個字符標記問題...

di[vhp 

作品,以及......它刪除匹配括號[],當光標在任何地方。 '['可以替換爲'{'或'(')

26

可以利用Vim內置的文本對象(請參閱:help text-objects)。所需的編輯可以表示爲以下序列 三個動作。

  1. 切方括號內的文字。

    di[ 
    
  2. 選擇(空)方括號。

    va[ 
    
  3. 將剪切文本粘貼在它們上面。

    p 
    

總之它給

di[va[p 
+2

感謝您展示非插件的方式來做到這一點!非常適合我們在嵌入式系統上工作的人。 – ijustlovemath 2017-02-27 20:42:40