ええ、私のことです。結論から言うとg:easy_align_ignore_groups
が影響してコメントが無視されてました。以上、終わり。
以下、アホが己の過ちに気付くまで。
初めは vim-scripts/Alignを使おうとした。しかし、以下のエラーメッセージが出るので止めた。
C:/Users/ユーザー名/.vim/plugged/Align/plugin/AlignMapsPlugin.vim の処理中にエラーが検出されました:
行 170:
E227: \tt というマッピングは既に存在します
なので、
junegunn/vim-easy-alignを使うことにした。皆が設定するようにvmap <Enter> <Plug>(EasyAlign)
とする。
当時、sql
を書いていた。
select
COLUMN_ABC -- カラムABC
, COLUMN_aiueo-- カラムaiueo
, COLUMN_1234 -- カラム1234
, COLUMN_alias -- カラムalias
上記のようにSQLがあった場合、ビジュアルモードにして選択してEnter
、そして,
を押せばカンマでの整列はできた。しかし、-
を入力しても、コメントが整列出来ない。
(Unknown delimiter key: -)
と出るので、ははぁーんとCtrl+x
を入力して正規表現[-]\{2,\}
を入力、これでどうだ!何も変化しない…'<,'>EasyAlign * /[-]\{2,\}/
としても同じ。バカなぁと思い、何か制約があって出来ないのと早合点。
そして、似たような整列プラグインないかと、 godlygeek/tabularを使う。
これなら'<,'>Tabularize /--
で整列できる。しかも'<,'>Tableize /--
で以下のようにテーブルまで出来る!
| COLUMN_ABC | カラムABC |
| , COLUMN_aiueo | カラムaiueo |
| , COLUMN_1234 | カラム1234 |
| , COLUMN_alias | カラムalias |
それで、めでたしめでたしなんだけど、ふと vim-easy-align の ドキュメントを見ると、「ハイライトでコメント、文字列扱いしてるものは区切り文字を無視しますよー」と書いてあるではないか!?しかもデフォルト設定。
つまり、let g:easy_align_ignore_groups = ['String']
とすることで、文字列のみ除いてコメントを整列対象に含められる。
全体の設定を変えたくないというのであれば、<Ctrl+g>
を押すごとに、{'ig': [])
→{'ig': ['String'])
→{'ig': ['Commet'])
→{'ig': ['String', 'Commet'])
と無視するグルーブを変えられるので、適宜変えて実行する。
もしくは、 vim-easy-align の設定、忘れて怖くなったので - ばかもりだしや、 extending-alignment-rulesなどを参考に、区切りルールを設定しておけば快適に整列出来る。
let g:easy_align_delimiters = {
\ "-": { 'filter': 'v/^\s*--/', 'pattern': '[-]\{2,\}', 'stick_to_left': 0, 'left_margin': 1, 'right_margin': 1, 'ignore_groups': ['String']},
\ '\': { 'pattern': '\s\{2,\}' },
\ }
オプション | 意味 |
---|---|
filter | 整列対象とする行 この場合、v/^\s*--/ としているので、空白文字で始まって-- が続く行を除いた行を対象とする |
pattern | 整列基準となる文字列のパターン この場合、ハイフンが2つ以上続く文字列 |
left_margin | 整列基準となる文字列の左側の余白スペース |
left_margin | 整列基準となる文字列の右側の余白スペース |
stick_to_left | 整列基準となる文字列を前列の左隣に寄せるかどうか boolean型で1(true)か0(false) |
stick_to_left
の意味がイマイチ良く分かりにくいというか。
{'stick_to_left': 1, 'left_margin': 0}
整列基準となる文字列を、それぞれ前列の左隣に余白0で寄せる
select
COLUMN_ABC-- カラムABC
, COLUMN_aiueo-- カラムaiueo
, COLUMN_1234-- カラム1234
, COLUMN_alias-- カラムalias
{'stick_to_left': 0, 'left_margin': 1}
整列基準となる文字列を、前列の中央に左隣に余白1で寄せる
select
COLUMN_ABC --カラムABC
, COLUMN_aiueo --カラムaiueo
, COLUMN_1234 --カラム1234
, COLUMN_alias --カラムalias
ちゃんとドキュメントは読もうということですね…