🦉

よく忘れるvim置換のsと%s

に公開

よく忘れてしまうから,備忘録作成

%s コマンド(全体置換)

% は バッファ全体(全行) の範囲を意味する
つまり %s/検索/置換/ は ファイル全体置換
行内で最初にマッチした1箇所のみ置換
/g を付けるとその行の全てを置換

:%s/foo/bar/      " ファイル全体で最初の foo を各行1回置換
:%s/foo/bar/g    " ファイル全体で foo を全部置換

s コマンド

現在行のみ を置換
書式: :s/検索/置換/
行内で最初にマッチした1箇所のみ置換
/g を付けるとその行の全てを置換

:s/foo/bar/      " 現在行の最初の foo だけ置換
:s/foo/bar/g    " 現在行の foo を全部置換

それ以外にも

コマンド 範囲
:s/... 現在行
:%s/... 全行
:1,5s/... 1〜5行
:.,$s/... カーソル行〜末尾
:%s/foo/bar/gc 全体に対し置換を 確認付き で実行

Discussion