🌫️

magic.vim書いた

2022/12/13に公開

magic.vimというVimプラグインを作りました。

https://github.com/kawarimidoll/magic.vim

先日、Vimの検索のvery magicフラグを切り替えるスクリプトの記事を書きました:

https://zenn.dev/kawarimidoll/articles/b723f9e93afa90

これを発展させて、同様に検索パターンを受け付けるコマンド(: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