剛學到一個東西
如果以vim開啟某檔案時出現類似以下亂碼
忽然
在vim裡輸入
:set enc=utf8
:%s/&#\([0-9]\+\);/\=nr2char(submatch(1))/g
就可以把它轉回中文"突然"兩字
比起:%s/&#\([0-9]\+\);/\=nr2char(submatch(1))/g
也許:%s'&#\([0-9]\+\);'\=nr2char(submatch(1))'g更好閱讀
:%s'第一部份'第二部份'g
上面的意思是搜尋&#\([0-9]\+\);
, 以
&#開頭的至少一個數字
注意, \(和\)不是要被搜尋字串的一部分, 而是有特殊意義, 讓後面的submatch用
[0-9]\+的\+
如果不加
\, 那就是當一般字元+
而我們這裡要用regexp, 因此是\+
接著是第二部份\=nr2char(submatch(1))
因為要做特殊處理, 所以一開始要\=
而submatch(1)是指第一部份括起來的內容
最後, nr2char把編碼的數字換成字元
搞定^^
No comments:
Post a Comment