原稿に連番を振るVimスクリプトを作った。
原稿に手順を指定する番号を振っていくのが面倒なので、「%a」「%A」の形式で指定した文字列に連番を振るVimスクリプトを作った。
「%」のあとに異なるアルファベットを指定することで、アルファベットごとに連番を振ることができます。
「%数字」に変換するのは、このあとさらに丸数字に変換する必要があるためです。丸数字変換する必要があるものは「%」のあとに小文字のアルファベット、必要がないものは大文字のアルファベットを指定します。
自分で使う以外まったく需要はなさそうですが……。
仕組みは至って単純で、Perlで総当たりの置換を行っています。もう少しましなやり方ありそうですが、面倒だったのでこれでいいやとやっちゃいました。
function! Renban_parcent_format() range let str = getline(a:firstline, a:lastline) let firstline = a:firstline perl << EOF use utf8; use Encode; # 原稿を取得 my $str = decode_utf8(VIM::Eval('str')); for my $char ('a' .. 'z') { my $num = 1; $num++ while $str =~ s|\%$char|\%$num|; } for my $char ('A' .. 'Z') { my $ph = 1; $ph++ while $str =~ s|\%$char|sprintf '%02d', $ph|e; } my $firstline = VIM::Eval('firstline'); $main::curbuf->Set($firstline, split(/\n/, $str)); EOF execute "normal " . a:lastline . "gg" endfunction vnoremap <leader>fo :call Renban_parcent_format()<cr>
こんな感じで原稿を書くと、
###%Zpage 手順見出し> %z 手順> %a 画像> 162-%A キャプション> □□□□◆□□□□■%b□□□□◆□□□□■ 手順> %a 画像> 162-%A キャプション> □□□□◆□□□□■%b□□□□◆□□□□■ ###%Zpage 手順見出し> %z 手順> %c 画像> 163-%B キャプション> □□□□◆□□□□■%d□□□□◆□□□□■ 手順> %c 画像> 163-%B キャプション> □□□□◆□□□□■%d□□□□◆□□□□■ 手順見出し> %z 手順> %e 画像> 163-%B キャプション> □□□□◆□□□□■%f□□□□◆□□□□■ 手順> %e 画像> 163-%B キャプション> □□□□◆□□□□■%f□□□□◆□□□□■
こんな感じに変換されます。
###01page 手順見出し> %1 手順> %1 画像> 162-01 キャプション> □□□□◆□□□□■%1□□□□◆□□□□■ 手順> %2 画像> 162-02 キャプション> □□□□◆□□□□■%2□□□□◆□□□□■ ###02page 手順見出し> %2 手順> %1 画像> 163-01 キャプション> □□□□◆□□□□■%1□□□□◆□□□□■ 手順> %2 画像> 163-02 キャプション> □□□□◆□□□□■%2□□□□◆□□□□■ 手順見出し> %3 手順> %1 画像> 163-03 キャプション> □□□□◆□□□□■%1□□□□◆□□□□■ 手順> %2 画像> 163-04 キャプション> □□□□◆□□□□■%2□□□□◆□□□□■