在VI中刪除行尾的換行符

2021-07-27 04:17:44 字數 1380 閱讀 3750

在vi中,如果要刪除行尾的換行符,可以用如下方法

第一種情況:只刪除單行

如有檔案如下:

[fanzf@swserver ~/tmp]$ cat names.tmp 

101     nate    h.

102     john    m.

104     cassy   t.

106     mary    l.

107     isaac   c.

要將第一行和第二行合併,在命令列模式下可將游標移動到第一行,輸入j(john,大寫)即可;另外一種辦法也是在命令列模式下,游標也移動到第一行,輸入命令  :s//n//

執行效果如下

101     nate    h.  102 john    m.

104     cassy   t.

106     mary    l.

107     isaac   c.

~第二種情況:刪除所有換行符

在命令列模式下,游標也移動到第一行,輸入命令  :%s//n//g

效果如下

101     nate    h.102   john    m.g104  cassy   t.g106  mary    l.g107  isaac   c.g

在以上命令中,

s 是替換,

/ 是間隔符,

/n 是換行負,即要替換的原串, 

/n後面的//,是要指替換成的串,在這裡表示無

兩條刪除命令的區別在於前面有無 % ,  有%則在全文中替換

後面的g,是在整行中替換,由於每行最多只有乙個換行,所以g在這裡沒實際意義

摘自:在命令狀態下,在某一行上按"j"鍵將join下一行

j合併當前行和下一行

合併多行可以用.重複上一j命令或用nj合併從當前行起的n行

為什麼vi在文字的每行末尾都加上換行\n?

答案:因為文字每行末尾都應該加上換行。參考:

根據2023年iso發布的c語言標準c11(iso/iec 9899:2011)和c++標準c++11(iso/iec 14882:2011),每行末尾都應該換行。

windows換行為\r\n,unix為\n,mac為\r。

vi:新建檔案每行末尾都有\n。

二進位制檔案最後不需要換行,所以vi使用以下設定時檔案末尾不會加上換行。

set binary

set noeol

但是不建議這樣使用,因為set binary與set softtabstop衝突

vi如何顯示\n:

set binary會把\r顯示成ᶺm,而不顯示\n。注:~/.vimrc中set binary有效,vi開啟以後set binary無效。

set list會在每一行尾顯示乙個$,與\r或者\n都無關。

在VI中刪除行尾的換行符

在vi中,如果要刪除行尾的換行符,可以用如下方法 第一種情況 只刪除單行 如有檔案如下 fanzf swserver tmp cat names.tmp 101 nate h.102 john m.104 cassy t.106 mary l.107 isaac c.要將第一行和第二行合併,在命令列...

vi中換行符的替換問題

最近在公司用shell處理一些資料,發現vi的也能做一些簡單的指令碼的工作,常見的就是替換了。很多時候需要對換行符進行處理,無論是把某個符號換成換行符也好,還是把換行符換成其他符號。這裡面就有個方向的問題了,而vi中兩個方向的換行符是不一樣的。如果把a換成換行符 s a m g其中 m這個需要先ct...

換行符在textarea div pre中的區別

關於換行符,網上有許多說法,ie早期的瀏覽器是 r n,有的瀏覽器是 r,但很難找到確切的版本號。經過本人正則匹配測試,chrome firefox safari ie11都是 n,因此保險起見,若對換行符進行正則匹配,應當同時匹配 n,r以及 r n.值得一提的是 n r和 r n都有換一行的效果...