歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 開發常用的Vim配置

開發常用的Vim配置

日期:2017/2/28 13:50:08   编辑:Linux教程

文本每行都應該換行——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換行為\r\n,unix為\n,mac為\r。

vi:新建文件每行末尾都有\n。

Windows記事本6.1:新建文件最後一行沒有\r\n。

Visual Studio 2012:自動生成代碼文件最後一行有\r\n,新建空文件最後一行沒有\r\n……

截圖:

二進制文件最後不需要換行,所以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都無關。

Copyright © Linux教程網 All Rights Reserved