Cの次のコード行を考えます:
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
最初の太字の括弧から対応する括弧に削除またはヤンクする方法はありますか? df)について考えましたが、それは9.0の直後に到達するだけです。
改行に関係なく、一致するブレース間ですべてを取得するためのvimを取得する同様の方法はありますか?
%
コマンド は、カーソルの下のアイテムの一致にジャンプします。開始(または終了)括弧にカーソルを置き、y%
を使用してヤンクするか、d%
を使用して、カーソルから一致する括弧に至るすべてを削除します。
これは%
が「モーションコマンド」であるため機能します。そのため、vimがそのようなコマンドを期待する場所であればどこでも使用できます。 :help y
から:
["x]y{motion} Yank {motion} text [into register x]. When no
characters are to be yanked (e.g., "y0" in column 1),
this is an error when 'cpoptions' includes the 'E'
flag.
デフォルトでは、「アイテム」には角括弧、中括弧、括弧、Cスタイルのコメント、およびさまざまなプリコンパイラステートメント(#ifdef
など)が含まれます。
Vimホームページ にある「拡張%マッチング」用のプラグインがあります。
コマンドモードで %
と入力すると、:help various-motions
および関連するモーションコマンドのドキュメントを読むことができます。
ビジュアルモードでさまざまなテキストオブジェクトを選択するために使用できるモーションコマンドの別のセットがあります。
特定の問題を解決するには、次を実行します。
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
^
カーソルが^
にあるとしましょう。次のシーケンスを入力して、探しているパーツを選択します。
v2a)
最初にv
がビジュアルモードに入り、次に2
レベルの括弧に移動することを指定します。最後に、a)
は「ブロック」を選択します。その後、d
またはx
を使用して削除することができます。
外部括弧を含めたくない場合は、代わりに「内部ブロック」を使用できます。
v2i)
関連コマンドの完全なリストについては、 :help object-select
を参照してください。
括弧内のすべてを削除するには、di(
とその派生物を常に発行できます。
注:
@porglezombがコメントで示唆したように、a
( "inside")の代わりにi
( "with with")を使用して括弧を含めることができます。したがって、da(
を使用すると、(
および)
を含む(
および)
内のすべてが削除されます。
括弧のすぐ外側のペア内のテキストの削除:
したがって、このコード行について
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
^ ^
| |
\_______\___---> Cursor range
カーソルが上記のカーソル範囲内にあると仮定すると、次のコマンドを発行できます。
di( --> Deletes '5.0/9.0'
ci( --> Substitutes '5.0/9.0'
yi( --> Yanks '5.0/9.0'
括弧の外側のn番目のペア内のテキストの削除:
N番目の外側の括弧のペア内のすべてを取得するには、上記のコマンドの前にn
を追加します。したがって、上記と同じカーソル位置で、
2di( --> Deletes '(5.0/9.0) * (fahr-32)'
2ci( --> Substitutes '(5.0/9.0) * (fahr-32)'
2yi( --> Yanks '(5.0/9.0) * (fahr-32)'
3di( --> Deletes '"%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32))'
3ci( --> Substitutes '"%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32))'
3yi( --> Yanks '"%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32))'
削除にはd%を、ヤンクにはy%を使用できます。
最初の括弧にカーソルを置き、v%y
またはv%d
を押します。
Ci [block-surrounder]を試してください
あなたの場合、ハイライトした2つの括弧の間のどこかにカーソルを置き、キーを試してください:ci(
answer David Normanのように、
v%y
またはv%d
を押します。http://vimdoc.sourceforge.net/htmldoc/vimindex.html からの説明:
通常モードでのchar charアクションのタグ付け --------------------------------- --------------------------------------------- | v | v文字単位の視覚モードを開始します |%| %1 この行で次の(中/角)ブラケットを見つけて一致するか、 一致するコメントブラケットに移動するか、一致する | d |に移動します["x] d {motion} 2 Nmoveテキストを削除する[バッファxへ]
つまり、2つの角かっこ(%
)を含むすべてを選択しながら、選択範囲を視覚的に表示し(v
)、次にyank/copy y
またはdelete/cut d
それ。 (デフォルトのバッファーへ。)
p
で貼り付け/貼り付けができます。
「魚に自分を教える」 に対してこの回答をしました。