vim で X 行をインデントする

vim で X 行をインデントする

最近、仕事で Java でコーディングしているのですが、コードを書いてから、そのコードを try/catch ブロックで囲む必要があることに気付きました。

行の先頭に移動してタブを追加しただけです。

0 i <tab> <esc> k (repeat process until at beginning or end of block)

最初の 3 回か 4 回はインデントする必要があったので、これで問題ありませんでした。しかし、今では面倒になってしまいました。私は怠け者です。

この問題に対処するもっと簡単な方法はありますか?

答え1

Shiftもう 1 つのオプションは、Ignacio が提案しているように+を使用して行を選択しV、次に>(大なり記号) を押すことです。これにより、インデント設定 (shiftwidth、expandtab など) に従ってインデントが行われます。

複数レベルのインデントも可能番号>たとえば、2>2 レベルインデントします。

最後に、Vim がファイル タイプ ( と:set filetype?入力すると と表示されるfiletype=java) を認識した場合は、上記のように任意のコードを選択して を押すと=、そのファイル タイプのルールを使用してインデントが修正されます。

答え2

ビジュアル ( V) またはビジュアル ライン ( ShiftV) モードを使用してインデントする行を選択し、 を押して:Enter キーを押しますs/^/CtrlVTab/

答え3

別の方法:
CTRL+ v(ビジュアルブロックモードを開始します)
xjまたは x k(x は下または上の行数を表します)
>(別名shift+ .)

これは上記の回答とあまり変わりませんが、複数の行を編集するのに非常に便利なブロック モードを導入しています。

答え4

Vimは他の回答で想像するよりもずっと賢いです。コード領域を自動的に再インデントすることができます。通常、試すブロックの場合は、と入力するだけです=i{。実際、これはどの中括弧ブロックでも機能します。インデント オプション ( cindent、、) がニーズと好みに合わせて正しく設定されている限りexpandtab、これですべてです。sw

次のステップは、選択した行のセットを囲む方法を知っているマッピングを使用することです。試すブロック(そしてプロセスの最後に再インデントを忘れない)。私はそのようなものを持っていますC++用、Javaに適応させるのはそれほど複雑ではないでしょう。(ただ他の 2 つのライブラリ プラグインが必要です。lh-vim-libそしてlh-マップツール

関連情報