Vim-在选定范围内计数行


82

我想计算一个范围内的行数,而不管是什么范围,但可以说是一个可视块。最简单的方法是什么。我想到的一切都是这样的:'<,'>s/.//n 但是我不认为这是最短的方法。

因此,有人可以给我提示吗?提前致谢。

Answers:


139

在可视模式下,按 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

@shabunc:“ vim中是否有功能”是什么意思?你是说可以的东西:call吗?您的问题没有提及。
Laurence Gonsalves

就像其他内置函数(:h functions;)一样意义上的函数
shabunc

1
@shabunc那么,是的。您没有提到要在问题中使用功能。我不相信有内置函数来计算范围内的行数,但是您可以通过两次调用getpos()(可以接受标记作为输入并返回位置,包括行号)来轻松定义自己的行数和一些减法。
Laurence Gonsalves

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///n短一个字符。:-)

如果我只想知道视觉选择中的行数,我通常只需按一下即可y。根据选择的类型,它会说“ 5行被拉”或“ 5行块被拉”。


2
我通常也为此目的。今天我突然意识到是时候学习一些新的东西了))))
shabunc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.