Vim:文字または単語のすべての発生数を計算します(同じ行に複数回発生する場合を含む)

Vim:文字または単語のすべての発生数を計算します(同じ行に複数回発生する場合を含む)

私はVimを使ってファイル内のすべての文字や単語の数を数えようとしています。これは、同じ行に同じ単語が複数回現れることも考慮する必要があることを意味します。この問題は、以前にいくつかの記事で議論されています。表示バッファが変更されていないVimの回数発生viエディタで文字列を検索して数を取得します。:gを使用してVimで一致するアイテム数を計算する方法はありますか?。私の基本的な戦略は、以下を使用することです。

%s/PATTERN//gn

キャラクターと

%s/\<PATTERN\>//gn

馬のために。これはVimのヘルプで言及されています。ページ。しかし、どちらのソリューションも同じ行で何度も発生することを無視しているようです。例は次のとおりです。

UTg    UTg    D1U1K1    UTg    D1U1K2    UTg    D1U1TW01    UTg    D1U1TW02    UTg    D1U1TW03    UTg    D1U1TW04    UTg    D1U1TW05    UTg    D1U1TW06    UTg    D1U1TW07    UTg    D1U1TW08    UTg    D1U1TW09    UTg    D1U1TW10    UTg
UTg    UTg    D1U2K1    UTg    D1U2K2    UTg    D1U2TW01    UTg    D1U2TW02    UTg    D1U2TW03    UTg    D1U2TW04    UTg    D1U2TW05    UTg    D1U2TW06    UTg    D1U2TW07    UTg    D1U2TW08    UTg    D1U2TW09    UTg    D1U2TW10    UTg
UTg    UTg    D1U3K1    UTg    D1U3K2    UTg    D1U3TW01    UTg    D1U3TW02    UTg    D1U3TW03    UTg    D1U3TW04    UTg    D1U3TW05    UTg    D1U3TW06    UTg    D1U3TW07    UTg    D1U3TW08    UTg    D1U3TW09    UTg    D1U3TW10    UTg
UTg    UTg    D1U4K1    UTg    D1U4K2    UTg    D1U4TW01    UTg    D1U4TW02    UTg    D1U4TW03    UTg    D1U4TW04    UTg    D1U4TW05    UTg    D1U4TW06    UTg    D1U4TW07    UTg    D1U4TW08    UTg    D1U4TW09    UTg    D1U4TW10    UTg

使用すると 。代わりに%s/UTg//gn出力されます。それでは、Vimで同じ行のすべての項目(複数の項目を含む)を計算する方法は?456

答え1

/g代替フラグはデフォルトで設定して有効にできます。:s

set gdefault

存在する.vimrc。この設定を使用する場合

:%s/PATTERN/gn

Vimは文字や単語の発生回数を1行に1回だけカウントし、他のすべての場合は無視します。使用するか

:%s/PATTERN/n

この場合またはset gdefaultから削除されました.vimrc

関連情報