2010-10-05 281 views
105

有誰知道Linux上的文本編輯器允許我看到換行符和回車符嗎? Vim是否支持這個功能?查看編輯器中的換行符和回車符

+0

注意:有時換行符($)和回車符(^ M)隱藏在很多顏色方案中,並且在使用putty到ssh時也是如此。 – 2017-08-21 18:06:41

回答

91

:set list在Vim中會顯示空白。行尾顯示爲'$',回車通常顯示爲'^M'。

+1

同一問題在這裏:http://superuser.com/questions/97692/vim-show-line-feeds-carriage-return – 2010-10-05 02:52:34

+167

錯誤,':set list'不會顯示'^ M'字符(CR)。向vi/vim提供'-b'選項將起作用。或者,一旦加載vim,鍵入:':e ++ ff = unix' – CaptSaltyJack 2013-04-21 16:22:19

+4

@CaptSaltyJack這需要自己的答案..... – 2014-12-02 21:42:00

68

VI通過顯示下一行的後續文本顯示新行(LF字符,代碼x0A)。

使用-b開關進行二進制模式。例如vi -b filenamevim -b filename --

然後它將顯示在Unix樣式文件中通常不使用的CR字符(x0D)作爲字符^M

146

要與官方的回答不以爲然:

:set list顯示^ M字符(CRS)。爲vi/vim提供-b選項將起作用。或者,一旦vim被加載,輸入:e ++ff=unix

+1

爲什麼':set ff = unix'不起作用,但':e ++ ff = unix'呢? – 2015-06-09 20:21:53

+2

這是語法。 ':help edit'顯示'e [dit]! [++ opt] [+ cmd]'。並且':help ++ e'表示_可以使用[++ opt]參數來強制'fileformat'[..] _的值。 – dennis 2015-10-06 11:35:27

+11

只是爲了澄清,':set list'顯示換行('$'),':e ++ ff = unix'顯示CR('^ M');如果你想同時看到':set list',那麼':e ++ ff = unix' – 2016-08-21 22:16:12

9

請嘗試以下命令。

:設置二進制

在VIM,這應該做同樣的事情,使用「-b」命令行選項。如果你把它放在你的啓動文件(即.vimrc)中,它將永遠適合你。

在許多* nix系統中,有一個「dos2unix」或「unix2dos」命令可以處理該文件並更正任何可疑的行結束問題。如果行結束沒有問題,則文件不會被更改。

1

我建議你編輯你的.vimrc文件,以運行一系列命令。 編輯.vimrc文件,像這樣:

cat >> ~/.vimrc <<EOF 
set ffs=unix 
set encoding=utf-8 
set fileencoding=utf-8 
set listchars=eol:¶ 
set list 
EOF 

當你執行VIM,命令進入的.vimrc被執行,並且你可以看到這個例子:

My line with CRLF eol here ^M¶ 
8

只是爲了澄清爲什麼:set list不會顯示CR爲^M而不是e ++ff=unix以及爲什麼:set list^M無關。

內部在Vim 讀取文件到它的緩衝區,它取代了自己的代表所有的行結束字符(姑且稱之爲$的)。爲了確定應該刪除哪些字符,它首先檢測文件中存儲行結尾的格式。如果僅有CRLF '\r\n'或僅CR '\r'或僅有LF '\n'行結束字符,則'fileformat'分別設置爲dos,macunix

list選項設置時,Vim顯示$字符時換行符發生不管已經檢測到什麼fileformat選項。它使用自己內部的換行符表示,這就是它顯示的內容。

現在,當你緩衝到光盤上,Vim的根據是什麼fileformat選項已經木珠檢測,用正確的字符轉換essentialy所有這些內部$的插入行結束符。如果fileformat碰巧是unix那麼它將簡單地寫\n來代替它的內部換行符。

訣竅在於強制Vim讀取dos編碼文件爲unix之一。最終結果是,它將刪除所有\n\r,並將它們顯示爲^M在您的緩衝區中。設置:set list將另外顯示內部行結束符爲$。畢竟,您會看到^M$代替dos編碼的換行符。

另請注意,:set list與顯示^M無關。你可以自己檢查(確保你已經先禁用list選項),插入單個CR使用CTRL-V後跟Enter插入模式。寫緩衝到光盤,然後再次打開它之後,你就儘管list選項被設置爲0。

你可以找到更多有關文件格式上http://vim.wikia.com/wiki/File_format或Vim中鍵入:help 'fileformat' SES ^M

相關問題