前回に引き続き、またまたvimの小ネタなど
マクロ
エディタ上である動作を記録させておきたい場合、q+任意の文字(例えばa)+任意の動作+q で保存し
@aで再現することができる。100@aで同じ動作を100回繰り返し。
例えば、下記の行の最後すべてに;(セミコロン)を入れたいとき
aaa
bbbbb
…(これが100行あったとする)
cccc
q+a+$(文末移動)+i(入力)+セミコロン+w(次の語句に移動)+qで保存し、100@aで一気に行末にセミコロンを入れられる。
単純な置換
%s /変更される文字/変更したい文字/gc
cが入らないと確認せずに一気に置換される。
%s→100,120sなどとやると100行目から120行目というように範囲を絞れる。
改行系の置換
aaa,bbb,cccを
aaa
bbb
cccと改行したいとき
%s /,/^M/gで変換できる(^MはCtrl+V,Ctrl+Mで出力できる)。逆に改行された状態からカンマ状態に戻したいときは%s /\n/,/g
一括置換
args *.cで同階層の.cファイルをすべて対象にする。:lsで対象となっているファイル一覧がわかる
再帰的に下位フォルダ内も対象とるする場合は:args **/*.c(全階層を対象にする)
この状態で対象ファイルに対して置換を行いたい場合、下記コマンドで確認しながら一気に置換ができる.
argdo %s/変更される文字/変更したい文字/gc | w
argdoは開いているファイルすべてが対象となり、| w で該当ファイルを保存。
応用として文字コードの置換も行える。
argdo set fenc=utf8 |w