Vim中查找替換及正則表達式的使用詳解
前言
正則表達式是文本處理領域中的一個強大的工具,它可以讓文本處理的能力呈指數(shù)級的提升,如果一款文本編輯器不支持正則表達式,那么它就算不上是一個現(xiàn)代化的編輯器,這絕非虛言。
下面這篇文章主要跟大家介紹了關于Vim查找替換及正則表達式使用的相關內(nèi)容,分享出來供大家參考學習,下面來一起看看吧。
簡單替換表達式
:[range]s/from/to/[flags]
range:搜索范圍,如果沒有指定范圍,則作用于但前行。
- :1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之間搜索替換;
- :10s/from/to/ 表示只在第10行搜索替換;
- :%s/from/to/ 表示在所有行中搜索替換;
- 1,$s/from/to/ 同上。
flags 有如下四個選項:
- c confirm,每次替換前詢問;
- e error, 不顯示錯誤;
- g globle,不詢問,整行替換。如果不加g選項,則只替換每行的第一個匹配到的字符串;
- i ignore,忽略大小寫。
這些選項可以合并使用,如cgi表示不區(qū)分大小寫,整行替換,替換前詢問。
正則表達式
1、元字符
元字符
| 元字符 | 說明 |
|---|---|
| . | 匹配任意字符 |
| [abc] | 匹配方括號中的任意一個字符,可用-表示字符范圍。如[a-z0-9]匹配小寫字母和數(shù)字 |
| [^abc] | 匹配除方括號中字符之外的任意字符 |
| \d | 匹配阿拉伯數(shù)字,等同于[0-9] |
| \D | 匹配阿拉伯數(shù)字之外的任意字符,等同于[^0-9] |
| \x | 匹配十六進制數(shù)字,等同于[0-9A-Fa-f] |
| \X | 匹配十六進制數(shù)字之外的任意字符,等同于[^0-9A-Fa-f] |
| \l | 匹配[a-z] |
| \L | 匹配[^a-z] |
| \u | 匹配[A-Z] |
| \U | 匹配[^A-Z] |
| \w | 匹配單詞字母,等同于[0-9A-Za-z_] |
| \W | 匹配單詞字母之外的任意字符,等同于[^0-9A-Za-z_] |
| \t | 匹配<TAB>字符 |
| \s | 匹配空白字符,等同于[\t] |
| \S | 匹配非空白字符,等同于[^\t] |
一些普通字符需轉(zhuǎn)意
| 元字符 | 說明 |
|---|---|
| \* | 匹配* 字符 |
| . | 匹配. 字符 |
| \/ | 匹配 / 字符 |
| \ | 匹配 \ 字符 |
| \[ | 匹配 [ 字符 |
| \] | 匹配 ] 字符 |
表示數(shù)量的元字符
| 元字符 | 說明 |
|---|---|
| * | 匹配0-任意個 |
| \+ | 匹配1-任意個 |
| \? | 匹配0-1個 |
| \{n,m} | 匹配n-m個 |
| \{n} | 匹配n個 |
| \{n,} | 匹配n-任意個 |
| \{,m} | 匹配0-m個 |
表示位置的元字符
| 元字符 | 說明 |
|---|---|
| $ | 匹配行尾 |
| ^ | 匹配行首 |
| \< | 匹配單詞詞首 |
| \> | 匹配單詞詞尾 |
2、替換變量
在正則式中以\(和\)括起來的正則表達式,在后面使用的時候可以用\1、\2等變量來訪問\(和\)中的內(nèi)容。
例子
- 刪除行尾空格::%s/\s+$//g
- 刪除行首多余空格:%s/^\s*// 或者 %s/^ *//
- 刪除沒有內(nèi)容的空行:%s/^$// 或者 g/^$/d
- 刪除包含有空格組成的空行:%s/^\s*$// 或者 g/^\s*$/d
- 刪除以空格或TAB開頭到結尾的空行:%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d
- 把文中的所有字符串“abc……xyz”替換為“xyz……abc”可以有下列寫法
:%s/abc\(.*\)xyz/xyz\1abc/g :%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Apache下通過shell腳本提交網(wǎng)站404死鏈的方法
這篇文章主要介紹了Apache下通過shell腳本提交網(wǎng)站404死鏈,需要的朋友可以參考下2017-09-09
淺談Linux系統(tǒng)中的異常堆棧跟蹤的簡單實現(xiàn)
下面小編就為大家?guī)硪黄獪\談Linux系統(tǒng)中的異常堆棧跟蹤的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
Linux使用nload監(jiān)控網(wǎng)絡流量的方法
Linux 中的 nload 命令是一個用于實時監(jiān)控網(wǎng)絡流量的工具,它提供了傳入和傳出流量的可視化表示,幫助用戶一目了然地了解網(wǎng)絡活動,本文給大家介紹了Linux使用nload監(jiān)控網(wǎng)絡流量的方法,需要的朋友可以參考下2025-02-02
Linux下高并發(fā)socket最大連接數(shù)所受的各種限制(詳解)
下面小編就為大家?guī)硪黄狶inux下高并發(fā)socket最大連接數(shù)所受的各種限制(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11

