Vim 是 Linux 系統管理員與開發者最常用的編輯器。統一縮排風格 (Tab = 4 空格) 能大幅提升程式碼可讀性與團隊協作一致性。本文提供完整的 .vimrc 設定範例,涵蓋基本縮排、Makefile 例外、貼上模式切換、暫時關閉自動縮排等實用技巧。

" 只有支援 autocommands 時才執行
if has("autocmd")
" 啟用檔案類型偵測、外掛與自動縮排
filetype plugin indent on
" Makefile 使用硬性 Tab (寬度 8),不轉空格
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif
" 通用設定:Tab = 4 空格
set tabstop=4 " Tab 顯示寬度 = 4 空格
set shiftwidth=4 " 自動縮排寬度 = 4 空格
set softtabstop=4 " 編輯時 Tab 鍵插入 4 空格
set expandtab " 將 Tab 字元轉換為空格
| 參數 | 作用 | 建議值 |
|---|---|---|
tabstop (ts) |
螢幕上 Tab 字元顯示寬度 | 4 |
shiftwidth (sw) |
>>/<<、自動縮排的寬度 |
4 |
softtabstop (sts) |
插入模式下按 Tab/Backspace 的空格數 | 4 |
expandtab (et) |
將輸入的 Tab 轉為空格 | 開啟 |
注意:設定 expandtab 後,檔案內實際儲存的是空格字元;若在未設定 expandtab 的編輯器開啟,仍會顯示為 Tab 寬度。
set pastetoggle=
" 插入模式下按 F9 切換 paste/nopaste
-- INSERT (paste) --:set paste " 開啟貼上模式
" 貼上程式碼
:set nopaste " 關閉貼上模式,恢復自動縮排
" Python: PEP 8 建議 4 空格,已符合預設
" Go: 官方要求 Tab,需關閉 expandtab
autocmd FileType go setlocal noexpandtab tabstop=4 shiftwidth=4
" HTML/CSS/JS: 2 空格風格
autocmd FileType html,css,javascript setlocal tabstop=2 shiftwidth=2 softtabstop=2
" YAML: 嚴禁 Tab,僅 2 空格
autocmd FileType yaml setlocal tabstop=2 shiftwidth=2 softtabstop=2 expandtab
:set tabstop? shiftwidth? softtabstop? expandtab?
" 或開啟檔案後輸入
:verbose set tabstop?
設定完成後,Vim 將在大多數程式語言中自動維持 4 空格縮排,貼上程式碼時透過 F9 一鍵切換,極大提升編輯效率與程式碼品質。