查找細節
回憶上節課內容🤔
-
我們溫習了關於搜索的相關內容
- /正向,?反向
- n保持方向,N改變方向
-
可以設置
- 是否忽略大寫小寫
- 是否從頭開始查找
- 是否高亮顯示
-
還有一些正則表達式的使用方法
- 行頭行尾
^$ - 詞頭詞尾
\<\> - 字符列表
[a-z]、[A-Za-z_] - 包含回車
one\_stwo
- 行頭行尾
-
數量
- 數量
*、?、= - 具體數量
\{1,3} - 非貪婪
\{-}
- 數量
-
不以什么為開頭結尾
- 不以什么為開頭
\@<! - 不以什么為結尾
\@!
- 不以什么為開頭
- 查找出來怎么替換呢?🤔
查找手冊📕
:h :s

:s命令 對應的是substitude替換- 我們先做個實驗環境
:r !ls -lah
具體操作

- 3G跳轉到第三行
-
:s/shiyanlou/oeasy- 把當前行的
shiyanlou換成oeasy
- 把當前行的
-
我想在同一行里面再換下一個
- 就可以:⬆️
- 找到上一條命令
- 然后再回車執行
- 我想把下一行的
2個oeasy一把都換掉 - 這就要加
flag
添加flag
- 哪個
flag呢? - 我們可以在
:h :s的時候,使用/flag - 也可以
:h s_flags

-
我們這次的flag是
g- 換一行
:s/shiyanlou/oeasy/g- 可以把這一行所有的
shiyanlou換成oeasy - 我理解這個g指的是行內所有的
- 如果我想默認g-flag就開着呢?
默認g-flag

-
如果
:se gdefault- 可以設置
g為默認
- 可以設置
- 但是這個只能替換一行
- 我想在某些行的范圍內替換怎么辦呢?
- 加
range
添加range
-
精准控制
:3,8s/shiyanlou/oeasy/g- 只替換3-8行的
- 而且開了
gflag - 3,8行
- 每行的都全部替換
-
全部替換
%相當於1,$:%s/shiyanlou/oeasy/g:1,$s/shiyanlou/oeasy/g- 就會把所有的都替換了
- 但是這個一把都替換了
- 有的時候我還是想具體一個個確認怎么辦?

逐個確認

-
:h s_flags找到一個cc的意思是confirm確認
-
:%s/shiyanlou/oeasy/gc- 行里的都替換
- 每一個都需要確認
-
每個逐個確認
- y替換當前匹配
- l替換當前匹配,並退出
- n跳過當前匹配
- esc直接退出
- q直接退出
- a全部替換
- 體會一下
a的快樂😛
小技巧

-
/let- 搜索let
-
cwconstesc- 把當前單詞變成const
-
跳
- n跳過當前匹配
- n再跳過當前匹配
- n還跳過當前匹配
- N往回跳
-
重做
-
.
- 需要替換的就替換
-
n
- 需要跳過的就跳過
-
N
- 跳錯了就跳回來
-
總結
-
我們學習了
- 替換
substitude
- 替換
-
替換單行
:s/shiyanlou/oeasy
-
加上
range:3,5s/shiyanlou/oeasy:%s/shiyanlou/oeasy
-
加上
flag:3,5s/shiyanlou/oeasy/g多個替換:3,5s/shiyanlou/oeasy/gc多個替換且逐個確認
- 替換還是很方便的
- 但是我想替換中使用正則表達式
- 可以么?🤔
- 下次再說 👋
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[藍橋實驗樓 邀請碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)
