回答:
Quincyの答えは問題ありませんが、バッファーを編集する必要のない正確な方法があります。
:%s/pattern//ng
これによりのようなメッセージ3 matches on 2 linesが出力され、バッファは変更されません。
このnフラグは、:substitute実際の置換を実行する代わりに、コマンドに一致の数を出力させます。このgフラグは、行ごとに複数の一致のレポートを有効にします。
ユースケースに役立つもう1つのことは、パターンに一致するすべての行を印刷することです。
:global/pattern/print
次のように短縮できます。
:g/pattern
これは、この:globalコマンドの最も単純な使用法の1つです(これは驚くほど強力です)。一致するすべての行を単に出力し、pattern(複数行がある場合)Enter別のコマンドを押すか入力して、行を消します。
トリビアのビット:このコマンドは、名前の由来であるgrepとして、それは一般的に説明されるように、g/re/pどこ、re「正規表現」の略です。
g/re/pは実際にはからedではなくからviです。Grepはviを数年前に作成します。
nnoremap <leader>n :%s///gn<CR>マッピングを。そこで<leader>n、前に検索したパターンの出現回数を数えるために押します。これは驚くほど頻繁に使用します。
このPR https://github.com/vim/vim/pull/4317のおかげで、各検索コマンドはvim 8.1.1270で検索統計(現在の一致位置や一致数など)を表示します。必ずS変数から削除してくださいshortmess。
:%s/pattern//g
ステータスバーに置換の数が表示されます。それは何回pattern現れます。次に、を押しuて置換を元に戻します。
ここでの回答に基づいて.vimrcに追加したマッピング:
" count nr of occurrences of word under cursor
nnoremap <leader>c :%s/<c-r><c-w>//gn<cr>
" count nr of occurrences of visual selection
vnoremap <leader>c :<c-u>%s/<c-r>*//gn<cr>
少し説明がありますが、できれば新しい初心者に役立つでしょう:
<c-r><c-w> コマンドラインのカーソルの下に単語を挿入します。多くの場合に便利です。
<c-u>自動的に挿入を削除するために必要とされる'<,'>
押すと:ビジュアルモードでは、コマンドラインに行きます。
*レジスタ(最後)の視覚的な選択を含んでいる、<c-r>*
内容インサート*(挿入モードでも使用することができる)コマンドラインでレジスタ。
:h count-items