首頁 > 軟體

開發常用的Vim設定

2020-06-16 17:35:41

文字每行都應該換行——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


IT145.com E-mail:sddin#qq.com