Vim-選択した範囲の行を数える


83

範囲に関係なく、範囲内の行をカウントしたいのですが、たとえば視覚的なブロックにします。それを行うための最短の方法は何ですか。私の頭に浮かぶのは次のようなものです。'<,'>s/.//n しかし、それが最短の方法だとは思いません。

それで、誰かが私にヒントを与えることができますか?前もって感謝します。

回答:


141

ビジュアルモードで、を押します gC-g

典型的な出力:

Selected 7 of 22 Lines; 8 of 32 Words; 201 of 491 Chars; 201 of 497 Bytes-- VISUAL LINE --


出典:he count-items発見など::heTabTab...


すごい!このヒントをありがとうございます。10分が経過したらすぐに回答としてマークします)しかし、それでも興味深いのは、vimに機能があることです。関数があるはずだと確信しています。
shabunc 2011

@shabunc:「vimに関数はありますか」とはどういう意味ですか?あなたができることを意味します:callか?あなたの質問はそれについて言及していませんでした。
ローレンスゴンサルベス2011

他の組み込み関数と同じ意味での関数(:h functions;)
shabunc 2011

1
@shabuncでは、「はい」です。あなたはあなたの質問に関数が欲しいとは言いませんでした。範囲内の行数をカウントする組み込み関数は存在しないと思いますが、2回の呼び出しで非常に簡単に独自の関数を定義できますgetpos()(入力としてマークを受け入れ、行番号を含む位置を返すことができます)そして少しの減算。
ローレンスゴンサルベス2011

1
@shabunc:私が見つけることができる最も近いものは:perl $curbuf->Count(行数を返します)
sehe 2011

22

オプションを設定しますshowcmd:h 'sc')を選択されている行数を知るために何も入力する必要がなくなります。最初は、このオプションを設定したことを忘れたため、質問のポイントがわかりませんでした。^^ '

それ以外の場合、プログラムでその番号を取得する場合は、次のようにします。

:echo line("'>") - line("'<") + 1

範囲関数内から、によっても取得できa:lastline-a:firstline+1ます。(:h function-range-example


8

'<,'>s///n1文字短くなります。:-)

視覚的な選択の行数を知りたいだけの場合は、通常、それをヤンクします(ヒットy)。選択のタイプに応じて、「5行がヤンクされました」または「5行のブロックがヤンクされました」と表示されます。


2
私も通常その目的のためにヤンクします。そして今日、私は突然、何か新しいものを学ぶ時だと気づきました)))
shabunc 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.