rengbang.vimにフォーマット指定とコマンドライン確認版コマンドを追加しました
rengbang.vimにフォーマット指定とコマンドライン確認版コマンドを追加したのでご紹介します。
はじめに
rengbang.vimは、Vimで連番を入力するためのVim pluginです。
以下のブログでご紹介しています。
連番入力時のフォーマットを指定可能に
rengbang.vimで連番入力する際、001.
,002.
のような連番を入力したい時がちょくちょくあって、
Lingrでもthincaさんからご要望いただいたので追加しました。
以下にようにRengBang
コマンドの第5引数に%03d.\
と指定することで、
001.
のような連番入力が可能です。
" フォーマットに%03d\ と指定することで001., 002. のように連番入力できます。 :RengBang \(\d\+\) 0 1 0 %03d.\
なお、内部でprintf
関数を使っているので、フォーマットはprintf
関数の
フォーマットで指定する必要があります。
printf
関数のフォーマットが使えるので、例えば16進数で連番入力したい場合は
以下のようにすることも出来ます。
" フォーマットに%04Xと指定することで16進数で連番入力できます。 :RengBang \(\d\+\) 0 1 0 %04X.
コマンドラインでパラメータを指定できるコマンド追加
以前からRengBang
コマンドの引数が多く、入力しづらくてどうにかしたいと
思っていました。
上記フォーマット指定追加により、引数が5個になり、フォーマットを指定するためには、
(他の引数の指定が不要でも)第4引数まで指定が必須で入力しづらく、これはもう駄目だと思い、
別インターフェース(RengBangConfirm
)を用意することにしました。
RengBangConfirm
コマンドは引数を指定せずに実行するコマンドで、
実行するとコマンドラインでパラメータの入力を確認します。
この際、デフォルト値が入力されている状態で確認するため、
変更の必要がなければそのまま<Enter>
を押すだけですむため、
RengBang
よりも入力が楽です。
以下のgifアニメのように動作します。
フォーマットだけ変更したい場合は、4回<Enter>
をタイプ
してフォーマットだけ変更して実行できます。
また、パターンだけ入力したい場合は、1つ目の確認でパターンを入力した後、
<Esc>
をタイプすることで、その後のパラメータの確認をスキップ(デフォルト値使用)
することもできます。
パラメータ確認の順番のカスタマイズ
RengBangConfirm
の追加でパラメータの入力は大分楽になったのですが、
5番目に確認するフォーマットは、他のパラメータよりも使用頻度が高そうなので
確認順番をカスタマイズできるようにしました。
以下の様に変数に確認したい順番を指定することでカスタマイズ可能です。
" デフォルトのRengBangConfirmでの確認の順番の設定 let g:rengbang_default_confirm_sequence = [ \ 'pattern', \ 'start', \ 'step', \ 'usefirst', \ 'format', \ ] " 以下の様にRengBangConfirmでの確認の順番を配列で指定できます。(formatを3番目に変更) let g:rengbang_default_confirm_sequence = [ \ 'pattern', \ 'start', \ 'format', \ 'step', \ 'usefirst', \ ] " デフォルト値から変更しないパラメータは省略することもできます。 let g:rengbang_default_confirm_sequence = [ \ 'pattern', \ 'start', \ 'format', \ ]
.vimrc
に書いておくことで常に指定した順番で確認するようになります。
上記2番目の設定をした上でのRengBangConfirm
の動作は以下です。
一応補足しておくと、g:rengbang_default_confirm_sequence
でのカスタマイズ
はRengBangConfirm
コマンドの確認順番のみ変更します。
RengBang
コマンドなどの他のコマンドの引数の順番を変えるわけではありません。
(少なくとも今のところは。要望があれば変更するかも)
終わりに
自分の作業用に作っているVim pluginですが、興味があれば試してみてください。
Happy Vim Life!