回答:
何かが足りない限り、Vimはすでにそれを行っています。マウスを使用して、またはv
カーソルを入力して移動することでテキストを強調表示すると、画面の下部に表示されます
-ビジュアル-12
ここで、右側の数字は強調表示された文字の数です。これは、選択が単一の行にある場合にのみ機能し、そうでない場合は行数を表示します。
また、テキストの一部の領域を視覚的に選択して、選択したg Ctrl-G行数、単語数、およびバイト数を表示することもできます。
set showcmd
してvimrc
有効にします。
Vimは、視覚化する内容と方法に応じて、視覚化されたテキストの文字数と行数の表示を切り替えます(vim 7.4は2015年9月にパッチ適用)
V will display line count
v$ will display character count
複数の行を視覚化すると、行数のみが表示されます
g-CTRL-G displays 'byte count' which seems to be 'char count' +1 per line
v
ように、選択範囲が複数行にわたる場合、通常の場合でも文字カウントから行カウントに切り替わります。しかしg CTRL-G
、仕事はうまくいきます。
:function VisualLength()
: exe 'normal "xy'
: echo "Visual: " . strlen(@x) . "\n"
: exe 'normal gv'
:endfunction
:map ,q "xy:call VisualLength()<CR>
最初に、現在の選択を(バッファxに)ヤンク
そして、あなたはそのバッファの長さを表示しますstrlen(@x)
(- VISUAL -私たちは改行を追加する必要がありますので、ステータスラインに表示されるが、これをあいまい)
前の視覚範囲を強調表示します。 gv
これは、ビジュアルモードが行モード、文字モード、ブロックモードのいずれであるかを考慮していませんが、ほとんどの場合はこれで十分です。
スクリーンショットから、あなたがWindowsで実行していることがわかります。そのため、この答えはあまり役に立たないかもしれません。しかし、他の人のために...
Vimの未使用(IMO)の機能は、外部コマンドに手間をかけることです。
この場合、UNIXのようなシステムを使用している場合は、wc
コマンドを使用してそれを行うことができます。
最も簡単な方法は、入力したテキストを選択して、選択したテキストをコマンドの出力に置き換えることです。
:!wc
(次にEnterキーを押します)。
これは、コマンドラインに次のように表示されます。
'<,'>!wc
情報を読んだ後、で元に戻すと元u
に戻ります。
注:この処理は行全体でのみ行われます。部分的な行が必要な場合g_CTRL-G
は、@ garyjohn's が最善の策だと思います。
代わりに実行することで、元に戻す必要を回避できます。
:w !wc
これにより、選択した行がコマンドの標準入力に「書き込まれ」、コマンドの出力が新しい一時バッファーに表示され、元のファイルは変更されません。詳細については:help :write_c
、を参照してください。
注:https:write_c
: //stackoverflow.com/questions/1237780/vim-execute-shell-command-without-filteringから情報を得ました
今、より一般的に:
この例wc
はかなり単純ですが、これがどのように強力なアプローチであるか想像できます。UNIXにはすでに多くのテキスト処理コマンドが用意されており、Vimスクリプト(yech)に触れる必要なく、Vim内で簡単に使用できます。
さらに、stdin / stdoutを処理するコマンドラインプログラムは、ターミナルだけでなく、Vim内でも使用できるようになりました。
私が実行している、例えば、自分自身を発見tidy
し、json-format
私はより読みで探していたファイルを作るために内部のvimから。
Windowsでも同じことができますが、Windowsにはそのような豊富なコマンドセットが組み込まれていません。ただし、これらの利点を得るために、GNUWin32などをいつでもインストールできます。
vimscript内のプログラム的な方法では、選択が1行以内に制限されている場合、これが機能しました。
let amount = virtcol("'>") - virtcol("'<")
(のvirtcol(..)
代わりに使用してcol(..)
、:set ve=all
アクティブなときに期待どおりに動作するようにします。)