show: step
version: 1.0
enable_checker: true
查找細(xì)節(jié)
回憶上節(jié)課內(nèi)容??
- 我們溫習(xí)了關(guān)于搜索的相關(guān)內(nèi)容
- <kbd>/</kbd>正向,<kbd>?</kbd>反向
- <kbd>n</kbd>保持方向,<kbd>N</kbd>改變方向
- 可以設(shè)置
- 是否忽略大寫小寫
- 是否從頭開始查找
- 是否高亮顯示
- 還有一些正則表達(dá)式的使用方法
- 行頭行尾
^$
- 詞頭詞尾
<>
- 字符列表
[a-z]
、[A-Za-z_]
- 包含回車
one\_stwo
- 行頭行尾
- 數(shù)量
- 數(shù)量
*
、?
、=
- 具體數(shù)量
{1,3}
- 非貪婪
{-}
- 數(shù)量
- 不以什么為開頭結(jié)尾
- 不以什么為開頭
@<!
- 不以什么為結(jié)尾
@!
- 不以什么為開頭
- 查找出來怎么替換呢???
查找手冊(cè)??
:h :s
:s
命令 對(duì)應(yīng)的是substitude
替換- 我們先做個(gè)實(shí)驗(yàn)環(huán)境
:r !ls -lah
具體操作
- 3G跳轉(zhuǎn)到第三行
:s/shiyanlou/oeasy
- 把當(dāng)前行的
shiyanlou
換成oeasy
- 把當(dāng)前行的
- 我想在同一行里面再換下一個(gè)
- 就可以<kbd>:</kbd><kbd>??</kbd>
- 找到上一條命令
- 然后再回車執(zhí)行
- 我想把下一行的
2
個(gè)oeasy
一把都換掉 - 這就要加
flag
添加flag
- 哪個(gè)
flag
呢? - 我們可以在
:h :s
的時(shí)候,使用/flag
- 也可以
:h s_flags
- 我們這次的flag是
g
- 換一行
:s/shiyanlou/oeasy/g
- 可以把這一行所有的
shiyanlou
換成oeasy
- 我理解這個(gè)g指的是行內(nèi)所有的
- 如果我想默認(rèn)g-flag就開著呢?
默認(rèn)g-flag
- 如果
:se gdefault
- 可以設(shè)置
g
為默認(rèn)
- 可以設(shè)置
- 但是這個(gè)只能替換一行
- 我想在某些行的范圍內(nèi)替換怎么辦呢?
- 加
range
添加range
- 精準(zhǔn)控制
:3,8s/shiyanlou/oeasy/g
- 只替換3-8行的
- 而且開了
g
flag - 3,8行
- 每行的都全部替換
-
全部替換
%
相當(dāng)于1,$
:%s/shiyanlou/oeasy/g
:1,$s/shiyanlou/oeasy/g
- 就會(huì)把所有的都替換了
- 但是這個(gè)一把都替換了
- 有的時(shí)候我還是想具體一個(gè)個(gè)確認(rèn)怎么辦?
逐個(gè)確認(rèn)
:h s_flags
找到一個(gè)c
c
的意思是confirm
確認(rèn)
:%s/shiyanlou/oeasy/gc
- 行里的都替換
- 每一個(gè)都需要確認(rèn)
- 每個(gè)逐個(gè)確認(rèn)
- <kbd>y</kbd>替換當(dāng)前匹配
- <kbd>l</kbd>替換當(dāng)前匹配,并退出
- <kbd>n</kbd>跳過當(dāng)前匹配
- <kbd>esc</kbd>直接退出
- <kbd>q</kbd>直接退出
- <kbd>a</kbd>全部替換
- 體會(huì)一下
a
的快樂??
小技巧
/let
- 搜索let
cwconst
<kbd>esc</kbd>- 把當(dāng)前單詞變成const
- 跳
- <kbd>n</kbd>跳過當(dāng)前匹配
- <kbd>n</kbd>再跳過當(dāng)前匹配
- <kbd>n</kbd>還跳過當(dāng)前匹配
- <kbd>N</kbd>往回跳
- 重做
- <kbd>.</kbd>
- 需要替換的就替換
- <kbd>n</kbd>
- 需要跳過的就跳過
- <kbd>N</kbd>
- 跳錯(cuò)了就跳回來
- <kbd>.</kbd>
總結(jié)
- 我們學(xué)習(xí)了
- 替換
substitude
- 替換
- 替換單行
:s/shiyanlou/oeasy
- 加上
range
:3,5s/shiyanlou/oeasy
:%s/shiyanlou/oeasy
- 加上
flag
:3,5s/shiyanlou/oeasy/g
多個(gè)替換:3,5s/shiyanlou/oeasy/gc
多個(gè)替換且逐個(gè)確認(rèn)
- 替換還是很方便的
- 但是我想替換中使用正則表達(dá)式
- 可以么???
- 下次再說 ??
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[藍(lán)橋?qū)嶒?yàn)樓 邀請(qǐng)碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)
本文摘自 :https://blog.51cto.com/u