webdevqa.jp.net

変更されたバッファーをマークせずにVimで発生をカウントする

現在のバッファーにパターンが何回存在するかを知るために、次のことを行います。

:%s/pattern-here/pattern-here/g

パターンの出現回数を示しますが、明らかに面倒であり、「変更済み」ステータスを設定する副作用もあります。

よりエレガントなカウント方法はありますか?

110
Paul Oyster

置換を回避するには、2番目のパターンを空のままにして、「n」フラグを追加します。

:%s/pattern-here//gn

これは 公式のヒント と記述されています。

165
Bruno De Fraine
:help count-items

VIM 6.3では、次のようにします。

:set report=0
:%s/your_Word/&/g    # returns the count without substitution

VIM 7.2では、次のようにします。

:%s/your_Word/&/gn   # returns the count, n flag avoids substitution
8
konyak
:!cat %| grep -c "pattern"

これはまさにvimコマンドではありませんが、vimから必要なものを提供します。
頻繁に使用する必要がある場合は、コマンドにマップできます。

5
Ilya

Vimscript IndexedSearch は、Vim検索コマンドを拡張して、「M個の一致のうち#個の一致」を表示します。

2
redacted

カウントするWordにカーソルを置き、以下を実行します。

:%s/<c-r><c-w>//gn

見る :h c_ctrl-r_ctrl-w

1
Sagar Jain