vim 縮進

vim tab變空格

對於使用vim的程序員來說,shiftwidth,tabstop,softtabstop絕對是經常接觸的三個縮進因素。能否有方便美觀的,整體化的縮進,主要是由他們相互間的配合決定。在經過一段時間試用後,總結一下我的設置經驗。

shiftwidth

這個是用於程序中自動縮進所使用的空白長度指示的。一般來說爲了保持程序的美觀,和下面的參數最好一致。同時它也是符號移位長度的制定者。

tabstop

定義tab所等同的空格長度,一般來說最好設置成8,因爲如果是其它值的話,可能引起文件在打印之類的場合中看起來很彆扭。除非你設置了 expandtab模式,也就是把tabs轉換成空格,這樣的話就不會一起混淆,不過畢竟製表符爲8是最常用最普遍的設置,所以一般還是不要改。

softtabstop

如果我們希望改變程序中的縮進怎麼辦?shiftwidth和tabstop不一樣的話,你會發現程序比較難看的。這時候,softtabstop就起作用了。可以從vim的說明中看到,一旦設置了softtabstop的值時,你按下tab鍵,插入的是空格和tab製表符的混合,具體如何混合取決於你設定的softtabstop,舉個例子,如果設定softtabstop=8,那麼按下tab鍵,插入的就是正常的一個製表符;如果設定 softtabstop=16,那麼插入的就是兩個製表符;如果softtabstop=12,那麼插入的就是一個製表符加上4個空格;如果 softtabstop=4呢?那麼一開始,插入的就是4個空格,此時一旦你再按下一次tab,這次的四個空格就會和上次的四個空格組合起來變成一個製表符。換句話說,softtabstop是“逢8空格進1製表符”,前提是你tabstop=8。

4 關於expandtab

舉個例子,在多人一起開發項目時,爲了使代碼風格儘量保持一致,一般不允許在代碼使用TAB符,而以4個空格代之。我們可以編輯一個文件,包含下面的內容:
set shiftwidth=4
set expandtab

然後把下面的命令加入到.vimrc中:
autocmd FileType c,cpp set shiftwidth=4 | set expandtab

就可以只在編輯c和cpp文件時實行這種設置了

 

5 刪除掉每一行末尾的空格:

行末:$ 
行首:^
空格:\s
行末空格:\s\+$
行首空格:^\+\s
有些人認爲行末的空格是無用,浪費而難看的。要刪除這些每行後面多餘的空格,可以
執行如下命令:
:%s/\s\+$//
命令前面指明範圍是 "%",所以這會作用於整個文件。"substitute" 命令的匹配模式是
"\s\+$"。這表示行末($)前的一個或者多個(\+)空格(\s)。後面我們會介紹怎樣
寫這樣的模式。
替換命令的 "to" 部分是空的:"//"。這樣就會刪除那些匹配的空白字符。
另一種沒有用的空格是 Tab 前面的字符。通常這可以刪除而不影響格式。但並不是總這
樣!所以,你最好手工刪除它。執行如下命令:
/
你什麼都看不見,其實這是一個空格加一個 TAB 鍵。相當於 "/"。現在,
你可以用 "x" 刪除多餘的空格,並保證格式沒有改變。接着你可以用 "n" 找到下一個
位置並重復這個操作

發佈了36 篇原創文章 · 獲贊 12 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章