2016-09-05 2 views
3

ファイル中の中括弧{}の間のすべてのテキストを削除したい(中括弧自体を含む)。カーソルの下の中括弧の間のテキストを削除したコマンド%dを知っていますが、すべての文書に対して自動的に作成したいのです。vim内のすべての中括弧{}の間のテキストを削除する方法

例:

public int getMinimum() { 
    return min; 
} 
public void setMinimum(int min) { 
    this.min= min; 
} 

私はそのような何かをしたい:

public int getMinimum() 
public void setMinimum(int min) 
+2

これらの文字{}は、「枝」ではなく、括弧*と呼ばれます。用語はさまざまです(「かっこ」と呼ばれることもあります)が、文字自体を表示することは良い考えです。 –

答えて

3

あなたはglobalコマンドでこれを行うことができます。

:g/{/normal f{da{

私はそのような何かを持っています

これは:{を含むすべての行については、その行の最初の* {に移動し、そこから一致するものを含むすべてを削除します(})。

最後に;を追加する場合は、次のコマンドを入力してください。このコマンドの最後にA;を追加できます。

ファイルに{}が含まれているコメントや文字列があると、これが壊れる可能性があることに注意してください。


*その行の最初の文字が{であり、それは別の{含まれている場合、これは実際には二{に移動します。しかし、このシナリオでは起こりそうにありませんが、心に留めておく価値があります。私はその場合、f{F{をやることができると思いますが、何とかn番目の文字や何かにジャンプする方法があるはずですが、そのコマンドが何であるかはわかりません。

+0

偉大な答えです - ありがとう;) –

+0

'n |'はn番目の文字にジャンプします:) – dNitro

+0

@dNitroええ、ここで必要なのはn番目の '{'にジャンプしません。 – Cubic

1

{または}にカーソルを置き、次にv%dに設定します。

+1

質問者はファイル内のすべての中括弧について質問しました。 –

0

有名なvim dotコマンドの使用はどうですか?

/{ 
d% 

n.は、必要な回数だけ使用してください。 まだ自動化しますか?レコードマクロ:

qqn.q 
[email protected] 

だから、完全なシーケンスは次のようになります。/{<cr>d%[email protected] なぜ、この方法は?それは直観的で、それを行うには完全にヴィムの方法なので、どんな状況にも適応できます。

関連する問題