キーボードマクロで繰り返し作業を楽にいまさら聞けないVim(7)(1/3 ページ)

定型のデータを加工するときなど、同じような作業を延々繰り返さなければならない時があります。今回は、そういうときに便利なキーボードマクロの使い方を解説します。操作のイメージが湧きやすいように、スクリーンショットを多く使って説明しています(編集部)

» 2011年09月27日 00時00分 公開
[後藤大地@IT]

ユーザーの操作を記録して再生

 Vimは、ユーザーの一連の操作を記録する「キーボードマクロ」という機能を備えている。この機能を利用すると、記録開始から記録終了までの間にユーザーが操作した内容をそのまま再利用できる。データの整形など、同じ作業を何回も繰り返すようなときに活用できる機能だ。

 Vimを使うときは、基本的に繰り返し作業はすべてVimにやらせ、人間は考えなければできない作業に集中して編集作業の効率を引き上げることを考えた方がよい。数回でも繰り返すような処理をするときは、キーボードマクロ機能を使って作業効率を引き上げよう。

 前回紹介した設定ファイルの1つに、日本語入力があったときはすべて挿入モードへ移行し自動的に入力を始めさせるようにするファイルがあった。この設定はWikipediaにある「常用漢字一覧」の項目のHTMLから加工したものだ。加工にはキーボードマクロを利用している。ここではこのデータの加工処理を通じて、Vimのキーボードマクロ機能を紹介しよう。

加工しやすいように余分な部分をカット

 まず、Wikipediaにある常用漢字一覧の項目のHTMLをテキストファイルとして保存する。元のテキストがUTF-8になっている点に注意しよう。WindowsのVimではうまく扱えないので、ブラウザでページのHTMLを表示させた状態で、全テキストをコピーし、gVimに貼り付けてファイルに保存するといった手順で保存するとよい。ほかのエディタや変換ツールを使ってWindowsのVimが利用できる形式に変換してもよいだろう。Mac OS XやLinux/FreeBSDでは特に問題なく編集できる。

 保存したファイルは、UTF-8なら2.4Mbytesほど、Windowsのコピー&ペーストで作ると1.7Mbytesほどになる。行数は2万行を超えている。すべて手動で作業するのは絶対に嫌だ。利用したいのは、常用漢字一覧表の特定のカラムの値だけだ。まず不要なデータを削除しよう。

 常用漢字一覧を見てみると、最初に掲載されている漢字は「亜」で、最後は「腕」だ。検索でこの文字のある場所までジャンプして、後はビジュアル選択で余計なテキストを選択して削除する。まずは先頭から「亜」の1つ前の行までを図1のように削除。

以降は、図の番号に従って操作してみよう。

図1 「/亜[Enter]」で表の最初に掲載されている漢字の行へジャンプ 図1 「/亜[Enter]」で表の最初に掲載されている漢字の行へジャンプ
図2 1つ上の行へカーソルを移動させたら、「V」で行単位のビジュアルモードへ移行 図2 1つ上の行へカーソルを移動させたら、「V」で行単位のビジュアルモードへ移行
図3 「gg」などで1行目までジャンプ。「d」や「x」で選択した行を削除 図3 「gg」などで1行目までジャンプ。「d」や「x」で選択した行を削除
図4 1行目が「亜」のデータが掲載された行になった 図4 1行目が「亜」のデータが掲載された行になった

 テキスト冒頭の余計な文字列をまとめて削除できた。今度は、同様の手順で「腕」以降の行を削除する。次のように作業すれば良い。

図5 「/腕[Enter]」で「腕」という文字がある行へ移動 図5 「/腕[Enter]」で「腕」という文字がある行へ移動
図6 次の行に移動し「V」でビジュアルモードへ移行 図6 次の行に移動し「V」でビジュアルモードへ移行
図7 「G」で最後の行まで移動し、「d」を押すなどして選択した行を削除 図7 「G」で最後の行まで移動し、「d」を押すなどして選択した行を削除

 ここまでの作業は、前回までに紹介してきたVimの機能を利用すればできる。「/キーワード[Enter]」「?キーワード[Enter]」で対象とする行まで移動し、「V」でビジュアルモードに入って、「gg」や「G」でファイルの先頭や末尾まで一気に選択し「d」で削除という作業は良く使うテクニックなので、覚えておくとよいだろう。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。