コマンドラインからコードをhtmlに一括変換(TOhtml,2html.vim)
vimにはソースコードをvimでの見た目のまま
htmlに出力する:TOhtmlというコマンドがあります.
HPに公開する時や,印刷する時に便利なコマンドです.
ただ,変換に時間がかかる上に文字サイズが割と大きく気に入らなかったので
perlで一括処理&文字サイズを指定できるスクリプトを書いてみました.
perl,vim共に初心者レベルなのでミスしてたらすみません^^;
前置きとしてコードが折り畳まれた状態で出力されないように.vimrcに
:let html_ignore_folding = 1
と書いておきます(perlの方に書いてもいいかも).
後は下記のスクリプトに変換したいファイル郡を引数として与えてあげれば,
.html4printというフォルダに
変換されたhtmlファイルが生成されるはずです.
(フォントサイズは1にしてあります.好みで変えてください.)
#! /usr/bin/perl # 保存ディレクトリ作成 my $dir = ".html4print"; unless(-e $dir) { mkdir($dir) or die "Can't make $ :$!"; print "mkdir $dir"; } LABEL: foreach my $fileName (@ARGV) { # ファイルの存在を確認 unless(-e $fileName) { print "$fileName does not exist.\n"; next LABEL; } # htmlファイル名($dir/$htmlName) my $htmlName = $dir."/".$fileName.".html"; # TOhtml system "vim -n" . " -c ':colorscheme zellner'" . " -c ':TOhtml'" . " -c ':sav! $htmlName'" . " -c ':qa' $fileName > /dev/null 2> /dev/null" ; # 置換処理 htmlのフォントサイズを1にする open(IN, $htmlName) or die "Can't open $htmlName: $!\n"; $file = ""; while ( <IN> ) { $file .= $_; } close(IN); $file =~ s/<body>\n/<body>\n<font size="1">\n/gs; $file =~ s/<\/body>\n/<\/font>\n<\/body>\n/gs; # 書き込み open(OUT, '>', $htmlName); print OUT $file; print $htmlName."\n"; }
全然関係ないけどOSによって読み込むpluginを切り替えたい.$VIMRUNTIMEとかで読み込むフォルダを切り替えればいいのかな?要調査〜.
追記
Vimの流儀眺めてたら答えが書いてありました(ぇ
pluginごとに読み込みのON/OFF切り替えられるんですね.
こんな感じに書いたら解決しました.
if has('win32') let loaded_taglist=!0 elseif has('unix') let loaded_{plugin}=!0 "{plugin}にpluginの名前をいれる. endif