vim字符串替換命令substitute是Vim常用命令之一(簡寫s)撤卢。
通過指定將被替換的源字符串以及目標(biāo)字符串环凿,以及替換操作的執(zhí)行范圍等信息,可以指示Vim在特定范圍進行字符串匹配和替換操作放吩。
下面我們介紹vim把字符串替換成換行符的命令
在某些場景下智听,需要將當(dāng)前文件中的某些語句進行換行顯示,以達到對文件排版等目的渡紫。
例如我們希望將如下的文本內(nèi)容進行逐句按行顯示:
Vim教程網(wǎng)(https://vimjc.com)是由一個小女生苦苦支撐和維護的Vim相關(guān)網(wǎng)站到推。雖然一直沒什么人氣,但是她仍然堅持更新了6年的博文惕澎。目前已經(jīng)寫了100+篇vim命令和技巧相關(guān)的文章莉测。希望能給有需要的同學(xué)提供一點點幫助。
如果您是一個Vim入門者唧喉,您最先想到的命令可能是在Vim命令行模式下執(zhí)行替換命令::%s/捣卤。/忍抽。\n/g。不過很遺憾董朝,這條命令并不會如你所愿梯找,并不能將當(dāng)前文件中的所有“∫娼В”替換成換行的效果锈锤。
這里主要涉及到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)是由一個女生苦苦支撐和維護的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ù)間的分隔符,而是使用了“#”字符绒北。命令還使用了“\?”正則表達式黎侈,用來匹配它前面出現(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個字符巷燥,*前面是空格赡盘,因此此正則表達式匹配行尾的0個到n個字符。
==矾湃,分隔符沒有中間沒有內(nèi)容亡脑,表示刪除匹配空格, 在這里表示刪除行尾空格。
vim換行方式
在早期的打印機時代邀跃,開始新的一行要占用兩個字符的時間。如果到了一行的結(jié)尾處蛙紫,你要快速回到新的一行的開頭拍屑,需要打印針頭在紙面上飛快地掠過,常常會在紙面上留下污點坑傅。解決這個問題的辦法就是僵驰,用兩個字符:一個字符<Return>來移到第一列,另一個字符<Line feed>來新增一行唁毒。計算機產(chǎn)生以后蒜茴,存儲較為昂貴,在如何解決回車換行這個老問題上浆西,人們產(chǎn)生了不同的意見粉私。UNIX人認為在到達一行的結(jié)尾時新增一行<Line feed> (LF),而Mac人則認同<Return> (CR)的解決辦法近零,MS則堅持古老的<Return><Line feed> (CRLF)的方法诺核。這就意味著如果你將一個文件從一個系統(tǒng)轉(zhuǎn)移到另一個系統(tǒng)抄肖,就面臨著回車換行的問題。而Vim編輯器則會自動的認出這種文件格式方面的區(qū)別窖杀,并做出相應(yīng)處理漓摩。