VIM中的替换命令使用
vim替換語法
:[range]s/{目標}/{替換}/[flag]
分隔符可以使用/,#,+三種,替換命令中默認s后面的第一個字符為分隔符
[range]
不寫range:默認為光標所在的行 .:光標所在的行 n:第n行 $:最后一行 'a:標記a所在的行(之前要使用ma做過標記) .+1:當前光標所在行的下面一行 $-1:倒數第二行(這里說明我們可以對某一行加減某個數值來取得相對的行) m,n:第m~n行 %:所有行(與 1,$ 等價) ?chapter?:從當前位置向上搜索,找到的第一個chapter所在的行(其中chapter可以是任何字符串或者正則表達式) /chapter/:從當前位置向下搜索,找到的第一個chapter所在的行(其中chapter可以是任何字符串或者正則表達式)注意:上面的所有用于range的表示方法都可以通過 +、- 操作來設置相對偏移量。
[flag]
c: confirm,每次替換前詢問;e: error, 不顯示錯誤;g: globle,不詢問,整行替換。如果不加g選項,則只替換每行的第一個匹配到的字符串;i: ignore,忽略大小寫。注意:這些選項可以合并使用,如 cgi 表示不區分大小寫,整行替換,替換前詢問
[正則表達]
數量
* 匹配0-任意個 \+ 匹配1-任意個 \? 匹配0-1個 \{n,m} 匹配n-m個 \{n} 匹配n個 \{n,} 匹配n-任意個 \{,m} 匹配0-m個位置
$ 匹配行尾 ^ 匹配行首 \< 匹配單詞詞首 \> 匹配單詞詞尾元字符
. 匹配任意字符 [abc] 匹配方括號中的任意一個字符,可用-表示字符范圍。如[a-z0-9]匹配小寫字母和數字 [^abc] 匹配除方括號中字符之外的任意字符 \d 匹配阿拉伯數字,等同于[0-9] \D 匹配阿拉伯數字之外的任意字符,等同于[^0-9] \x 匹配十六進制數字,等同于[0-9A-Fa-f] \X 匹配十六進制數字之外的任意字符,等同于[^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]注意:在正則式中以 \( 和 \) 括起來的正則表達式,在后面使用的時候可以用 \1 、\2 等變量來訪問
\( 和 \)中的內容。
vim替換命令詳解
vim在命令模式下
1、替換某一行字符
:s/abc/def 替換當前行第一個 abc 為 def(等效于:.s/abc/def/)
:s/abc/def/g 替換當前行所有的 abc 為 def(等效于:.s/abc/def/g)
:ns/abc/def 替換第n行第一個 abc 為 def
:$s/abc/def 替換最后一行第一個 abc 為 def
2、替換某幾行的字符
:.,+5s/abc/def 替換當前行及以下5行的第一個 abc 為 def
:.,+5s/abc/def/g 替換當前行及以下5行的所有的 abc 為 def
:1,.s/abc/def/g 替換第一行到當前行的所有的 abc 為 def
:m,ns/abc/def/g 替換第m行到第n行的所有的 abc 為 def
:1,$s/abc/def/g 替換第一行到最后一行的所有的 abc 為 def
3、替換所有的字符
:%s/abc/def 替換所有行的第一個 abc 為 def
:%s/abc/def/g 替換所有的 abc 為 def
正則表達
-
刪除以空格或TAB開頭到結尾的空行:
%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d -
把文中的所有字符串“abc……xyz”替換為“xyz……abc”可以有下列寫法
:%s/abc\(.*\)xyz/xyz\1abc/g
:%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g
總結
以上是生活随笔為你收集整理的VIM中的替换命令使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将ipynb文件转为.py文件
- 下一篇: 苹果cms试看无效与用户组权限设置教程