read旧ブログから全記事移行完了しました。はてなブログで記事を書いてたわけですが、こちらは記事のエクスポート形式がMovableType形式にしか対応してないので、そこからMarkdownに変換し直したりだとか、はてなキーワードリンクを削除したりとか、地道にいろいろやらねばならず。スクリプトでガチャーンと一発でやれるんでしょうけど、力が足りないのでvimでファイル開いて変換ポイント確認してはポチポチコマンドで置換してやりました。エクスポートファイルの分割はてなブログからエクスポートすると、最初は全記事が1ファイルに連なった状態で吐かれます。自分はMT使った経験ないんでわかりませんが、これは「そういうもの」と考えていいんですかね。一方のoctopressはエントリーごとに分割されているので、まずはこのエクスポートファイルを1記事ずつ分割してやらなくてはならない。あとヘッダの形式も微妙に両者で異なるので、ここの変換も必要。なんか変換ツール落ちてないかなと堕落した感じで探しまわってたら、一応ありました。Markdownなので完全にMarkdownへ変換してくれるものかと期待したのだけど、実際やってくれるのは先ほど挙げた「分割」と「ヘッダの書き換え」程度です。中身はHTMLタグのまま。一方で自分の環境だと<が&lt;に変わってしまうといった副作用もあり。BREAKSといった文字列がそのまま本文内に残ってたり。変換が楽になるのは確か。vimによる置換スクリプト力弱いので、あとはvimによる力技です。今回初めて複数ファイルを一挙にvimで扱うってやったけど、便利ですね。fuga.txtとかでファイルリストを作れます。元々は名前の通り、vimを起動するときに与えた引数が入ってるリストらしいのだけど、任意に書き換えができるのであまり「引数」リストという感じはしない。バッファ内の全ファイルへのコマンド実行は:bufdoで出来るし、引数リストについても似た感じで:argdoが使える。このあたりを上手く活用すれば、今回のような複数ファイルを一挙に処理するのはたやすい。先の&lt;を<に全置換したり。他にも置換コマンドはh1タグを#に変換するだとか、いろいろな形で使いました。BREAKSと書かれた行を全部消したり。BREAKS/d自分が今回初めて身に付けた知識でもっとも有効だったのは、検索でマッチした文字列を置換後の文字列内で指定する方法ですかね。検索パターンの括弧でくくった部分(vimなのでエスケープして\(と\)で囲った部分、ということになりますが)を、置換パターンから\1で指定できる。これははてなキーワードのリンクを一掃するのに役立ちました。class="keyword"\(.\{-}\)<\/a>/\1/gあー、あとこのコマンドで重要なのは{-}の部分ですかね。これで最短マッチになるらしい。他、細かなとこだと改行コードを入力するには<C-v><C-m>と打つとか、<C-r>/で直前の検索パターンをコマンドラインに入力できるとか、いろいろこの機会に調べられてタメになりました。-eightsee.netファイルのリネームまた先のコードで分割したMarkdownファイルは自動的にファイル名も振ってくれるんですけど、日本語の場合は漢字をなんとなく頑張って読んでローマ字に変換してくれた、気持ちはありがたいけど残念な感じのものになっちゃいます。ファイル名一括変換だとrenameコマンドってのがあるのですね。Linuxだと標準で入ってるけどUNIX系にはないだとか。Macにも入ってなかったので、Homebrewでインストール。*.markdown形式が使える、要はvimの置換コマンドっぽく書けるので、vimmerならこれが便利ではないかと。正規表現も当然使えます。vimで必要なあの面倒くさいエスケープの数々が要らなくなっていたり、先ほど書いた\1によるマッチ文字列の流用が$1に変わっていたり、若干の使用感の違いはあります。generateかければ生成されます。最初はちょっと戸惑いもありましたが、やれてしまうと案外簡単に移行できるなという感じです。