1. ホーム
  2. editor

[解決済み] vi/vimで括弧の間を掴んだり削除することはできますか?

2022-05-06 11:58:54

質問

C言語で書かれたこのコードの行があるとする。

printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));

最初の太い括弧から、その括弧に一致する括弧まで削除したり、ヤンクしたりする方法はありますか?私が考えたのは df) が、これでは9.0の直後までしかたどり着けません。

改行に関係なく、一致する中括弧の間のすべてを取得するような、vimに似たような方法はありますか?

どのように解決するのですか?

さまざまな動き:%。

その % コマンド は、カーソルの下の項目の一致にジャンプします。カーソルを開き(または閉じ)括弧の上に置き y% をヤンクする場合、または d% は,カーソルから一致する括弧までのすべてを削除する。

これは、以下の理由で機能します。 % は "motion command" なので、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.

デフォルトでは、"item" には、大括弧、中括弧、ペーレン、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 を削除する、など。

外側の括弧を入れたくない場合は、代わりに"inner block"を使用することができます。

v2i)

参照 :help object-select は、関連するコマンドの完全なリストです。