vim-alignta
文字列整列用のplugin
コメントの行末での整列
vimで行末のようなコメントを揃えるときの話。 矩型選択などを利用して揃えるものはあるが、プラグインを使った解説をしているものがなかったのでメモ。
準備
Aligntaを入れる。
Alingtaは、文章整形用のvim plugin。
同様のツールにAlignがあるが、Aligntaの方が高機能?
markdownのテーブルの整形などにも使えるので、入れておいて損はない。
インストール
NeoBundleの場合は下記でOK。
NeoBundle 'h1mesuke/vim-alignta'
やり方
下記のコードを例にする。
int a; // hoge
const int b = 1; // fuga
const double c = 2.0; // hage
揃えたい行を全て選択する。
:を押して、下記コマンドを入力する。
:'<,'>Alignta <- //
下記のように揃う。
int a; // hoge
const int b = 1; // fuga
const double c = 2.0; // hage
コマンドの意味
:'<,'>Alignta <- //
'<,'>は選択範囲を表すvimのコマンド。AligntaはAligntaのコマンド。<-はAligntaの整形用のオプションで、ソースコード部分は変更しないためにつけている- 揃える文字(この場合
//)の最初で揃える
- 揃える文字(この場合
//は揃える文字の先頭。
補足
行末コメントを揃えるのはメンテナンス性が悪いので、googleのcoding guidelineなどでは使用しないように記載されている場合もあるが、Cの場合はマクロを見やすくするために¥を行末にいれることがしばしばある。
Tips
特定の行を除きたい
:'<,'>Alignta v/\/* //
v/patternに無視したい行のパターンを記述する- 上の例だと
/*を含む行は無視
特定の行だけ整列したい
:'<,'>Alignta g/\/\/ //
g/patternに無視したい行のパターンを記述する- 上の例だと
//を含んでいる行はだけ整列
エスケープを省略
基本的にパターンは正規表現で記述する。
正規表現で使う文字はエスケープする必要がある。
-eをつけると文字をそのまま使うことができる。
:'<,'>Alignta -e \d
囲み文字の整列
+---------------------+-------------------------+
| Original | :Alignta = /* */ |
+---------------------+-------------------------+
| a = 1 /* AAAAA */ | a = 1 /* AAAAA */ |
| bbb = 10 /* BBB */ | bbb = 10 /* BBB */ |
| ccccc = 100 /* C */ | ccccc = 100 /* C */ |
+---------------------+-------------------------+