読者です 読者をやめる 読者になる 読者になる

rengbang.vimにフォーマット指定とコマンドライン確認版コマンドを追加しました

Vim

rengbang.vimにフォーマット指定とコマンドライン確認版コマンドを追加したのでご紹介します。

はじめに

rengbang.vimは、Vimで連番を入力するためのVim pluginです。

以下のブログでご紹介しています。

Vimで連番を入力するためのVim pluginを作った

連番入力時のフォーマットを指定可能に

rengbang.vimで連番入力する際、001.,002.のような連番を入力したい時がちょくちょくあって、 Lingrでもthincaさんからご要望いただいたので追加しました。

以下にようにRengBangコマンドの第5引数に%03d.\ と指定することで、 001.のような連番入力が可能です。

" フォーマットに%03d\ と指定することで001., 002. のように連番入力できます。
:RengBang \(\d\+\)  0  1  0  %03d.\ 

RengBang10

なお、内部でprintf関数を使っているので、フォーマットはprintf関数の フォーマットで指定する必要があります。

printf関数のフォーマットが使えるので、例えば16進数で連番入力したい場合は 以下のようにすることも出来ます。

" フォーマットに%04Xと指定することで16進数で連番入力できます。
:RengBang \(\d\+\)  0  1  0  %04X.

RengBang16

コマンドラインでパラメータを指定できるコマンド追加

以前からRengBangコマンドの引数が多く、入力しづらくてどうにかしたいと 思っていました。

上記フォーマット指定追加により、引数が5個になり、フォーマットを指定するためには、 (他の引数の指定が不要でも)第4引数まで指定が必須で入力しづらく、これはもう駄目だと思い、 別インターフェース(RengBangConfirm)を用意することにしました。

RengBangConfirmコマンドは引数を指定せずに実行するコマンドで、 実行するとコマンドラインでパラメータの入力を確認します。 この際、デフォルト値が入力されている状態で確認するため、 変更の必要がなければそのまま<Enter>を押すだけですむため、 RengBangよりも入力が楽です。

以下のgifアニメのように動作します。

RengBangConfirm

フォーマットだけ変更したい場合は、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の動作は以下です。

RengBangConfirmCustom

一応補足しておくと、g:rengbang_default_confirm_sequenceでのカスタマイズ はRengBangConfirmコマンドの確認順番のみ変更します。 RengBangコマンドなどの他のコマンドの引数の順番を変えるわけではありません。 (少なくとも今のところは。要望があれば変更するかも)

終わりに

自分の作業用に作っているVim pluginですが、興味があれば試してみてください。

Happy Vim Life!