show: step
version: 1.0
enable_checker: true
查找細節(jié)
回憶上節(jié)課內容??
- 我們溫習了關于搜索的相關內容
- <kbd>/</kbd>正向,<kbd>?</kbd>反向
- <kbd>n</kbd>保持方向,<kbd>N</kbd>改變方向
- 可以設置
- 是否忽略大寫小寫
- 是否從頭開始查找
- 是否高亮顯示
- 還有一些正則表達式的使用方法
- 行頭行尾
^$
- 詞頭詞尾
<>
- 字符列表
[a-z]
、[A-Za-z_]
- 包含回車
one\_stwo
- 行頭行尾
- 數(shù)量
- 數(shù)量
*
、?
、=
- 具體數(shù)量
{1,3}
- 非貪婪
{-}
- 數(shù)量
- 不以什么為開頭結尾
- 不以什么為開頭
@<!
- 不以什么為結尾
@!
- 不以什么為開頭
- 查找出來怎么替換呢???
查找手冊??
:h :s
:s
命令 對應的是substitude
替換- 我們先做個實驗環(huán)境
:r !ls -lah
具體操作
- 3G跳轉到第三行
:s/shiyanlou/oeasy
- 把當前行的
shiyanlou
換成oeasy
- 把當前行的
- 我想在同一行里面再換下一個
- 就可以<kbd>:</kbd><kbd>??</kbd>
- 找到上一條命令
- 然后再回車執(zhí)行
- 我想把下一行的
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行的
- 而且開了
g
flag - 3,8行
- 每行的都全部替換
-
全部替換
%
相當于1,$
:%s/shiyanlou/oeasy/g
:1,$s/shiyanlou/oeasy/g
- 就會把所有的都替換了
- 但是這個一把都替換了
- 有的時候我還是想具體一個個確認怎么辦?
逐個確認
:h s_flags
找到一個c
c
的意思是confirm
確認
:%s/shiyanlou/oeasy/gc
- 行里的都替換
- 每一個都需要確認
- 每個逐個確認
- <kbd>y</kbd>替換當前匹配
- <kbd>l</kbd>替換當前匹配,并退出
- <kbd>n</kbd>跳過當前匹配
- <kbd>esc</kbd>直接退出
- <kbd>q</kbd>直接退出
- <kbd>a</kbd>全部替換
- 體會一下
a
的快樂??
小技巧
/let
- 搜索let
cwconst
<kbd>esc</kbd>- 把當前單詞變成const
- 跳
- <kbd>n</kbd>跳過當前匹配
- <kbd>n</kbd>再跳過當前匹配
- <kbd>n</kbd>還跳過當前匹配
- <kbd>N</kbd>往回跳
- 重做
- <kbd>.</kbd>
- 需要替換的就替換
- <kbd>n</kbd>
- 需要跳過的就跳過
- <kbd>N</kbd>
- 跳錯了就跳回來
- <kbd>.</kbd>
總結
- 我們學習了
- 替換
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)
本文摘自 :https://blog.51cto.com/u