Vim 是 Linux 使用者最常用的編輯器,良好的縮排設定能大幅提升程式碼可讀性與編輯效率。本文詳細說明如何將 Tab 鍵設定為 4 個空格寬度,並解決貼上程式碼時自動縮排亂掉的問題。

~/.vimrc 設定檔若檔案不存在則新建,存在則在尾部追加以下設定:
" 僅在支援 autocommands 時執行
if has("autocmd")
" 啟用檔案類型偵測與縮排
filetype plugin indent on
" Makefile 使用 8 空格寬度的硬 Tab
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif
" 其他檔案類型預設使用 4 空格寬度
set tabstop=4 " Tab 顯示寬度為 4 空格
set shiftwidth=4 " 自動縮排寬度為 4 空格
set softtabstop=4 " 插入模式下按 Tab 鍵產生 4 空格
set expandtab " 將 Tab 展開為空格(軟 Tab)
tabstop:Tab 字元在螢幕上顯示的寬度。shiftwidth:自動縮排(如 >>、<<)的空格數。softtabstop:編輯模式下按 Tab/Backspace 鍵的行為寬度。expandtab:將輸入的 Tab 轉換為對應數量的空格。設定後,Vim 會將 Tab 視為 4 空格,但檔案實際儲存仍為 \t 字元(除非啟用 expandtab),其他編輯器開啟時仍顯示為 Tab。
Vim 貼上程式碼時會觸發自動縮排,導致縮排層層疊加、註解符號誤判等問題。提供兩種切換方式:
set pastetoggle=
在插入模式下按 F9 即可切換「貼上模式」(關閉自動縮排),再按一次恢復。手寫程式碼時保持預設自動縮排即可。
:set paste,貼上程式碼後執行 :set nopaste 恢復。可在 autocmd FileType 中為不同語言設定不同縮排,例如 Python 建議 4 空格,Go 語言則通常使用硬 Tab:
autocmd FileType python setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab
autocmd FileType go setlocal tabstop=4 shiftwidth=4 softtabstop=0 noexpandtab
完成設定後,重新開啟 Vim 即可生效。良好的縮排習慣能讓團隊協作更順暢,建議專案中統一規範並納入版本控制(如 .editorconfig)。