2021-05-12 14:32:11
開發常用的Vim設定
文字每行都應該換行——vi檔案末尾自動換行,不會導致php輸出空行
開發常用的vim設定:
vi ~/.vimrc
set expandtab set softtabstop=4 set shiftwidth=4 set tabstop=8 set autoindent autocmd FileType make set noexpandtab au BufReadPost * if line("'"") > 0|if line("'"") <= line("$")|exe("norm '"")|else|exe "norm $"|endif|endif
如果用了上面的設定,還是無法記住上回開啟的行位置 ,那可能是~/.viminfo有問題。sudo chown 使用者名稱 ~/.viminfo即可。
用vi寫php,一直覺得很正常,直到最近同事發現說檔案末尾有空行,嚇我一跳,會導致php輸出空行嗎?
我想當然的認為vi有問題,會導致php輸出空行。
想修改vi設定,解決這個問題。在搜尋的過程中,發現vi是對的,不會導致php輸出空行……
程式碼截圖:
結果截圖:
為什麼vi在文字的每行末尾都加上換行n?
答案:因為文字每行末尾都應該加上換行。參考:http://stackoverflow.com/questions/729692/why-should-files-end-with-a-newline
根據2011年ISO發布的C語言標準C11(ISO/IEC 9899:2011)和C++標準C++11(ISO/IEC 14882:2011),每行末尾都應該換行。
如果不換行,GCC會出現警告。參考:http://gcc.gnu.org/ml/gcc/2003-11/msg01568.html
C11第5.1.1.2節內容截圖:
Windows換行為rn,unix為n,mac為r。
vi:新建檔案每行末尾都有n。
Windows記事本6.1:新建檔案最後一行沒有rn。
Visual Studio 2012:自動生成程式碼檔案最後一行有rn,新建空檔案最後一行沒有rn……
截圖:
二進位制檔案最後不需要換行,所以vi使用以下設定時檔案末尾不會加上換行。
set binary
set noeol
但是不建議這樣使用,因為set binary與set softtabstop衝突,詳見後面講解。
vi設定逐行解釋:
大部分的書寫規範都要求使用4個空格縮排,所以要實現:按1次tab出現4個空格,按1次backspace刪除4個空格。
set expandtab
這句表示:使用空格替換tab。這時候按一次tab出現1到8個空格,按1次backspace刪除1個空格。
set softtabstop=4
這句累加效果:按一次tab出現1到4個空格,按1次backspace刪除1到4個空格。
注意:set binary與set softtabstop衝突
當set binary時,如果set softtabstop=4,按2次tab,應該出現8個空格,結果卻出現了一個t,就好象是8個空格被自動替換成了一個tab。
set shiftwidth=4
累加效果:按一下v,然後按j或者k選擇多行,然後按shift + > 或者shift + <進行多行縮排,每次縮排4個空格。
set tabstop=8
這句話表示:t顯示為8個空格那麼長。多人使用多個編輯器修改程式碼的情況下,如果出現了t,很容易就能看出來。
set autoindent
這句話表示:自動縮排,即每行的縮排值與上一行相等。
set nu
這句話表示:顯示行號。
autocmd FileType make set noexpandtab
這句話表示:編輯Makefile時使用tab,而不使用空格。因為makefile的格式要求必須使用t。
todo:
1、vi如何顯示n:
set binary會把r顯示成?M,而不顯示n。註:~/.vimrc中set binary有效,vi開啟以後set binary無效。
set list會在每一行尾顯示一個$,與r或者n都無關。
更多Vim相關教學見以下內容:
Vim學習指南 http://www.linuxidc.com/Linux/2013-08/89096.htm
快速學會 Vi編輯器 http://www.linuxidc.com/Linux/2013-08/88586.htm
強大的Vim 編輯器 http://www.linuxidc.com/Linux/2013-07/87544.htm
在CentOS 6.2上搭建Vim開發環境 http://www.linuxidc.com/Linux/2013-07/87363.htm
把Vim打造成優秀的C++ IDE http://www.linuxidc.com/Linux/2016-06/132262.htm
Vim技巧分享:C語言設定 http://www.linuxidc.com/Linux/2012-12/77124.htm
Ubuntu中設定Vim的行號 http://www.linuxidc.com/Linux/2012-12/75485.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-08/134099.htm
相關文章