かなりの頻度で、大きなファイル全体で一致がまばらになり、自明ではない検索式と置換式を使用する置換を実行する必要があることに気付きます。
たとえば、のような関数呼び出しがあるとしokFunction(arg1, arg2 arg3)
ます。もちろん、引数は関数呼び出しごとに異なります。今、私は必要としないより良い機能を発見したと言いますarg2
。ファイル全体を簡単に調整できます
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
概念的には単純ですが、このかなり長いパターンで構文が正しいかどうかはわかりません。c
フラグは本当にここに役立ちますが、問題は、確認を求めたとき、Vimはマッチが置き換えられますどのような表示されませんということです。つまり、置換式は表示されますが、評価結果は表示されません。で置換を確認するとy
、vimはすぐに次の試合にジャンプし、間違いを犯したかどうかを確認することはできません。
問題を部分的に解決するvim-overプラグインを見つけましたが、コマンドを入力しているときに画面にすべてのマッチが表示されている場合のみです。Enterキーを押すと、動作は上記の説明とまったく同じになり、プレビューは表示されません。
それで、代替コマンドで確認を求めるときにvimに置換式を評価させる方法はありますか?
2
これは、vim-bugトラッカーのwhishlistアイテムです(現時点では見つかりません)
—
Christian Brabandt
通常、最初の行の置換を使用して置換せずに置換する価値があるものについて
—
思われ
%
は、結果が期待どおりであることを確認してから、置換を使用します%
(数回のキーストロークのみです:) :<up><c-b>%
。明らかにプレビューオプションはそれよりもはるかに効率的です。利用可能なパッチはありませんが、この種のオプションを使用してvimscript関数で置換をラップすることはできますが、それは多くの作業のように
@ChristianBrabandt それを見つけた。それは今のところ未分類の優先順位です...
—
Vitor Eiji
@VitorEijiそれは私が考えていたものではありませんでした。しかし、それは現在可能ではないので、実際には問題ではありません。Neovimは 'inccommand'オプションを提供します。これは機能する可能性があります(または、実際には機能しません)
—
Christian Brabandt