1、搜索命令
vim的查找是从按下(/)那一刻开始的....
在普通模式下按下(/)也是进入命令行模式,此时该字符和光标均出现在屏幕的底部,这和冒号(:)一样。
紧挨着斜杠的是搜索目标,比如/yutao,说明你找的是yutao这个字符串在光标后边的第一次出现的位置,当然你也可以输入中文。
如果要找下一个目标?这时只需要按n键就可以定位到下一个符合的目标(向下查找),而按下N键是返回上一个(向上查找)。
注意:第一个搜索的目标不是文件中的第一个目标,而是从你的光标所在处开始找到的那个目标,所以如果想要搜索文件中的第一个匹配的目标,你应该先gg将光标移动到文件头,然后在/搜索。
在普通模式下按下问号(?)也是进入命令行模式,实现的也是搜索功能。不过这回它是反过来的,你可以认为它是斜杠的功能的“反面派”。
/目标 | ?目标 | |
搜索方向 | 从光标开始向后 | 从光标开始向前 |
n | 向后搜索下一个 | 向前搜索下一个 |
N | 向前搜索下一个 | 向后搜索下一个 |
vim会自动高亮所有匹配的目标,即使在你找到目标后,依然高亮。输入:nohl
最后提醒,在搜索命令中 . 、*、 [ 、 ]、 ^、 %、 /、 ?、 ~、 $这10个字符有着特殊意义,所以在使用这些字符的时候要在前面加上一个反斜杠(\),比如搜索问号,则输入/\?
2、替换命令
搜索在很多情况下都是为了替换。
通过搜索功能,将光标定位到目标位置,如果确定这个目标是需要替换的,可以输入:s/old/new,这样既可将光标所在行的第一个old替换为new;如果你输入的是:s/old/new/g,则表示将光标所在行的所有old替换为new。
但是如果需要替换整个文件的所有匹配字符串呢?vim有办法,输入:%s/old/new/g表示替换文件中每个匹配的字符串.
如果你没有太大的把握,希望vim在每次替换前问一下你,可以输入:%s/old/new/gc
看到页面下方的(y/n/a/q/l/^E/^Y)了吗?这是vim在询问您的意见。
●y表示替换
●n表示不替换
●a表示替换所有
●q表示放弃替换
●l表示替换第一个并进入插入模式
●^E表示用Ctrl+e来滚动屏幕
●^Y表示用Ctrl+y来滚动屏幕
好吧!如果你想问“如果我只替换第5行到第13行之间的所有xx,可以吗?”
当然可以,使用:5,13s/old/new/g即可达到要求:
图片中使用的是:6,9s/YUTAO/HUAWEI/g
其中6代表开始替换行号,13表示结束替换行号。
vim的功能还有很多......