例:
let hits = []
:5s/regex-search/\=join(add(hits, submatch(0)))/g
これにより、5 行目のすべての一致がリストに追加されます。
ただし、テキスト内での代用も行います。「 」の後に「 」フラグ
を追加しようとしましたが、リストに一致が追加されません。n
g
私の問題を解決する方法はありますか?
もうすぐです。まず、参加する必要はないと思います。次に、add は一致が追加されたリストを返します。したがって、リストの最後の要素を選択して、置き換えられる要素にすることができます。(これにより、何も置き換えられていないように見えます)
s/regex-search/\=add(hits,submatch(0))[-1]/g
十分に新しいバージョンの Vim を使用すると、:s コマンドの右側の式がまだ評価されている間に、実際の置換が行われるのを防ぐことができます (そして、元に戻すブランチが台無しになります)。
少なくとも Vim patch Vim patch 7.3.627が必要です。
:s/foobar/\=add(hits, submatch(0))/gn