1. 普通查找
/ 向下查找
? 向上查找
n 查找下一个目标字符串
N 查找上一个目标字符串
q/ 回溯查找历史,输入该命令后会在状态栏上方显示一个查找历史回溯窗口,如图4.1:
可以选择之前执行过的查找,也可以在最后一行回车不执行任何操作但是可以关闭该窗口。
* 在正常模式下,在想要查找的单词处按’*’键直接执行目标查找。
2. 高亮查找
‘highlightsearch’选项可以高亮所查找的字符串。可以把设置该选项添加到vimrc中每次Vim初始化打开查找高亮。
有时候查找结果有很多匹配,浏览代码时看起来不太顺眼,可以执行:nohls命令取消高亮,这条命令并不影响’highlightsearch’选项的设置。
3. 增量查找
当设置’incsearch’选项时,Vim会自动移动插入符到最近的匹配的字符串位置。
4. 替换命令substitute
- 替换字符串
:s/{pattern}/{string}
a. 替换当前行所有匹配的字符串
:s/{pattern}/{string}/g
g标志控制substitute命令替换当前行所有匹配。
b. 替换当前文件所有匹配的字符串
:%s/{pattern}/{string}/g
‘%’表示整个文件,把它放在substitute前面表示给替换命令指定了在整个文件执行的范围。
c. 利用substitute命令删除多个空行
:%s/^n//
“^n”是s命令的{pattern}部分,表示匹配每行开始就是换行符的行,所以肯定是空行。“//”表示目标字符串是空,替换时达到删除的目的。
关于substitute命令的细节请参考3.12节substitute命令。
5. 替换上次查找的内容
如果在substitute命令中不提供{pattern},则使用上次查找(/或?)或替换的{pattern}。格式如下:
:s//{string}/g
6. 利用反向引用交换字符串
反向引用是正则表达式的功能之一,该功能通过在{pattern}部分用小括号提供字符串组,在{string}部分可以引用这些字符串组作为目标字符串的一部分或全部。格式如下:
:s/(a)(b)/21/g
在Vim中引用第一个字符串组为用1,第二个字符串组用2,以此类推最多可以引用9组。
7. 多文件替换
我们可以用:bufdo/:argdo/:windo/:tabdo等命令在多个buffer或文件上执行substitute命令,具体请参考3.13.5节的例子。
疯之任性:技术成长日记-Vim-3.Vim中重要的概念