Vimでテキストファイルを一括編集 導入編

(※Vimの操作はわかるから早く知りたい方は次の記事をどうぞ。今回は導入です。)

わたしは普段テキストエディターとしてVimを使いません。日本語入力を切り替えながら使用するのが煩雑だからです。それでもVimは好きで使います。どんなときにVimを使うかというとすでにあるリストを自分が使いやすいように整形するときです。

きれいに区切られたCSVファイルの場合はUnixコマンドのcutとかsedを組み合わせるとうまくいくでしょう。しかし、人からもらった、あるいはネットで拾ってきたテキストにはそれほどきれいではないものもあると思います。

今回はそういったファイルをVimを使って自分好みに整形するというネタです。
目標としては特定のディレクトリにあるファイルに対して一括で処理するところまでやります。

いきなり複数のファイルに対して処理をするのはこんがらがるのでいくつかのステップに分けます。

1.一行に対して処理をするマクロをつくる

2.ファイル内の各行に1.の処理を適用するマクロをつくる

3.複数のファイルに対して2.の処理を連続して実行する。

マクロというのは簡単に言えば自分の行った操作をVimに覚えてもらうことです。エクセルのマクロの記録とおなじです。マクロはVimScript と言われるものとは違いVimの基本的なコマンドを積み重ねる感じです。条件分岐をするとか複雑な処理はできませんが自分に必要な処理をパズル的に組み合 わせるだけですのでプログラミングの知識がなくてもできると思います。(予め処理を決めておくという広い意味ではプログラミングかも?)

ただ最低限自分のやりたいことが実現できる程度にVimのノーマルモードでの操作は慣れておいて欲しいです。ノーマルモードの操作は難しく言えばオペレータとモーションとその組み合わせです。

・オペレータ
aやiで挿入モードに移る
dで文字列を切り取る、pで貼り付けるなど

・モーション
bで1つ前の単語にもどる、wで次の単語に進む
0,$で行頭、行末に移る
/で検索して移動など

あとは簡単なコマンドとして:sで置換あたりを知っていれば十分だと思います。

たぶんVimを使う方ならこのくらいはできるはずですし、知らなければ覚えればいいし、忘れたり探したりするときは「Vim 置換」とかでググればいいですよね。一覧が欲しければVimを起動して:help operatorと打てばよいです。(英語ですが)

以下のページも参考になります。
よく使う Vim のコマンドまとめ
Vimコマンド : 便利一覧
こういう機能があると知っておくだけで十分でしょう。使いたくなったら調べればいいし、繰り返し使えばそのうち覚えます。

次は実践編ー1です。