ビジュアルモードでテキストを選択し加工する:いまさら聞けないVim(5)(2/3 ページ)
前回はタブやタイルウィンドウといったユーザーインターフェイスを有効に活用する方法を紹介しました。今回は、目視しながらテキストの選択ができる「ビジュアルモード」の基本と、その活用例を紹介します。(編集部)
矩形選択機能の活用
通常のテキストエディタを使っているときは、矩形選択ということをあまりしないので、ビジュアルブロックモードの活用シーンが浮かんでこないかもしれない。矩形選択はシーンによってはとても便利な機能で、あるとないとでは作業効率に雲泥の差が現れることがある。次に矩形選択の利用例を示す。
例えば図10のようにコメントのマークだけを矩形選択してコピーするということもできる。[Ctrl-v]でビジュアルブロックモードに入り、[y]でコピーだ。
コメントのマークをコピーしたら、それをペーストしてみよう。まずは、ペーストしたい部分にカーソルを移動させる。このとき、ペーストを開始地点としたい場所の1文字左にカーソルを移動させる(図11)。
ここで[p]を押すと、先にコピーした矩形を、カーソルの右側にペーストできる(図12)。選択した矩形がそのままそこに割り込むような形になる。カーソルの左側へペーストしたいなら[P]を押せばよい。
削除も同様の手順だ。矩形に選択して[x]や[d]を押せばよい。
縦方向に揃っているデータを編集するときも、この矩形選択は便利に活用できる。例えば列を移動したい場合など、矩形選択を利用すれば簡単に処理できる。矩形選択が使えないと、いったんスクリプトやプログラムを組むなどしてデータを加工しなければならないが、Vimのビジュアルブロックモードを使えばそうした処理を簡単に実現できる。
コメントマークの付け外し
プログラミングでVimを使うと、ビジュアルモードで選択して対象をコメントに置き換えたり、または追加したコメントマークを削除する、といったことができる。1行1行手動で入力していっては切りがない。こういうケースでブロックモードを活用するのだ。
複数行にコメントマークを付ける方法を解説しよう。ブロックモードでコメントマークを付けたい部分を選択し、「:」を押す。
するとビジュアルモードからコマンドラインモードに移行する。入力欄には最初から「:'」と入っている。これは「ビジュアルモードで選択したテキストを処理の対象とする」という意味だ。
行頭に「//」といったコメントマークを挿入したいなら、「:'」に続けて「s/^/\/\//」と入力すればよい。置換は「s/置換対象/置換後文字列/」で指定する(図13)。
「^」は行頭を意味しており、「\/\/」は「//」を意味している。置換指定の区切りに「/」が使われているので、ただの文字として表現するために「\/」のようにエスケープしているのだ。実行すると、行頭に「//」というコメントマークを挿入できる(図14)。
このタイプのコメントマークは、矩形選択で選択して削除すれば、簡単に元に戻せる。
挿入する文字の指定方法を工夫すると、「/* ... */」といったC言語風のコメントマークの挿入もできる。操作手順は同じだが、図15のように置換の指定方法を変えてやればいい。
「:'」に続けて「s/^\(.*\)$/\/* \1 *\//」と入力する。エスケープが多いので呪文のように見えるが、慣れれば読めるようになる。置換対象は「^\(.*\)$」。「^」が行頭で「$」が行末を意味している。.が任意の1文字に一致し、*は0回以上の繰り返しを意味している。つまり「^.*$」でその行の内容すべてに一致する。
「\(任意の対象\)」とすると、この中に一致したものが、置換後の指定で「\1」として参照できる、という意味になる。つまり「^\(.*\)$」で行の内容すべてに一致し、その内容は「\1」で置換後の指定で利用できる。
置換後を指定している部分は「\/* \1 *\/」だ。エスケープが入っているので分かりにくいが、「\/*」が「/*」を表現し、「*\/」が「*/」を意味している。\1はこの場合は行の内容すべてになっているので、「\/* \1 *\/」は行頭に「/* 」を追加し、行末に「 */」を追加するということになる(図16)。
この種のコメントマークを追加した場合、削除するには[x]や[d]ではなく、同じように置換機能で処理してやればよい。要するに行頭と行末の3文字づつを削除すればよいので、指定は「:'」に続けて「s/^...\(.*\)...$/\1/」とすればいいわけだ。
この場合、行頭は矩形選択でまるごと削除して、行末だけ置換で削除するという方法もある。どんな方法を使ってもよいし、好みの問題もあるのでやりやすい方法を覚えておけばいい。
正規表現の活用と置換の指定は、慣れないと呪文のように見えるが、ちゃんとした規則があり、そして互換性もそれなりに高い。Vimでもsedでもawkでもなんでもいいが、一度ある程度の正規表現と置換指定の方法を覚えてしまえば、さまざまなツールやコマンドで利用できて作業効率がけた違いに上がる。Vimで一歩上のスキルを身に付けるには、取り組んで覚えてしまいたい分野といえる。
Copyright © ITmedia, Inc. All Rights Reserved.