検索
連載

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

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

Share
Tweet
LINE
Hatena

行から特定の漢字だけを取り出すキーボードマクロ

 次は、常用漢字だけ抜き出す。常用漢字の周辺をよく見ると、「title」の文字列をユニークな目印として利用できそうだと分かる(図8)。この値を使って漢字の周辺にジャンプし、その漢字行の前後を削除すればよい。

図8 抜き出したい漢字のそばにある「title」という文字列を目印にする
図8 抜き出したい漢字のそばにある「title」という文字列を目印にする

 1行目の1カラム目にカーソルを移動させたら、「qa」と入力してキーボードマクロの記録を開始する。記録を開始すると記録していることを知らせる表示が現れる(図9)。「qa」の「a」の部分は任意のアルファベットでよい。「qa」としたなら「a」という領域にユーザーの操作を記録する。この部分は、例えば「qm」や「qx」でも良い。「qm」なら「m」の領域に記録されるし、「qx」なら「x」に記録される。記録を再生するときに「q」の後に指定した文字によって、異なる内容を再生する。

図9 ユーザーの操作を記録している最中であることを知らせるメッセージ
図9 ユーザーの操作を記録している最中であることを知らせるメッセージ
図10 「v」を押してビジュアルモードへ移行
図10 「v」を押してビジュアルモードへ移行
図11 「/title[Enter]」で漢字付近へジャンプ
図11 「/title[Enter]」で漢字付近へジャンプ
図12 カーソルの右キーまたは「l」を数回押して漢字の直前まで選択。方法は別に「/>[Enter]」でも良い。好きな方法で選択範囲を選べば良い
図12 カーソルの右キーまたは「l」を数回押して漢字の直前まで選択。方法は別に「/>[Enter]」でも良い。好きな方法で選択範囲を選べば良い
図13 「x」を押して選択部分を削除
図13 「x」を押して選択部分を削除
図14 「a」で挿入モードへ移行して[Enter]キーを押す。[ESC]でノーマルモードへ移行してから「dd」で残りを削除。「a[Enter][ESC]dd」と入力したことになる
図14 「a」で挿入モードへ移行して[Enter]キーを押す。[ESC]でノーマルモードへ移行してから「dd」で残りを削除。「a[Enter][ESC]dd」と入力したことになる
図15 「a」で挿入モードへ移行して[Enter]キーを押す。[ESC]でノーマルモードへ移行してから「dd」で残りを削除。「a[Enter][ESC]dd」と入力したことになる
図15 「a」で挿入モードへ移行して[Enter]キーを押す。[ESC]でノーマルモードへ移行してから「dd」で残りを削除。「a[Enter][ESC]dd」と入力したことになる

 ここまで操作したら「q」を押してキーボードマクロの記録を終了する。記録開始を「qa」ではじめたのであれば、「a」というキーボードマクロとして操作が記録されている。この操作は「@a」のように「@」で呼び出すことができる。「数字@a」とすればその数字の分だけマクロを実施することになる。

 処理対象の行は2500行くらいあるので、「2500@a」とすればこれまでの操作が自動的にすべての行に適用されるようになる。処理は逐次実施されるので、まるで透明人間が代わりに高速タイプで同じ処理をしてくれているかのように見える(図16)。

図16 自動的に処理が進むところ
図16 自動的に処理が進むところ
図17 自動処理が済んだところ
図17 自動処理が済んだところ

 これまでの作業をまとめると、ノーマルモードで「qav/title[Enter]/>[Enter]xa[Enter][ESC]ddq2500@a」と入力したことになる。入力した内容だけ見ると意味不明なテキストに見えるが、実際に作業してみると、いつもの操作を記録して繰り返し実行させただけだ。どういった動作をするか確認しながら作業できるところも扱いやすい。入力するコマンドに正解というものはなく、自分が扱いやすい方法で入力すればよい。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る