これを実現するには、純粋なvimscriptの方法と方法の2つの方法がありますwc
。
純粋なvimの方法
これを行うには、検索と置換コマンドを使用できます。例えば:
:%s/\<\w\{-}\>//gn
これは、特定のパターンを何かで置き換えるのではなく、パターンの発生を数えるだけです。これはn
フラグのためです。特定のセクション(この場合は5行目から15行目)の単語を数えるには、次のようにします。
:5,15s/\<\w\{-}\>//gn
これにより、選択の内容をレジスターにヤンクする必要がなくなります。の代わりに何を使用できるかについては5-15
、のヘルプトピックを参照してくださいcmdline-ranges
。これを頻繁に実行したい場合は、マッピング(またはコマンド)を作成することをお勧めします。また、hlsearch
有効にした場合は、:nohlsearch
後で実行して強調表示をクリアすることもできます。
wc
道
同じことをで実現できますwc
。コマンドを使用cmdline-ranges
して領域を選択するのと同じように:s
、外部コマンドを使用して領域を選択できます。例えば:
:5,15!wc -w
これにより、wc
コマンドによって5行目から15行目までが実行されます。これの欠点は、その範囲の行がコマンドの出力で置き換えられることです。を押すと、この変更を元に戻すことができu
ます。また、vimscriptソリューションは\w
他の言語の通常の単語文字と一致しないため、異なる言語では機能しない可能性があることに注意してください。 wc
これよりも良いかもしれません\w
。また、これはこれをより速くするための素晴らしいコマンドです:
command -range=% -addr=lines WordCount execute '<count>!wc -w' | .y a | undo | echo @a
これはa
レジスタを破壊することに注意してください。
注意
これは、g<C-g>
キーの組み合わせを使用してビジュアルモードでも実行できるようです。この説明については、Carpetsmokerの回答を参照してください。