very magic
vim で検索を行う場合、デフォルトではいわゆるメタキャラにバックスラッシュをつけてquoteする必要があって結構面倒くさいのです。
/'\('\w\|\[^']\)\+'
you have mocking some 'bird of the year'.
you have mocking some 'the year's bird'.
とかもう凶器です。わけわかんないでっす。
set magicはしてたんだけど・・・
ある程度quoらなくてもおっけーにする set magic というのがあって、これをつかうと\.(ANY)とか\[とか\*とか(\+はダメ)のバックスラッシュが不要になります
/'\('\w\|\[^']\)\+'(使用前) /'\('\w\|[^']\)\+'(使用後)
・・・・・・・・・・・・・かわってねーよ!
#中途半端ー
確かにカジュアルな検索時は +とか .とか自身を当てたいことの方が普通で、普通を最適化するのが王道。正規表現を駆使した検索をついつい考えてしまうのは充分なるperl厨なのかもしれません。んんんんんがしかし、面倒なものは面倒です。心が折れてしまいそうです。
これまであんまり不便も感じていなかったので set magic したところで探究心が止まっていたのですが、ふとCSVファイルとか置換するのに \(\([a-z]\+\),\W*\( ......とか書いてて頭のネジが飛びました。もうイヤだ!
というわけでhelp magicしてみたら一発でした><
after: \v \m \M \V matches ~ 'magic' 'nomagic' $ $ $ \$ matches end-of-line . . \. \. matches any character * * \* \* any number of the previous atom () \(\) \(\) \(\) grouping into an atom | \| \| \| separating alternatives \a \a \a \a alphabetic character \\ \\ \\ \\ literal backslash \. \. . . literal dot \{ { { { literal '{' a a a a literal 'a'
検索文字列前に\vをつけると 'very magic' モードになるらしいです。なんと!! 呪文の詠唱無しに高度な魔法の行使が可能に(違)
こうすると
/'\('\w\|\[^']\)\+'(使用前) /\v'('\w|[^'])+' (使用後)
おお、ダイブいい感じ(既に病気)。目標は<名前>,<数値>,<数値>,<数値>,<数値>というファイルだったので
/\v((\d|\a)+,?\s*){5}
と横着をしてみたら。。。ダメでした(置換変数には最後の 2個しか残らない)。考えるのめんどだったので CmdWinで C-vしてコピりました。
/\v(\a+),?\s*(\d+),?\s*(\d+),?\s*(\d+),?\s*(\d+),?\s*
としてから
:%s//"\1", \5 - \3, \2 - \4/
で変換。
山のいただきや川のほとりから「それawkでー」という声が聞こえてくる気がします。
結論
とりあえず
:nmap g/ /\v
しときました。とさ。とさ