2012-05-06 136 views
4

我抵制Vim,但現在已經放棄了。它通過黃油工作,像一個熱刀大文件。Vim替換換行

情況:我有一個很大的文本文件,我想在每行的開頭和結尾放一個管道字符。

問題:這些Vim的和其他變化沒有工作:

:%s/$/|\$| 
:%s/\r/|\r| 
:%s/$/|\r| 

我懷疑這是一些簡單的解決這個問題,但谷歌搜索和堆棧沒有幫助。

回答

6

你幾乎有它:

:%s/^\|$/|/g 

^\|$意味着開始或線結束。在Vim正則表達式中,|「或」管道被轉義。接下來是/|/g - 替換爲全球|

+0

謝謝Michael。該命令完美運作。 ..以及關於爲什麼命令起作用的附加評論非常有幫助。我有一種感覺,管道可能需要逃跑。 – Paulb

5

就個人而言,我更喜歡的的表現「與周圍字符管每行」

:%s/.*/|&| 

這一點,在我的大腦,比更直觀的「取代不存在的,虛構的字符在行'的開頭或末尾。

這也取決於較少的魔法字符(^$,引用\|這些都是笨拙的打字,而且容易出錯。(我的意思是,你還記得引用正則表達式|?你知道$\_$之間的區別?你是否知道一些,如果不是全部,取決於vim的'魔術配置'?))。

上述遭受這些都沒有。

+0

我花了一天時間思考這個問題。有趣。我也喜歡你的答案。善良的上帝......不止一個好的答案;)你的命令也有完美的結果。在這一點上,我不夠了解知道哪個更好。 – Paulb