Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux Vim Tab 鍵寬度調整技巧:設定 tabstop、shiftwidth、expandtab 完整指南

編輯:關於 Linux

Vim 中 Tab 鍵顯示寬度預設為 8 格,但主流程式碼風格多採用 4 格或 2 格縮排。本文詳細說明如何透過 tabstop、shiftwidth、expandtab、softtabstop 四大參數精確控制 Tab 行為,並提供不同語言的推薦配置。

一、核心參數對照表

二、配置組合效果對比

參數縮寫預設功能建議值
tabstopts8Tab 字元(\t)顯示寬度(螢幕格數)4 或 2
shiftwidthsw8>/<、==、自動縮排寬度同 tabstop
expandtabetoff將 Tab 鍵輸入轉換為空白字元on
softtabstopsts0編輯時 Tab/Backspace 行為寬度(0=同 tabstop)同 tabstop

三、設定方法

1. 臨時生效(當前 Vim 會話)

:set tabstop=4 shiftwidth=4 expandtab
:set ts=4 sw=4 et

2. 永久生效(個人配置)

# 編輯 ~/.vimrc
vim ~/.vimrc

# 加入以下內容
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4

# 可選:顯示不可見字元
set list
set listchars=tab:▸\ ,trail:·,extends:»,precedes:«

編輯 .vimrc

設定 tabstop=4

3. 專案級配置

# 專案根目錄建立 .vimrc 或 .editorconfig
# .editorconfig(跨編輯器通用)
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[Makefile]
indent_style = tab

4. 檔案類型自動偵測

# ~/.vimrc
filetype plugin indent on

" Python
autocmd FileType python setlocal ts=4 sw=4 et sts=4
" Go
autocmd FileType go setlocal ts=4 sw=4 noet sts=4
" Web 前端
autocmd FileType html,css,javascript,typescript,vue,jsx,tsx setlocal ts=2 sw=2 et sts=2
" Shell
autocmd FileType sh,bash,zsh setlocal ts=4 sw=4 et sts=4
" C/C++
autocmd FileType c,cpp setlocal ts=4 sw=4 et sts=4 cindent
" YAML
autocmd FileType yaml setlocal ts=2 sw=2 et sts=2

四、進階操作技巧

1. 重新縮排整份檔案

gg=G
# gg: 跳到第一行 | =: 縮排 | G: 到最後一行

2. 視覺模式區塊縮排

V 選取區塊 >  或  <  # 增加/減少一級縮排
:>  或  :<            # 命令列模式

3. Tab 與空白互轉

:retab!       # 依目前 ts/et 設定轉換所有 Tab/空白
:set et | :retab   # Tab → 空白
:set noet | :retab! # 空白 → Tab(盡可能)

4. 檢測檔案縮排風格

:set list
# Tab 顯示為 ▸ 或 ^I,空白顯示為 ·

五、常見問題排查

配置輸入 Tab 鍵顯示寬度檔案實際內容適用場景
ts=4 sw=4 noet插入 \t4含 Tab 字元Makefile、Go、舊專案
ts=4 sw=4 et插入 4 空白4純空白Python、JavaScript、Java、C++(主流)
ts=8 sw=4 et插入 4 空白8(Tab 顯示 8)純空白混合 Tab/空白專案
ts=2 sw=2 et插入 2 空白2純空白HTML、CSS、Vue、React

六、一鍵套用主流風格

# Google / Python / Java / C++ 風格
set ts=4 sw=4 et sts=4

# Web 前端 / Node.js 風格
set ts=2 sw=2 et sts=2

# Go / Makefile 風格
set ts=4 sw=4 noet sts=4

精確配置 Tab 行為,能避免「混合縮排」導致的語法錯誤、程式碼審查爭議、跨編輯器顯示不一致等問題,是專業開發環境的基礎建設之一。

Copyright © Windows教程網 All Rights Reserved
現象原因解決
Tab 顯示 8 格但設定 ts=4未設定 expandtab,實際含 Tab 字元:set et | :retab
複製貼上縮排亂掉自動縮排衝突:set paste 貼上後 :set nopaste
Python 混合 Tab/空白報錯檔案含真實 Tab 字元:set list 確認 → :set et | :retab
Makefile 需要真實 Tab語法要求 Tab 字元:set noet 或專案配置覆蓋