VIM 的強大可能很多人有耳聞過,
不過就連自己已經使用很久了,卻都只是用些基本功能,
並沒有很仔細的去研究它的強大。
今天要跟大家簡單的介紹一下 VIM 的近街搜尋取代功能。
VIM 在搜尋取代的功能裡,其實是支援一些正規表示式的,
詳細的使用方式可以在 VIM 命令模式下輸入 ":h \w" 來查詢,
這次要講的搜尋取代功能,也可以透過 ":h substitude" 來查詢說明,
基本的使用方式是 ":%s/要搜尋的/要取代的/",
接下來要簡單的介紹一個用法,
Down: X:198.1250 Y:375.5859 count:1 time:139219 Move: X:215.9375 Y:376.3672 count:2 time:140458 Move: X:223.7500 Y:376.3672 count:3 time:140478 Move: X:234.3750 Y:376.3672 count:4 time:140497 Move: X:252.5000 Y:376.3672 count:5 time:140515 Move: X:269.3750 Y:375.5859 count:6 time:140535 Move: X:277.5000 Y:376.3672 count:7 time:140561 Move: X:287.8125 Y:376.3672 count:8 time:140578 Move: X:304.6875 Y:376.3672 count:9 time:140594 |
這是一個有座標資訊與時間的一份文件,
我現在想要把所有座標資訊,只保留小數點以後的資訊,
意思就是去除掉整數部分,並且在整數部分補上 0,
我們先取代 X 的部分,在 VIM 命令模式下輸入 ":%s/X:\w\w\w/0/",
其中上方 \w 代表正圭表示式裡的 [A-Za-z0-9_] ,
所以\w\w\w代表的就是三位數的整數部分,
Down: 0.1250 Y:375.5859 count:1 time:139219 Move: 0.9375 Y:376.3672 count:2 time:140458 Move: 0.7500 Y:376.3672 count:3 time:140478 Move: 0.3750 Y:376.3672 count:4 time:140497 Move: 0.5000 Y:376.3672 count:5 time:140515 Move: 0.3750 Y:375.5859 count:6 time:140535 Move: 0.5000 Y:376.3672 count:7 time:140561 Move: 0.8125 Y:376.3672 count:8 time:140578 Move: 0.6875 Y:376.3672 count:9 time:140594 |
另外取代 Y 的部分,在 VIM 命令模式下輸入 ":%s/Y:\w\w\w/0/",
Down: 0.1250 0.5859 count:1 time:139219 Move: 0.9375 0.3672 count:2 time:140458 Move: 0.7500 0.3672 count:3 time:140478 Move: 0.3750 0.3672 count:4 time:140497 Move: 0.5000 0.3672 count:5 time:140515 Move: 0.3750 0.5859 count:6 time:140535 Move: 0.5000 0.3672 count:7 time:140561 Move: 0.8125 0.3672 count:8 time:140578 Move: 0.6875 0.3672 count:9 time:140594 |
完成!
另外特別列出一些比較常用的各種正規表示式:
\d
匹配一個數字字元。等價於[0-9]。
\D
匹配一個非數字字元。等價於[^0-9]。
\f
匹配一個換頁符。等價於\x0c和\cL。
\n
匹配一個換行符。等價於\x0a和\cJ。
\r
匹配一個回車符。等價於\x0d和\cM。
\s
匹配任何空白字元,包括空格、製表符、換頁符等等。等價於
[ \f\n\r\t\v]。
\S
匹配任何非空白字元。等價於[^ \f\n\r\t\v]。
\t
匹配一個製表符。等價於\x09和\cI。
\v
匹配一個垂直製表符。等價於\x0b和\cK。
\w
匹配包括下劃線的任何單詞字元。等價於「
[A-Za-z0-9_]
」。 \W
匹配任何非單詞字元。等價於「
[^A-Za-z0-9_]
」。
沒有留言:
張貼留言