第六节:搜索命令和替换命令
第六节:搜索命令和替换命令搜索命令
你知道文件中必定有你想要的东西,你也知道它的名字,但你却不知道它在哪里?在茫茫字符的海洋中,怎么办?
查找呗,VIM 的查找是从按下斜杠(/)那一刻开始的……
在普通模式下按下斜杠(/)也是进入命令行模式,此时该字符和光标均出现在屏幕的底部,这跟冒号(:)一样。
紧挨着斜杠(/)的是搜索目标,比如 /love,说明你找的是 love 这个字符串在光标后边第一次出现的位置,当然你也可以输入中文,比如 /你瞅啥
那如果要找下一个目标怎么办?这时你只需按 n 键即可定位到下一个符合的目标(向下查找),而按 N 键则返回上一个(向上查找)。
注意:第一个搜索到的目标不是文件中的第一个目标,而是从你的光标所在处开始找到的那个目标。所以你如果想要搜索文件中第一个匹配的目标,你应该先 gg 将光标移动到文件头,然后再使用搜索命令。
在普通模式下按下问号(?)也是进入命令行模式,实现的也是搜索功能。不过这回它是反过来的,你可以认为它是斜杠(/)功能的“反面派”。
前边我们说过 /FishC 是从光标位置向后开始搜索 FishC 这个字符串,而 ?FishC 则相反,是从光标位置向前开始搜索。
怕你头晕,给你列个表:
/目标?目标
搜索方向 从光标位置向后 从光标位置向前
n 向后搜索下一个 向前搜索下一个
N 向前搜索下一个 向后搜索下一个
当搜索到了文件的末尾(/目标)或开头(?目标),页面下方面会显示“Search hit BOTTOM, continuing at TOP”或“Search hit TOP, continuing at BOTTOM”的字样。表示一轮搜索到文件尾/头了,搜索下一个就是从文件头/尾开始咯。
我发现你发现了,VIM 会自动高亮所有匹配的目标,即使在你找到目标之后,它们仍然高傲的亮着!
很烦人对吧?告诉你怎么取消,输入冒号(:)进入命令行模式,然后输入 nohl 即可。
最后提个醒:在搜索命令中,.、*、[、]、^、%、/、?、~ 和 $ 这 10 个字符有着特殊意义,所以在使用这些字符的时候要在前面加上一个反斜杠(\),比如你要搜索问号,则输入 /\?
替换命令
搜索在很多情况下都是为了替换,这句话小甲鱼没说错吧?
通过搜索功能,我们将光标定位到目标位置,如果你确定这个目标是可恶的,需要被替换的,你可以输入 :s/old/new,这样即可将光标所在行的第一个 old 替换为 new;你如果输入的是 :s/old/new/g,则表示将光标所在行的所有 old 替换为 new。
但如果要替换整个文件的所有匹配字符串怎么办?总不能每一行来一下吧?
只要你能想到的,VIM 就有办法!输入 :%s/old/new/g表示替换整个文件中每个匹配的字符串。
噢,你没有太大的把握,希望 VIM 在每次替换前都咨询一下你:“亲,我准备替换 XX 了,你确定要将 XX 替换成 OO 吗?”
可以,输入 :%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 即可胜任你的要求:
我想你已经猜到了:5 表示开始替换的行号,13 表示结束替换的行号。
注释:VIM 的搜素和操作远没有这么简单,还有很多秘籍没有放出来,不过今天说的内容,已经足够你用了吧……更多秘籍将在进阶技巧中仔细讨论!
关于魔鬼训练小程序的众多问题,请移步:VIM魔鬼训练须知
next text学到这了 自己报道下{:10_256:} 之前是看到这里了 没实际操作 我打算实际操作两天 再进行下一步实际操作 每次都出错我也是无语了那位师兄师姐能看到 这个帮忙看看什么情况 我的 虚拟机Teminal也步高亮了不显示颜色区别了 我之前确实是按照*文章操作的而且也成功了 这几天变这样了纠结了 屁哥 发表于 2016-6-10 21:04
之前是看到这里了 没实际操作 我打算实际操作两天 再进行下一步实际操作 每次都出错我也是无语了那 ...
厉害了,这条鱼不会是你手打的吧 caiyang 发表于 2016-11-8 12:20
厉害了,这条鱼不会是你手打的吧
哈哈 caiyang 发表于 2016-11-8 12:20
厉害了,这条鱼不会是你手打的吧
是手打的
@小甲鱼,如何替换特殊字符 摇钱妹ldd 发表于 2016-11-9 09:57
@小甲鱼,如何替换特殊字符
我明白了,原来不再同一行{:5_92:} 屁哥 发表于 2016-6-7 13:38
text学到这了 自己报道下
求解,这个程序你们是在哪里下载的呀 最终BOSS 发表于 2017-3-13 12:45
求解,这个程序你们是在哪里下载的呀
C语言——番外篇 小程序到底在哪里呀???????????????谁能告诉我一下啊
替换还是有点麻烦。没IDE方便。 鱼哥,“?”和“%”的查找不需要加“\”,不仅不需要,而且加上“\”会查不到。
我的电脑直接输入“/?”和“/%”就可以查找,是因为系统版本不同的原因吗? {:10_279:}倒数第二个了 记忆好要多打 屁哥 发表于 2017-3-13 14:06
C语言——番外篇
这是17年的,现在vim快速入门中没有找到这个小程序诶 1 VIM能满足我所有的要求{:10_301:},我的最爱!!! 努力中,加油!加油! 谢谢小甲鱼{:5_92:}
页:
[1]
2