原文:
換行方式
在早期的印表機時代,開始新的一行要占用兩個字元的時間。如果到了一行的結尾處,你要快速回到新的一行的開頭,需要列印針頭在紙面上飛快地掠過,常常會在紙面上留下汙點。解決這個問題的辦法就是,用兩個字元:乙個字元來移到第一列,另乙個字元來新增一行。計算機產生以後,儲存較為昂貴,在如何解決回車換行這個老問題上,人們產生了不同的意見。unix人認為在到達一行的結尾時新增一行(lf),而mac人則認同(cr)的解決辦法,ms則堅持古老的(crlf)的方法。這就意味著如果你將乙個檔案從乙個系統轉移到另乙個系統,就面臨著回車換行的問題。而vim編輯器則會自動的認出這種檔案格式方面的區別,並做出相應處理。
fileformats選項,用於處理檔案格式問題。以下命令,告訴vim將unix檔案格式做為第一選擇,而將ms-dos的檔案格式做為第二選擇:
:set fileformats=unix,dos
檢測到的檔案格式會被存放在fileformat選項中,我們可以用以下命令來查詢:
:set fileformat?
我們還可以利用fileformat選項,來轉換種檔案格式。例如,使用以下命令將名為readme.txt的ms-dos格式的檔案,轉換為unix格式的檔案。
:set fileformat=unix
在預設情況下,vim認為檔案是由行組成的,並且檔案最後一行是以為結束符的。如果你想設定檔案以結束符結尾,則可以用以下命令:
:set endofline
如果你想設定檔案不以結束符來結尾,則可以使用以下命令:
:set noendofline
顯示換行
如果你使用以下命令進入,那麼就可以清楚的看到以「$」表示的換行符和以「^i」表示的製表符。
:set list
你可以使用以下命令退出:
:set nolist
刪除換行
可以用以下命令刪除換行符:
:%s/\n//g
可以用以下命令刪除dos檔案中的回車符「^m」:
:%s/\r//g
可以用以下命令轉換dos回車符「^m」為真正的換行符:
:%s/\r/\r/g
可以用以下命令刪除行尾的空格以及dos回車符。它沒有使用「/」字元作為替換命令各個引數間的分隔符,而是使用了「#」字元。命令還使用了「\?」正規表示式,用來匹配它前面出現的字元0次或1次。
:%s#\s*\r\?$##
可以用以下命令刪除三行空行:
:%s/^\n\//
可以用以下命令將連續的兩個空行替換成乙個空行:
:%s/\n\n/\r/g
自動換行
在預設情況下,vim是不會自動換行的,也就是說我們需要自己決定回車的位置。但是我們也可以通過指定textwidth選項,讓vim自動在指定位置換行。例如,使用以下命令指定在30列時自動換行。由於在遇到空格時才會自動換行,所以換行的精確位置可能會小於你指定的列寬。
:set textwidth=29
而以下命令告訴vim從右面算起當達到10個字元的空格時要換行:
:set wrapmargin=10
在指定了文字寬度的情況下,當我們將一行中的前幾個文字刪掉時,vim並不會將後面行中的文字移動上來,而是形成了一些長短不一的段落,這樣看起來不是很好。可以有幾種方法處理這個問題:
一種方法是,在視覺化模式下選中這些文字,然後用gp
命令來格式化選中的段落。另一種方法是,使用gqmotion
命令來完成格式。例如要格式化5行,就可以用命令:gq4j
。這個命令告訴vim要格式化本行,同時要格式化下面的4行,這樣就達到了格式化5行的目的。如果要格式化整個段落,可以將游標放在段落的第一行上,然後執行命令gq}
。而使用命令gqip
可以格式化當前段落,而且並不必要將游標放在段落的第一行上。
如果要想格式化一行,可以使用命令gqgq
,也可以簡記為gqq
。
注意:選項textwidth優先於wrapmargin。如果要使wrapmargin選項生效,必須將textwidth設定為0(這也是預設值)。
合併行命令j
使兩行合併為一行,同時用空格分隔這兩行。
通過設定joinspace選項,可以控制合併兩行時的分隔符(如果一行是以標點符號來結尾)。如果設定:set nojoinspaces
,用j命令合併兩行時會用乙個空格來分隔;如果設定:set joinspaces
,用j命令合併兩行時會用兩個空格來分隔。如果不希望用空格來分隔合併的行,可以使用gj
命令。
我們也可以使用:join
命令,將幾行合併為一行並使用空格來分隔各行。如果不希望加入空格,那麼可以使用:join!
命令。
命令小結
:set fileformat
設定檔案格式
:set endofline
設定檔案結束符
:set noendofline
取消檔案結束符
:set list
進入list mode
:set nolist
退出list mode
:%s/\n//g
刪除換行符
:set textwidth
設定行寬
:set textwidth
設定行邊距
:join
合併多行
j
合併兩行
vi下顯示回車換行符等特殊符號
換行方式 在早期的印表機時代,開始新的一行要占用兩個字元的時間。如果到了一行的結尾處,你要快速回到新的一行的開頭,需要列印針頭在紙面上飛快地掠過,常常會在紙面上留下汙點。解決這個問題的辦法就是,用兩個字元 乙個字元來移到第一列,另乙個字元來新增一行。計算機產生以後,儲存較為昂貴,在如何解決回車換行這...
vi下顯示回車換行符等特殊符號
在早期的印表機時代,開始新的一行要占用兩個字元的時間。如果到了一行的結尾處,你要快速回到新的一行的開頭,需要列印針頭在紙面上飛快地掠過,常常會在紙面上留下汙點。解決這個問題的辦法就是,用兩個字元 乙個字元來移到第一列,另乙個字元來新增一行。計算機產生以後,儲存較為昂貴,在如何解決回車換行這個老問題上...
fiori 換行 vi下顯示回車換行符等特殊符號
換行方式 在早期的印表機時代,開始新的一行要占用兩個字元的時間。如果到了一行的結尾處,你要快速回到新的一行的開頭,需要列印針頭在紙面上飛快地掠過,常常會在紙面上留下汙點。解決這個問題的辦法就是,用兩個字元 乙個字元來移到第一列,另乙個字元來新增一行。計算機產生以後,儲存較為昂貴,在如何解決回車換行這...