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 下搜索的基本功效,若是你以为这是它的所有搜索功效,那真是图样图森破。接下来,我们来实验一下更壮大的搜索功效。
先给出搜索花样:
/\<search_string>/>
这里,\<
示意字符串最先,/>
示意字符串竣事,中心的就是需要搜索的字符串表达式。
与前面的示例一样,使用 n
或 N
来导航搜索效果。
中心的字符串表达式,不仅支持直接输入关键词,还支持使用通配符。例如,我们要搜索以 python-
开头的字符串,可以使用 python*
。这里 *
示意匹配随便字符。
/\<python*/>
搜索竣事后,Vim 会默认将光标放在匹配的关键词的起始字符处。
不喜欢光标的默认定位?没关系,Vim 允许我们更改光标定位的默认字符位置。
/python/e
这里,e
的作用是将光标定位到匹配关键词的末尾字符。
不仅如此,使用以下下令模式,你还可以将光标定位在搜索效果的下方或上方。
/<search_string>/+2
or
/<search_string>/-3
你也可以从搜索匹配效果的开头/末端偏移光标。例如,以下下令将光标定位在开头旁边的3个字符处。
/<search_string>/s+3
/<search_string>/b+3
这里,s
示意开头,+3
示意从开头最先的第 3 个字符。b
也代表最先(begin),它的功效类似于 s
。从截图中也可以看出,Vim 会自动将 b
翻译为 s
。
若是有兴趣从搜索匹配效果的末尾举行偏移,请使用 e
(end)。
/<search_string/e-2
下面是对文本文件执行搜索的另一种很棒的方式。
:%s/<search_pattern>//gn
这条下令详细有啥高峻上的作用?我们这里先卖个关子,请继续往下读。若是你想学习更多 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
简朴吧?我们再看看下面这条下令。
:%s/python/Python3/gc
可以看出来,它在底部询问你是否要举行替换操作。这时,你可以选择一些操作。那这几个是代表什么意思呢?我们一个个来看。
- y - 允许执行更改。
- n - 克制执行更改。
- a - 替换所有。
- q - 退出义务。
- l - 只需替换这种情形。然后,退出。
- ^E(Ctrl + E) - 向上转动屏幕
- ^Y(Ctrl + Y) - 向下转动屏幕
接下来,我们来试试局限这一个域。实在,我们在前面的例子里,已经使用了 %
局限(对整个文件局限)。
若是我们不想在整个文件局限举行查找替换,若是我们只想在某几个特定行举行这种操作,需要怎么做?我们可以接纳类似于以下下令花样:
:200,250 s/python/Python3/g
执行完以上操作,Vim 会将第 200 行最先并在第 250 行竣事的所有 python
替换为 Python3
。
此功效不仅限于一个词,还可以完成对多个关键词的替换。它的下令花样如下:
:%s/<search_term_1>\|<search_term_2>\|<search_term_3>/<replace_string>/g
好比,让我们想要将文本中所有 python
和 py
更改为 Python3
。
:%s/python\|py/Python3/g
区分大小写
本文前面提到的所有替换操作都是区分大小写的。例如,Python
,python
,PYTHON
等都是差别的。
若是你要忽略大小写,可以在搜索字符串后面加上一个 \c
,如下:
/<search_term>\c
:%s/<search_term>\c/<replace_term>/g
但这个设置是临时性的,Vim 关闭之后就会失效。若是你想一劳永逸,也可以从 vimrc文件
直接设置不区分大小写。
set ignorecase
另有一个有趣的做法:智能大小写模式。
set smartcase
ignorecase
将强制 Vim 忽略大小写。然则,若是搜索关键词中只要有大写字母,smartcase
将使 Vim 再次变为区分大小写。
注重:若是要启用 smartcase
,首先需要设置 ignorecase
。
结论
Vim 可以辅助你做许多事情,多加耐心地演习,相信你会越来越喜好这款古老的神器。
看完的都是真爱,点个赞再走呗?您的「三连」就是良许连续创作的最大动力!
- 关注原创民众号「良许Linux」,第一时间获取最新Linux干货!
- 民众号后台回复【资料】【面试】【简历】获取精选一线大厂面试、自我提升、简历等资料。
- 关注我的博客:lxlinux.net
诚信在线赌博正规吗(现:阳光在线官网)现已开放诚信在线手机版、诚信在线电脑客户端下载。诚信在线娱乐游戏公平、公开、公正,用实力赢取信誉。
进入sunbet官网手机欢迎您!Sunbet 申博提供申博开户(sunbet开户)、SunbetAPP下载、Sunbet客户端下载、Sunbet代理合作等业务。总之加油吧
欧博亚洲客户端欢迎进入欧博亚洲客户端(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。很独特呢