wz形式のアウトラインをrubyでvimのotl形式に変換した。

windows専用のテキストエディターとアウトラインプロセッサーからvimにのせかえた。以下はまとめ。

1)香り屋版のvimをダウンロード


2)以下のプラグインを ~/.vim配下にインストール。

  • 他OSのエディターからののりかえに基本のプラグイン
    • yanktmp.vim <-----vimクリップボードは同一vimプロセス内でしかコピペできないが、アプリ間でコピペできるようにする。これがないとマウスで範囲指定してshift+ctrl+c--->shift+ctrl+vでコピペすることになる。
    • yankring.vim <-----クリップボード履歴でペーストできるようにする。
    • MRU.vim <----素vimでは最近使ったファイル、がメニューに無いのでリスト表示してくれるやつ。
    • tabpage.vim <----画面のはしっこにCUIでタブを表示してくれる。これがあるとターミナル画面を余計に開かずにすむ。
    • eregex_j.vim <---素vimで検索につかえる正規表現はくせがあるのでperl互換の正規表現をつかえるようにする
  • UNIXの不便さを緩和するプラグイン
    • vimExplorer.vim <----CUIでもWindowsExplorerみたいに2~3ペインの階層表示をするファイラー。viのキーマッピングが大体sのままつかえて、新たに覚えることになる独自コマンドがすくなくてすむ。英語圏では類似の別のファイラーが拡張性の点で人気がある様子だが、独自コマンドが多そう。"つかいかたを忘れやすい言語やツールは汎用性にかける" と考える私はこれで十分。
  • 編集省力化。タイプレス化のプラグイン
    • EnhancedCommentify.vim <----ファイル拡張子に応じてコメント記号をつけてコメントアウトしてくれる。
    • surround.vim <-----指定範囲や現在行やカーソルのある文字列の両端を任意の文字やHTMLタグで囲ったり外したり。カーソル移動がへる。
    • Align.vim <------選択した行を左揃えにしたり、等間隔にしたり、ある文字を軸に揃えたりする奴。へたなコードも美しく見える。
    • snipMate.vim <----Macのsnipなんとかという機能を真似したもの。定形コードを自動で入力してくれる。
    • HTML.vim <----;のあとにアルファベット1~2個打鍵してLキーをおすと、HTMLタグを自動入力。
    • keisen_j.vim <----罫線描画マクロ
  • いれたけど、ぬいたプラグイン
    • vimbrowser <----vim+perlでうごくテキストベースのwebブラウザー。別のlinuxに設定ファイルごとうごかして再インストールできなかった。動かすためにハックする気もおきず、ポータビリティーがない感じがして、つかわなくなった。w3mの方がまし。


3)アウトラインプロセッサのデータ変換

  • 3-1)まず以下のvimプラグインをいれる。
    • otl.vim <-----vimでアウトラインエディターを実現するvimプラグインwindowsの用に複数ペインで表示したりできない。単に拡張子otlをつけたテキストファイルの折りたたみと展開、階層移動や階層コピペを便利にするだけだが、そもそもアウトラインプロセッサ自体の使用頻度がへったので、これで十分。
    • viki.vim <----上のotl.vimでタグ間ジャンプやwebページへのジャンプをできるようにするやつ。
  • 3-3)データ変換用にrubyスクリプトを書いて一気に変換。つかいかたは ruby regextool.rb input-file-name.wz idtwz > output-file-name.otl みたいに単に標準入出力のリダイレクトで。
#ファイルを標準入力からよみこむ
filebuf=File.open(ARGV[0]){ |file| file.binmode;file.read }
#下の行は予備:引数xがsift-jisファイルをUTF-8に変換。
#if ARGV[2] =="sjis" then require'nkf';filebuf = NKF.nkf("-S -x -w -m0", filebuf) end
fileary=filebuf.split(/\n/)
fileary.each{|line|
  #^\.+の下から次の^\.+までを.出現回数分、\t挿入インデント
  if line =~/^\./
    #.始まりの行は.をタブに変換し、変数@indentsに.の個数を記憶
    line.gsub!(".","\t" ); @indents= line.scan(".").size
  else
    #.始まりでない行は . を先に記憶した変数@indentsの個数+1個分、タブを行頭挿入
    line.gsub!(/^(.*)/,"\t" * (@indents.to_i+1) + "\\1")
  end
}
puts fileary

4)おしまい。windows専用のテキストエディターやアウトラインプロセッサと、これで多分永久におさらば。