Vim
sed

VIMで置換するときのsコマンドの使い方メモ

sコマンドを使うと、vim内でsedと同じことができる。


:s/before/after/
  • 現在カーソルがある行の一番はじめに出てくるbeforeをafterに置換


:s/before/after/g
  • 現在カーソルがある行の全てのbeforeをafterに置換


:1s/before/after/
  • 現在開いているファイル1行目の一番はじめに出てくるbeforeをafterに置換


:1s/before/after/g
  • 現在開いているファイル1行目に出てくる全てのbeforeをafterに置換


:1,10s/before/after/g
  • 現在開いているファイル1〜10行目に出てくる全てのbeforeをafterに置換


:%s/before/after/
  • 現在開いているファイルの各行の一番はじめに出てくるbeforeをafterに置換


:%s/before/after/g
  • 現在開いているファイルに出てくる全てのbeforeをafterに置換


:%s/before/after/gc
  • c をつけると、確認(yes/no)が出るようになります。


:1,10s#before#after#gc
  • "/"は別の文字でも可能。オススメは "#" (見易いので。また、/を\でエスケープしなくてよくなる)。


:%s#a\|b#c#g
  • aまたはbを、cに置換する。
    • BREの (sedやgrepと同じ) 正規表現になる。
    • | はor条件を表す。
    • \ で | をメタ文字にする(エスケープする)。


:%s#\va|b#c#g
  • aまたはbを、cに置換する
    • \vでEREの (grep -e、egrep、awk、perlと同じ) 正規表現になる。


:%s#\v(a|b)#\1c#g
  • aまたはbを、acまたはbcに置換する
    • \1は ( ) にマッチしたパターン文字列になる
      • oniguruma の$1と同じ