vi - 特殊文字を伴う検索・置換

 クラウディア
1. 概要
2. 置換条件を省略すると、最後に検索した検索条件を利用
3. man 出力を整形

1. 概要

 検索・置換に関しては、前のページで書いていますが。  検索は、以下のように記述します。

:/文字列
://
 上が、単純な検索。下は、直前に検索した文字を再検索します。  置換は、以下の形式で、記述します。

:%s/文字列1/文字列2/
:%s/文字列1/文字列2/g
:n,m s/文字列1/文字列2/g
 いずれも、文字列1を文字列2に置換しますが。  上から  1回のみ置換。  全行置換。  n~m 行置換になります。  「[」などの特殊文字を検索するときは、「\」でエスケープさせれば検索できます。  「[A]」てな文字を検索するには

:/\[A\]
 で検索できます。  もっと、複雑なパターンもあるので、それは別の機会に正規表現として、述べますが・・・。  これを、置換に応用するとうまくいかないんだな・・・。  「[A]」を「A」みたいに、単純なかっこなしに変換しようとして

:%s/\[A\]/A/
 てなことをやっても、確かにテキストファイル内に「[A]」があるにもかかわらず

Pattern not found
 と言われちゃうのだ。  もっと複雑な方法を使わねばならんかと思っていたら、「ここまで出来る!Vimの(ちょっと高度な)正規表現と検索/置換テクニック」にうまいやり方が載っていました。

2. 置換条件を省略すると、最後に検索した検索条件を利用

 タイトルまで、まるぱくりですが・・・。  検索時の、前回と同じ文字列を検索という機能は、置換に応用できるのだ。  すなわち、「[A]」を「A」に置換するには・・・。

:\[A\]
 で、検索後

:%s//A/
 って、やっちゃえばいいのだ!  便利。

3. man 出力を整形

 「サクラエディタ」で、同じようなことをやっていますが。  「Unix」系のプラットフォームで、「man」コマンドの結果を、リダイレクトして、テキストファイルへ出力すると。

man コマンド > ファイル名.txt
 デフォルトで、バックスペース修飾されるため、テキストとしては、読みにくい状態になります。  バックスペース修飾をなくすには、コマンドモードで、下記を行います。

%s/.\b//g
earthcar(アースカー)