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

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

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

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

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

逐個確認

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

/let
搜索let
cwconst
esc把當前單詞變成const
跳
n跳過當前匹配
n再跳過當前匹配
n還跳過當前匹配
N往回跳
重做
跳錯了就跳回來
需要跳過的就跳過
需要替換的就替換
.
n
N
總結(jié)
我們學習了
替換
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)
[藍橋?qū)嶒灅?邀請碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)