vim 常用技巧介绍
vim 指定范围内查找
参考: https://stackoverflow.com/questions/3264120/vim-search-only-between-specific-line-numbers
方法1
指定要搜索的起止行号, search为要搜索的pattern
如上图, 我们只想查找struct XLogRecord中包含"record"的行, 而非全部文件, 即仅"查找选择(select)的区域". 可以看出struct XLogRecord选择区域对应的"起始"和"结束"行为: 41, 53, 那么在vim底部的命令面板中输入如下查找字符串:
:41,53g/record
由上图, 可以看出, 查找的就是"选择区域"的结果
方法2
方法1需要手动输入起止行号, 不够直观和自然, 最好是用选择的方式
在visual模式选择要搜索的区域, 然后按下 :
这时, vim就自动确定好了范围
search为需要查找的目标.
:'<,'>g/search
像C/C++等编程语言, 函数体是用"{ }"包起来的, 这时可以在vim命令模式下输入 va{ 或 va}, 就可以快速选中此函数大括号中的内容了.
备注: va{ 或 va} 理解
v 在vim中是选择(select)的意思, va{ 或 va} 可以理解为"select a {} 中的内容"
统计指定范围内匹配项的个数
语法如下:
:%s/pattern//gn # % 代表统计整个文件中匹配的个数
:'<,'>s/pattern//gn # '<,'> 是选定的区域匹配的个数
上述统计个数的语法其实利用了的vim替换规则, 如, vim中替换语法如下:
s/pattern/replacement/ # 替换行中出现的每一个pattern
统计个数的语法如下:
s/pattern//gn 即: 通过"空"替换的方式, 来实现统计个数的目的