Vimのコマンドラインモードでできることというページを発見。Vimと言っているが、ViというかExコマンドのことを書いてますね。そういえば1999年に入社したソフトウェアハウスはUNIXでviを触れないと食っていけない会社だったので、新人研修の資料に同じようなことが書いてあったのを思い出し、非常に懐かしく感じました。
- 文字列置換
例えばこんなファイルがあってpavement1234を4321tnemevapに変換します。置換はsubstituteのsです。
まずファイルを開く。
pavement1234Escを押してコマンドラインモード(:)に入り、s/pavement1234/4321tnemevapを入力。
pavement5678
pavement12345678
pavement-1234
pavement9876
"a" 6L, 71C 4,1 全て
pavement1234
pavement5678
pavement12345678
pavement-1234
pavement9876:s/pavement1234/4321tnemevap
リターン打つとファイル内のpavement1234のうち1行目だけ4321tnemevapに置換される。
:qでファイルを閉じて、また開きます。4321tnemevap
pavement5678
pavement12345678
pavement-1234
pavement9876:s/pavement1234/4321tnemevap 1,1 全て
pavement1234Escを押してコマンドラインモードに入り、%s/pavement1234/4321tnemevap/gを入力。
pavement5678
pavement12345678
pavement-1234
pavement9876
"a" 6L, 71C 4,1 全て
pavement1234
pavement5678
pavement12345678
pavement-1234
pavement9876:%s/pavement1234/4321tnemevap/g
リターン打つとファイル内のpavement1234がすべて4321tnemevapに置換される。
4321tnemevap
pavement5678
4321tnemevap5678
pavement-1234
pavement9876:%s/pavement1234/4321tnemevap/g 3,1 全て
:qでファイルを閉じて、また開きます。
pavement1234Escを押してコマンドラインモードに入り、%s/pavement1234/4321tnemevap/gcを入力。
pavement5678
pavement12345678
pavement-1234
pavement9876
"a" 6L, 71C 4,1 全て
pavement1234
pavement5678
pavement12345678
pavement-1234
pavement9876:%s/pavement1234/4321tnemevap/gc
リターン打つと4321tnemevap に置換しますか? (y/n/a/q/l/^E/^Y) と聞かれるのでyと打ちリターン。
pavement1234
pavement5678
pavement12345678
pavement-1234
pavement98764321tnemevap に置換しますか? (y/n/a/q/l/^E/^Y) 1,1 全て
4321tnemevap
pavement5678
pavement12345678
pavement-1234
pavement98764321tnemevap に置換しますか? (y/n/a/q/l/^E/^Y) 1,1 全て
4321tnemevap
pavement5678
pavement1234
4321tnemevap5678
pavement98764,1 全て
:qでファイルを閉じて終わり。
- 置換コマンドをまとめるとこんな感じ。
:s/before/after
カーソル行の文字列"before"を"after"に置換。
:s/before/after/g
カーソル行の文字列"before"をすべて"after"に一括置換
:s/before/after/gc
カーソル行の文字列"before"をすべて"after"に置換。確認を表示させる。
:%s/before/after/g
現在開いているファイルの文字列"before"を"after"に一括置換。
:%s/before/after/g
現在使っているファイルの文字列"before"を"after"に置換。確認を表示させる。
:%s;/var/home;/usr/home;gc
パス名などを置換するときは、"/"でなく、";"を区切り文字に使用
:63,79s /aaa/bbb/g
特定範囲のみ置換。 63~79行目までの範囲にある"aaa"を"bbb"に一括置換。
- スマイル
Escを押してコマンドラインモードに入り:smileを打つと、こうなります。
続く
スポンサードリンク