Vi/Vim 可以说是文本编辑中的一代传奇人物,直至现在,它仍然在高级程序员的武器库中占有一席之地。每个 Linux 发行版默认都包罗Vim ,而且纵然你不是 Linux 系统用户,你也可以安装 Vim 。

为什么到现在还来讲这款古老的软件?由于它牛逼啊!它包罗险些所有功效的轻量级键盘快捷键、内置表达式搜索,以及壮大而又稳固的插件生态系统。就连其他现代文本编辑器功效,如漂亮的语法高亮,它也有。你会在不知不觉中爱上这款文本编辑神器。

回到主题,我们今天就来学习 Vim 中的文本搜索和替换功效,辅助你更好地使用 Vim 这款神器。若是你想学习更多 Vim 操作,可以在民众号「良许Linux」后台回复「资料」,有我整理的电子书和视频

演示文件建立

为了更好的解说后续内容,我们首先需要准备一个演示文件。在这里,我生成了一个包罗系统上所有已安装软件包的文本文件 PackageList.txt 来作为演示文件。

cat PackageList.txt

现在,我们在 Vim 中打开这个文本文件。之后,我们就在这个文件里举行后续的操作演示。

vim PackageList.txt

Vim 搜索功效

在 Windows 下,许多软件的搜索功效可以使用 ctrl+F 组合键调出搜索框,然后完成后续的搜索。但在 Vim 里,我们需要使用以下下令结构实现搜索功效:

?<search_string>

例如,我们想要在 PackageList.txt 文件里搜索 python 这个关键词,可以这样操作:

?python

默认情形下,搜索会定位到一个离当前光标最近的一个匹配效果。若是我们想要转到下一个/上一个搜索效果,请使用以下按键:

  • n – 寻找下一个匹配效果
  • N – 寻找上一个匹配效果

注重:在使用上述按键之前,请不要遗忘按 Enter 键。否则,搜索词将会被改变!

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第1张

上面的只是 Vim 下搜索的基本功效,若是你以为这是它的所有搜索功效,那真是图样图森破。接下来,我们来实验一下更壮大的搜索功效。

先给出搜索花样:

/\<search_string>/>

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第2张

这里,\< 示意字符串最先,/> 示意字符串竣事,中心的就是需要搜索的字符串表达式。

与前面的示例一样,使用 nN 来导航搜索效果。

中心的字符串表达式,不仅支持直接输入关键词,还支持使用通配符。例如,我们要搜索以 python- 开头的字符串,可以使用 python* 。这里 * 示意匹配随便字符。

/\<python*/>

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第3张

搜索竣事后,Vim 会默认将光标放在匹配的关键词的起始字符处。

不喜欢光标的默认定位?没关系,Vim 允许我们更改光标定位的默认字符位置。

/python/e

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第4张

这里,e 的作用是将光标定位到匹配关键词的末尾字符。

不仅如此,使用以下下令模式,你还可以将光标定位在搜索效果的下方或上方。

/<search_string>/+2

or

/<search_string>/-3

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第5张

你也可以从搜索匹配效果的开头/末端偏移光标。例如,以下下令将光标定位在开头旁边的3个字符处。

/<search_string>/s+3
/<search_string>/b+3

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第6张

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第7张

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第8张

这里,s 示意开头,+3 示意从开头最先的第 3 个字符。b 也代表最先(begin),它的功效类似于 s 。从截图中也可以看出,Vim 会自动将 b 翻译为 s

若是有兴趣从搜索匹配效果的末尾举行偏移,请使用 e (end)。

/<search_string/e-2

下面是对文本文件执行搜索的另一种很棒的方式。

:%s/<search_pattern>//gn

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第9张

这条下令详细有啥高峻上的作用?我们这里先卖个关子,请继续往下读。若是你想学习更多 Vim 操作,可以在民众号「良许Linux」后台回复「资料」,有我整理的电子书和视频。

Vim 字符串替换

查找和替换是随便一款文本编辑器的一组常见和必备功效。下面就来解说 Vim 中的字符串替换功效。

Vim 使用以下下令结构实现替换功效。

:<range> s/<search_string>/<replace_string>/<modifier>
  • range - 界说执行“查找和替换”函数的局限,有两个差别的值
    • % - 对整个文件执行
    • < start _line > < end_line > - 在一组特定的行上面执行操作
  • search_string - 需要替换的字符串
  • replace_string - 替换旧字符串的新字符串
  • modifier - 确定替换行为,有几个差别的值
    • g - 全局替换
    • gc - 在每次替换之前要求确认
    • gn - 忽略替换功效并突出显示查找效果。

例如,在 PackageList.txt 文件里用 Python3 字符串替换所有 python 字符串。

:%s/python/Python3/g

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第10张

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第11张

简朴吧?我们再看看下面这条下令。

:%s/python/Python3/gc

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第12张

可以看出来,它在底部询问你是否要举行替换操作。这时,你可以选择一些操作。那这几个是代表什么意思呢?我们一个个来看。

  • y - 允许执行更改。
  • n - 克制执行更改。
  • a - 替换所有。
  • q - 退出义务。
  • l - 只需替换这种情形。然后,退出。
  • ^E(Ctrl + E) - 向上转动屏幕
  • ^Y(Ctrl + Y) - 向下转动屏幕

接下来,我们来试试局限这一个域。实在,我们在前面的例子里,已经使用了 % 局限(对整个文件局限)。

若是我们不想在整个文件局限举行查找替换,若是我们只想在某几个特定行举行这种操作,需要怎么做?我们可以接纳类似于以下下令花样:

:200,250 s/python/Python3/g

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第13张

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第14张

执行完以上操作,Vim 会将第 200 行最先并在第 250 行竣事的所有 python 替换为 Python3

此功效不仅限于一个词,还可以完成对多个关键词的替换。它的下令花样如下:

:%s/<search_term_1>\|<search_term_2>\|<search_term_3>/<replace_string>/g

好比,让我们想要将文本中所有 pythonpy 更改为 Python3

:%s/python\|py/Python3/g

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第15张

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第16张

区分大小写

本文前面提到的所有替换操作都是区分大小写的。例如,PythonpythonPYTHON 等都是差别的。

若是你要忽略大小写,可以在搜索字符串后面加上一个 \c ,如下:

/<search_term>\c
:%s/<search_term>\c/<replace_term>/g

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第17张

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第18张

但这个设置是临时性的,Vim 关闭之后就会失效。若是你想一劳永逸,也可以从 vimrc文件 直接设置不区分大小写。

set ignorecase

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第19张

另有一个有趣的做法:智能大小写模式。

set smartcase

濮阳美食:Vim查找与替换下令大全,功效完爆IDE! 第20张

ignorecase 将强制 Vim 忽略大小写。然则,若是搜索关键词中只要有大写字母,smartcase 将使 Vim 再次变为区分大小写。

注重:若是要启用 smartcase,首先需要设置 ignorecase

结论

Vim 可以辅助你做许多事情,多加耐心地演习,相信你会越来越喜好这款古老的神器。

看完的都是真爱,点个赞再走呗?您的「三连」就是良许连续创作的最大动力!

  1. 关注原创民众号「良许Linux」,第一时间获取最新Linux干货!
  2. 民众号后台回复【资料】【面试】【简历】获取精选一线大厂面试、自我提升、简历等资料。
  3. 关注我的博客:lxlinux.net
,

诚信在线赌博正规吗

诚信在线赌博正规吗(现:阳光在线官网)现已开放诚信在线手机版、诚信在线电脑客户端下载。诚信在线娱乐游戏公平、公开、公正,用实力赢取信誉。

发布评论

分享到:

allbet gmaing官网:接种新冠疫苗后,他泛起严重不良反应……
1 条回复
  1. 皇冠新2网址
    皇冠新2网址
    (2020-05-13 00:09:45) 1#

    进入sunbet官网手机欢迎您!Sunbet 申博提供申博开户(sunbet开户)、SunbetAPP下载、Sunbet客户端下载、Sunbet代理合作等业务。总之加油吧

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。