hello-world
webエンジニアのメモ。とりあえずやってみる。

vimの正規表現で最短マッチ

公開日時

vimでhtml内に記述された画像パスをCloudFront経由のパスに置換しようと思った時に最短マッチの記述方法にはまりました。

通常の正規表現で使用する .\*? を使って"/img/~"の部分をヘルパーメソッド呼び出し( <%= cdn_path '/img/~' %> )に変換しようと思い、

:%s/"\(\/img\/.*?)"/"<%= cdn_path '\1' %>"/g

と書いたのですがうまくマッチせず。

調べたところvimで最短マッチを行うには .{-} と記述する必要があるそうです。

:%s/"\(\/img\/.\{-}\)"/"<%= cdn_path '\1' %>"/g

で想定していた置換が行えるようになりました。

vimの正規表現は特殊なのではまることが多いです。

js, cssも同様に変換できます。

:%s/"\(\/js\/.\{-}\)"/"<%= cdn_path '\1' %>"/g
:%s/"\(\/css\/.\{-}\)"/"<%= cdn_path '\1' %>"/g

参考


Related #vim

[ruby][vim]Rubocopを使ってコードをチェックする

rubyのコーディングルールをチェックしてくれる rubocopをvimから自動実行するように設定しました。

tmuxのコピーモードでページ送り、ページ戻りができるようにする

今更ながらscreenからtmuxへの乗り換えをやっているのですが、そのままだとコピーモード時にvi風にC-bでページ戻り、C-fでページ送りができなかったので.tmux.confに設定を追加しました。

[mac][iterm]vimで全角記号がずれる問題を解消する

iterm2経由でvimを使っていた際に、全角記号(○や■)がずれておかしくなることがありました。

[vim][nkf]excelで出力したcsvの文字化けを直す(shift-jis => utf-8 変換)

macのexcelでcsv出力をして、プレビューを見たら日本語が見事に文字化けしました。