Vi/Vim可以说是文本编辑界的传奇,直到现在,它在高级程序员的武器库中依然占有一席之地。每个Linux发行版都默认包含Vim,即使您不是Linux系统用户也可以安装Vim。为什么我们还在谈论这个古老的软件?因为太棒了!它包括适用于几乎所有功能的轻量级键盘快捷键、内置表达式搜索以及强大而稳定的插件生态系统。甚至其他现代文本编辑器功能,如漂亮的语法高亮显示,它也有。你会在不知不觉中爱上这款文本编辑神器。言归正传,今天就来学习一下Vim中的文本搜索和替换功能,帮助大家更好的使用Vim。如果想进一步了解Vim操作,可以在公众号“良序Linux”后台回复“资讯”,里面有我整理的电子书和视频。Demo文件制作为了更好的讲解后续内容,我们首先需要准备一个demo文件。在这里,我生成了一个文本文件PackageList.txt,其中包含系统上所有已安装的软件包作为演示文件。catPackageList.txt现在,我们在Vim中打开这个文本文件。之后,我们将在该文件中进行后续的操作演示。vimPackageList.txtVim搜索功能在Windows下,很多软件的搜索功能可以使用ctrl+F组合键调出搜索框,然后完成后续的搜索。但是在Vim中,我们需要使用下面的命令结构来实现搜索功能:?比如我们要在PackageList.txt文件中搜索关键字python,我们可以这样做:?python默认,搜索会定位到最接近当前光标的匹配结果。如果我们想转到下一个/上一个搜索结果,请使用以下键:n–查找下一个匹配项N–查找上一个匹配项注意:在使用上述键之前不要忘记按Enter键。否则,搜索词将被更改!以上只是Vim下搜索的基本功能。如果你认为这就是它所有的搜索功能,那它真的是一张破图。接下来,让我们试试更强大的搜索功能。先给出查找格式:/\/>这里,\<表示字符串的开头,/>表示字符串的结尾,中间是要查找的字符串表达式。与前面的示例一样,使用n或N来导航搜索结果。中间的字符串表达式不仅支持直接输入关键字,还支持使用通配符。比如我们要搜索以python-开头的字符串,可以使用python*。这里*表示匹配任意字符。/\搜索结束后,Vim默认将光标放在匹配关键字的开头字符处。不喜欢光标的默认定位?没关系,Vim允许我们更改光标所在的默认字符位置。/python/e这里e的作用是将光标定位到匹配关键字的结束符处。不仅如此,使用以下命令模式,您还可以将光标定位在搜索结果的下方或上方。//+2or//-3您还可以将光标从搜索匹配项的开头/结尾偏移。例如,以下命令将光标定位在开头旁边的3个字符处。//s+3//b+3这里s表示开头,+3表示开头的第三个字符。b也代表begin,其功能类似于s。从截图中也可以看出,Vim会自动将b翻译成s。如果有兴趣从搜索匹配的末尾开始偏移,请使用e(end)。///gn这个命令的具体作用是什么?这里先保密,请继续往下看。如果想进一步了解Vim操作,可以在公众号“良序Linux”后台回复“资讯”,里面有我整理的电子书和视频。Vim字符串替换查找和替换是任何文本编辑器中常见且必须具备的一组功能。下面来解释一下Vim中的字符串替换功能。Vim使用以下命令结构来实现替换功能。:s///range-定义执行“查找和替换”功能的范围,有两个不同的值%-执行fortheentirefile-对一组特定的行执行操作search_string-待替换的字符串replace_string-新字符串替换旧字符串修饰符-确定替换行为,有几个不同的值g-全局替换gc-每次替换前需要确认gn-忽略替换功能并突出显示查找结果。例如,将PackageList.txt文件中的所有python字符串替换为Python3字符串。:%s/python/Python3/g很简单吧?让我们再看看下面的命令。:%s/python/Python3/gc可以看到,在最下面询问是否要进行替换操作。此时,你可以选择一些动作。这些数字代表什么?让我们一一看看。y-允许进行更改。n-不执行更改。a-全部替换。q-退出任务。l-只需更换外壳。然后,退出。^E(Ctrl+E)-向上滚动屏幕^Y(Ctrl+Y)-向下滚动屏幕接下来,让我们试试范围字段。事实上,我们在前面的示例中使用了%范围(针对整个文件范围)。如果我们不想在整个文件范围内进行查找和替换,如果我们只想对特定的几行进行这个操作,我们需要做什么呢?我们可以使用类似如下的命令格式::200,250s/python/Python3/g执行完上述操作后,Vim会将第200行开始到第250行结束的所有python替换为Python3。该功能不仅限于一个词,还可以完成多个关键词的替换。它的命令格式如下:%s/\|\|//g比如我们想把文中所有的python和py都换成Python3。:%s/python\|py/Python3/g区分大小写本文前面提到的所有替换操作都是区分大小写的。比如Python,python,PYTHON等等,都是不一样的。如果要忽略大小写,可以在搜索字符串后加一个\c,如下:/\c:%s/\c//g但这个设置是临时的,它会Vim关闭后失败。如果你想一劳永逸,你也可以直接从vimrc文件中设置不区分大小写。setignorecase还有一个有趣的方法:智能大小写模式。setsmartcaseignorecase会强制Vim忽略大小写。然而,如果搜索项中只有大写字母,smartcase将使Vim再次区分大小写。注意:如果要启用smartcase,需要先设置ignorecase。结束语Vim可以帮你做很多事情,多点耐心练习,相信你会越来越喜欢这个古老的神器。看到的都是真爱,走之前怎么不竖个大拇指?您的“三通”是良旭继续创作的最大动力!关注原创公众号《良序Linux》,第一时间获取最新Linux干货!公众号后台回复【信息】【面试】【简历】获取精选一线大厂的面试、自我提升、简历等信息。关注我的博客:lxlinux.net