🌫️
magic.vim書いた
magic.vimというVimプラグインを作りました。
先日、Vimの検索のvery magic
フラグを切り替えるスクリプトの記事を書きました:
これを発展させて、同様に検索パターンを受け付けるコマンド(:substitute
など)にも対応させたものです。
前述の記事を更新することも考えたのですが、コマンドを検出するための正規表現が長くなりすぎてしまったので、プラグインとしてまとめることにしました。
使用している正規表現
^\%(\%(\d\+\|[.$%]\|'[a-zA-Z<>'`]\|/[^/]\+/\|?[^?]\+?\|\[/?&]\)\%([+-]\d\+\)\?\%([,;]\%(\d\+\|[.$%]\|'[a-zA-Z<>'`]\|/[^/]\+/\|?[^?]\+?\|\[/?&]\)\%([+-]\d\+\)\?\)*\)\?\%(g\%[lobal]!\? *\|v\%[global] *\|sor\%[t]!\?[ bfilnorux]*\|s\%[ubstitute] *\|vim\%[grepadd]!\? *\|l\%[vimgrepadd]!\? *\)[!@$%^&*()=+~`',.;:<>/?_-]
関数magic#expr()
のみを提供します。適当なキーに<expr>
を使ってマッピングしてください。
cnoremap <expr> <C-x> magic#expr()
これで正規表現検索・直接検索をサクッと切り替えられるようになります。ぜひ使ってみてください。
え?カワリミマジック言いたかっただけだろって?そうだよ!
Discussion