我想计算没有视觉选择空白的字符。直觉上,我尝试了以下操作
:'<,'>w !tr -d [:blank:] | wc -m
Run Code Online (Sandbox Code Playgroud)
但是vim不喜欢它。
这可以通过以下替代命令实现:
:'<,'>s/\%V\S//gn
Run Code Online (Sandbox Code Playgroud)
这两种神奇的成分是
n
替代命令的标志。它的作用是
报告匹配次数,不要实际替换。(...) 用于计数项目。
看看:h :s_flags
,也看看:h count-items
。
零宽度原子\%V
。它仅在视觉选择内匹配。作为零宽度匹配,它对以下原子\S
“非空间”做出断言,该原子仅在视觉选择内时才匹配。见:h /\%V
。
因此,整个命令:s
不会在全局范围内替换Visual selection 中的//
每个非空白字符——只是它实际上不执行任何替换,而是报告它会有多少次!\S
\%V
g