查找进阶
回忆上节课内容🤔
- 实时搜索
:set incsearch - 大写小写
ignorecase -
查找当前单词
- * 正向按单词
- # 反向按单词
- g* 正向不按单词
- g# 反向不按单词
-
继续查找
- n 保持方向
- N改变方向
- 这个搜索可以做一些模糊匹配吗?
- 应该在哪里查询呢?
模式匹配
-
:h /可以找到关于搜索相关的帮助- 我们可以打开
patterns.txt - 找到关于比较简单的解释
03.9的超链接位置 - ctrl + ] 跳转文档
- 我们可以打开
行头行尾
/include匹配所有的include-
^意味着行开头/^include只匹配include在行头的/^#只匹配#在行头的
-
$意味着行结尾/the.$只匹配the.在行尾的/^End$匹配行头接着End,然后就是行尾的一行
:g/^$/d删除所有空行- 行头行尾和词头词尾很像
^本身就是跳到行头$本身就是跳到行尾
任意字符
.可以匹配任意字符,作为通配符来使用-
比如
/c.m- 第一个字符为
c - 第二个字符为
.就是任意字符 - 第三个字符为
m
- 第一个字符为
- 可以匹配
company中的com - 也可以匹配
camera中的cam
任意字符
ter.匹配ter后面加一个字符
-
如果想要正常匹配一个真的
.- 就要加上一个反斜杠
\ - 写做
\. -
使用反斜杠
\转义之后.就不再代表任意字符了- 比如搜索
/ter\.就是寻找ter.
- 就要加上一个反斜杠
更多字符
-
.代表任意字符/c.m匹配c和m中间有一个字符的情况/c..m匹配c和m中间有两个字符的情况/c...m匹配c和m中间有三个字符的情况
-
如果我想查找 c 和 m 中间有任意多个字符怎么办?
- 使用
*通配符 -
/a*意味着出现 0 到任意多个 a/c.*m在c和m中间出现 0 到任意多个.(任意字符)-
如果我希望出现任意多次的是小写字母怎么办?
/c[a-z]*m这样就是中间出现任意多个[a-z]小写字母了
- 使用
-
:g/^s*$/d删除搜有只有空格和tab的行s代表空格和tab
词头词尾
^和$分别代表着行头和行尾- 再回一下词头词尾
- 如果我想找出单词的开头结尾是某些字符的怎么办呢?
-
\<意味着单词开头/\<a意味着a开头的单词
-
\>意味着单词结尾/\>b意味着b结尾的单词
-
\<a[a-z]*\>b- 意味着以 a 开头,b 结尾,ab 之间可能有零到任意多个字符的单词
搜索历史
-
我们使用
*、#查找的时候就自动给加上这个词头词尾- 可以 * 之后
- /
- 配合上下方向键看到
- 曾经的搜索记录
推荐网站
- 推荐一个好玩的网站
- https://blog.robertelder.org/regular-expression-visualizer/
- 可以可视化的观察正则匹配的过程
总结
-
行头行尾
^意味着行开头$意味着行结尾
-
任意字符
.代表任意字符[a-z]代表任意小写字母
-
字符数量
*代表 0 到任意多个前字符+代表 1 到任意多个前字符?代表 0 或 1 个前字符
-
行头行尾
\<意味着单词开头\>意味着单词结尾
- 正则表达式的初步规则先介绍到这里
- 我们掌握了在 vi 中光标运动的各种方法
- 但如何编辑文本呢?🤪
- 下次再说 👋
[Github地址] (https://github.com/overmind1980/vimtutorial)
[Gitee地址] (https://gitee.com/overmind1980/vimtutorial)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)







浙公网安备 33010602011771号