複製:
Vim で C コードのブロックをインデントしたい場合があります。私は通常、行ごとにタブで移動しました。
より良い/より速い方法は何ですか?
Vim で C コードのブロックをインデントしたい場合があります。私は通常、行ごとにタブで移動しました。
より良い/より速い方法は何ですか?
まだ誰も思いつかなかったことに驚いて=%
います。
を持っていることを確認し、自分のブロック
の 1 つに身を置いて:set cindent
、次のように叩きます。{}
=%
このブロック内のすべてのコードは正しくインデントされます。
ブロックにタブを付けるには「>」を使用します
ビジュアルモードに入り、次の一致するブラケットまで選択し、インデントします:
V
%
>
挿入中: Cd、Ct
ビジュアル中: >、<
通常中: >>、<<
このモードのいずれかで「.」を使用します。さらにインデントします。
試す
:セット シンデント
これにより、vim で C インデント マジックがオンになります。したがって、ブレースを開くとすぐに、ブレースを閉じるまで自動的にタブになります。
スキンプが言ったことに加えて、あなたが持っているなら:
int foo()
{
/* line 1 */
/* line 2 */
/* line 3 */
/* line 4 */
}
そして、何らかの理由で、このように表示したい(つまり、シンデントルールに従って「正しく」インデントするのではなく、すべてを以前の場所から4スペース*インデントしたい):
int foo()
{
/* line 1 */
/* line 2 */
/* line 3 */
/* line 4 */
}
ブロック内の任意の場所で、viB>(visualselection innerBlockインデント)**を実行します
*
またはシフト幅が設定されているものは何でも
**
vi}はviBと同じであり、vi}は{}内で選択し、vi)は()内で選択し、vi]は[]内で選択し、vi>は<>内で選択するため、覚えやすい場合があります。
また、va}、va)などは、ブロック内に含まれているものに加えて、{}、()などを選択します。
次のようなインデントされていないコードがある場合...
if (foo)
{
/* line 1 */
/* line 2 */
/* line 3 */
}
...コマンド モードでカーソルを「1 行目」に置き、 と入力します3==
。ここで、3 はインデントする行数です。