0

vim置換 :s (subsutitute) まとめ 〜 パス置換の区切りはセミコロン ; をつかう!〜

vim

よく忘れてしまう。
自戒の記事おこし。

パス名などを置換するときは、
” / ” でなく、” ; ” を区切り文字に使用

:%s;/var/home;/usr/home;gc

Capture 2017-02-18 16.48.42

❏ 置換

:%s/"置換前"/"置換後"/

です。

これだと一行中で一番初めに当たったものしか置換されないので

:%s/"置換前"/"置換後"/g

とすると1行中に複数マッチしても置換されます。
頭に % と置くと、
今開いているファイルという意味になる
ので、

:%1,100s/"置換前"/"置換後"/g

とすると1行から100行までと行を指定できます。

❏ 置換前の文字を流用

:%s/\("文字"\)/h(\1)/

とかすると\(\)内にある文字が流用でき、
h(“文字”)
と言うように置換されます。

:%s/\(\) \(\) \(\)//

のように複数 ” \(\) “があると、左から順に ”\1  \2  \3” となります。

❏ 最小一致

vimの正規表現は最小一致になっています。

:%s/<.\{-}>//

とすると最小一致で文字を置換できます。
上の場合だと “< >“で括られているものが削除されます。
ちなみに最小一致なので、

<input value="<? echo $aa; ?>" type="text" name="aa" id="text">

のようなものがあった場合

<input value="<? echo $aa; ?>

までが判定されます。

スペースを改行に置換
改行コードを挿入するにはCtrl+vと押した後にEnterを押下(^M)
*cf*改行コード

%s/\ /^M/g;

パスを置換する場合の区切りは;(セミコロンを指定)

:%s;/usr/bin;/usr/local/bin;g

❏ まとめ

:s/before/after	        カーソルのある行にある最初の文字列"before"を"after"に置換(1つずつ)
: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 /lover/killer/g	特定範囲のみ置換: 63〜79行目までの範囲にある"lover"を"killer"に一括置換

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です