vim字符串替換命令substitute是Vim常用命令之一(簡寫s)。
通過指定將被替換的源字符串以及目標(biāo)字符串,以及替換操作的執(zhí)行范圍等信息,可以指示Vim在特定范圍進(jìn)行字符串匹配和替換操作。
下面我們介紹vim把字符串替換成換行符的命令
在某些場景下,需要將當(dāng)前文件中的某些語句進(jìn)行換行顯示,以達(dá)到對文件排版等目的。
例如我們希望將如下的文本內(nèi)容進(jìn)行逐句按行顯示:
Vim教程網(wǎng)(https://vimjc.com)是由一個小女生苦苦支撐和維護(hù)的Vim相關(guān)網(wǎng)站。雖然一直沒什么人氣,但是她仍然堅持更新了6年的博文。目前已經(jīng)寫了100+篇vim命令和技巧相關(guān)的文章。希望能給有需要的同學(xué)提供一點點幫助。
如果您是一個Vim入門者,您最先想到的命令可能是在Vim命令行模式下執(zhí)行替換命令::%s/。/。\n/g。不過很遺憾,這條命令并不會如你所愿,并不能將當(dāng)前文件中的所有“?!碧鎿Q成換行的效果。
這里主要涉及到Vim下的換行符以及Vim替換命令。
首先,Vim替換命令substitute的語法格式為::[range]s/源字符串/目標(biāo)字符串/[option];其次,換行符在替換命令的 源字符串 和 目標(biāo)串 分別具有不同的含義。
替換命令的 源字符串 部分,用于指定搜索目標(biāo),要在替換命令的源字符串部分匹配行尾,需要使用 \n;
替換命令的 目標(biāo)字符串 部分,用于指定要替換出的目標(biāo),如果要通過替換命令插入新行,需要使用 \r。
因此,對于本文舉例的文本使用以下Vim命令?
:%s/。/。\r/g?
可對其實現(xiàn)逐句按行顯示的效果,如下所示。
Vim教程網(wǎng)(https://vimjc.com)是由一個女生苦苦支撐和維護(hù)的Vim相關(guān)網(wǎng)站。
雖然一直沒什么人氣,但是她仍然堅持更新了6年的博文。
目前已經(jīng)寫了100+篇Vim命令和技巧相關(guān)的文章。
希望能給有需要的同學(xué)提供一點點幫助。
反之,如果需要將上面逐句按行顯示的文本轉(zhuǎn)換成本文開頭描述的文本,可以使用下面的Vim命令
:%s/。\n/。/g。
vim替換新行
一句話總結(jié)上述內(nèi)容就是:對于Vim替換命令s來說,如果要vim替換掉換行符,需使用 \n 作為搜索串;如果要vim替換字符串生成新行,請使用 \r 作為目標(biāo)串。
vim刪除換行
可以用以下命令刪除換行符:
:%s/\n//g
可以用以下命令刪除DOS文件中的回車符“^M”:
:%s/\r//g
可以用以下命令轉(zhuǎn)換DOS回車符“^M”為真正的換行符:
:%s/\r/\r/g
可以用以下命令刪除行尾的空格以及DOS回車符。它沒有使用“/”字符作為替換命令各個參數(shù)間的分隔符,而是使用了“#”字符。命令還使用了“\?”正則表達(dá)式,用來匹配它前面出現(xiàn)的字符0次或1次。
:%s#\s*\r\?$##
可以用以下命令刪除三行空行:
:%s/^\n\{3}//
可以用以下命令將連續(xù)的兩個空行替換成一個空行:
:%s/\n\n/\r/g
vim刪除空行
:g/^s*$/d
簡單解釋一下:
g :全區(qū)命令
/ :分隔符
^s*$ :匹配空行,其中^表示行首,s表示空字符,包括空格和制表符,*重復(fù)0到n個前面的字符,$表示行尾。連起來就是匹配只有空字符的行,也就是空行。
/d :刪除該行
vim刪除行尾空格:
:%s= *$==
該命令全局查找文本文件的行尾空格并刪除。
解釋:
%s全局查找替換
=為%s命令的分隔符,如果把=換為/,則該命令可以寫為:%s/ *$//
” *$”, $表示行尾,*匹配前面0個到n個字符,*前面是空格,因此此正則表達(dá)式匹配行尾的0個到n個字符。
==,分隔符沒有中間沒有內(nèi)容,表示刪除匹配空格, 在這里表示刪除行尾空格。
vim換行方式
在早期的打印機(jī)時代,開始新的一行要占用兩個字符的時間。如果到了一行的結(jié)尾處,你要快速回到新的一行的開頭,需要打印針頭在紙面上飛快地掠過,常常會在紙面上留下污點。解決這個問題的辦法就是,用兩個字符:一個字符<Return>來移到第一列,另一個字符<Line feed>來新增一行。計算機(jī)產(chǎn)生以后,存儲較為昂貴,在如何解決回車換行這個老問題上,人們產(chǎn)生了不同的意見。UNIX人認(rèn)為在到達(dá)一行的結(jié)尾時新增一行<Line feed> (LF),而Mac人則認(rèn)同<Return> (CR)的解決辦法,MS則堅持古老的<Return><Line feed> (CRLF)的方法。這就意味著如果你將一個文件從一個系統(tǒng)轉(zhuǎn)移到另一個系統(tǒng),就面臨著回車換行的問題。而Vim編輯器則會自動的認(rèn)出這種文件格式方面的區(qū)別,并做出相應(yīng)處理。