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から自動実行するように設定しました。

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

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

[vim]CentOS6.5にvim7.4をインストールしてrubyの補完ができるようにする(neocomplcache)

最初はvim7.2で試していたのですが、プラグインのアップデートをした際に一部プラグインが7.2では動かなくなったのでvim7.4にアップデートしました。