Linux?vim全局替換的實(shí)現(xiàn)方法
Linux vim全局替換
Linux命令:vi全局替換方法
語法為 :[addr]s/源字符串/目的字符串/[option]
全局替換命令為::%s/源字符串/目的字符串/g
[addr]: 表示檢索范圍,省略時(shí)表示當(dāng)前行。
- 如:“1,20” :表示從第1行到20行;
“%”
:表示整個(gè)文件,同“1,$”;“. ,$”
:從當(dāng)前行到文件尾;
s :表示替換操作
[option] :表示操作類型
- 如:g 表示全局替換;
- c 表示進(jìn)行確認(rèn)
- p 表示替代結(jié)果逐行顯示(Ctrl + L恢復(fù)屏幕);
- 省略option時(shí)僅對(duì)每行第一個(gè)匹配串進(jìn)行替換;
- 如果在源字符串和目的字符串中出現(xiàn)特殊字符,需要用”\”轉(zhuǎn)義
1. 基本的替換
:s/vivian/sky/
替換當(dāng)前行第一個(gè) vivian 為 sky:s/vivian/sky/g
替換當(dāng)前行所有 vivian 為 sky:n,$s/vivian/sky/
替換第 n 行開始到最后一行中每一行的第一個(gè) vivian 為 sky:n,$s/vivian/sky/g
替換第 n 行開始到最后一行中每一行所有 vivian 為 sky
(n 為數(shù)字,若 n 為 .,表示從當(dāng)前行開始到最后一行)
:%s/vivian/sky/
(等同于 :g/vivian/s//sky/)替換每一行的第一個(gè) vivian 為 sky:%s/vivian/sky/g
(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky
2. 可以使用 # 作為分隔符,此時(shí)中間出現(xiàn)的 / 不會(huì)作為分隔符
:s#vivian/#sky/#
替換當(dāng)前行第一個(gè) vivian/ 為 sky/:%s+/oradata/apras/+/user01/apras1+
(使用+ 來替換 / ): /oradata/apras/替換成/user01/apras1/
vim替換和查找
基本查找和替換
在Vim中,可以使用 :substitute(:s)
命令來查找和替換文本。
要在Vim中運(yùn)行命令,必須處于 normal
模式,這是啟動(dòng)編輯器時(shí)的默認(rèn)模式。 要從其他任何模式返回 normal
模式,只需按 Esc
鍵。
替換命令的一般形式如下:
:[range]s/{pattern}/{string}/[flags] [count]
該命令在 [range]
中的每一行中搜索 {pattern}
,并將其替換為 {string}
。 是與命令 [count]
相乘的正整數(shù)。
如果未給出 [range]
和 [count]
,則僅替換當(dāng)前行中找到的 pattern
。 當(dāng)前行是光標(biāo)所在的行。
range確定范圍,不寫默認(rèn)為當(dāng)前行。
% # 表示整個(gè)文件內(nèi)容 . # 表示當(dāng)前行 $ # 表示最后一行 m,n # 表示從第m行到第n行 ,n # 表示從當(dāng)前行到第n行 n, # 表示從第n行到當(dāng)前行 n # 指定行 +n # 表示當(dāng)前行之后的n行
flags為替換標(biāo)志位,默認(rèn)為指定范圍內(nèi)的行的第一次匹配的位置,幫助文檔:h s_flags
常用標(biāo)志如下:
g: global,表示在指定范圍內(nèi)執(zhí)行全局操作,替換所有匹配項(xiàng) c: confirm,可以確認(rèn)或拒絕修改 n: number,報(bào)告匹配到的次數(shù),不替換,可用來查詢匹配次數(shù) i: 執(zhí)行不區(qū)分大小寫的替換 I: 執(zhí)行區(qū)分大小寫的替換 e: 防止替換失敗時(shí)顯示錯(cuò)誤消息
單行查找后替換
:s/{pattern}/{string}/gc
單行一個(gè)一個(gè)確認(rèn)替換:%s/{pattern}/{string}/gc
范圍整個(gè)頁(yè)面一個(gè)一個(gè)確認(rèn)替換:m,ns/str1/str2/
替換第 n 行開始到最后一行中每一行的第一個(gè) str1 為 str2
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
服務(wù)器Centos部署MySql并連接Navicat過程詳解
這篇文章主要介紹了服務(wù)器Centos部署MySql并連接Navicat過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07CentOS 5.4下的Memcache安裝步驟(Linux+Nginx+PHP+Memcached)
CentOS 5.4下的Memcache安裝步驟分享,想要配置Linux+Nginx+PHP+Memcached運(yùn)行環(huán)境的朋友可以參考下2012-02-02Linux 啟動(dòng)停止SpringBoot jar 程序部署Shell 腳本的方法
這篇文章主要介紹了Linux 啟動(dòng)停止SpringBoot jar 程序部署Shell 腳本的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04Linux下connect超時(shí)處理(總結(jié))
這篇文章主要介紹了Linux下connect超時(shí)處理(總結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04linux下shell常用腳本命令及有關(guān)知識(shí)
大家好,本篇文章主要講的是linux下shell常用腳本命令及有關(guān)知識(shí),感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12linux系統(tǒng)中設(shè)置定時(shí)任務(wù)的實(shí)現(xiàn)方式
在SpringBoot中設(shè)置定時(shí)任務(wù),需要使用@EnableScheduling注解和@Scheduled注解,配合cron表達(dá)式,在Linux系統(tǒng)中,使用crontab工具可設(shè)置系統(tǒng)級(jí)的定時(shí)任務(wù),首先需要?jiǎng)?chuàng)建執(zhí)行腳本,并賦予執(zhí)行權(quán)限,然后通過crontab?-e進(jìn)入編輯界面2024-10-10Linux下SFTP用戶權(quán)限設(shè)置條件及實(shí)現(xiàn)命令
SFTP賬號(hào)是基于SSH賬號(hào)的,其擁有的權(quán)限是比較大的,今天主要教大家如何進(jìn)行SFTP用戶權(quán)限設(shè)置,感興趣的你可不要錯(cuò)過了哈,希望本文知識(shí)可以幫助到你2013-02-02