首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Vim 設定 PHP 自動縮排 4 空格:完整配置指南

     編輯:PHP 綜合知識

問題背景

Vim 預設使用 Tab 字元(\t)縮排,且預設寬度為 8 空格。PHP 社群標準(PSR-12)要求縮排使用 4 空格,不使用 Tab。若直接修改檔案將 Tab 改為空格,下一行自動縮排仍會插入 Tab,導致「空格與 Tab 混用」,造成程式碼在不同編輯器顯示錯亂。

核心設定參數詳細說明

設定指令縮寫說明建議值
autoindentai新行自動沿用當前行縮排set autoindent
cindentci類 C 語言智慧縮排(支援 PHP 大括號風格)set cindent
smartindentsi基於 autoindent 的改進(較 cindent 簡易)set smartindent(可選)
tabstoptsTab 字元顯示寬度(空格數)set tabstop=4
shiftwidthsw每層縮排的空格數(>>、<<、自動縮排)set shiftwidth=4
expandtabet**關鍵**:將輸入的 Tab 自動展開為空格set expandtab
softtabstopsts編輯時按 Tab/Backspace 的「邏輯寬度」(配合 et 使用)set softtabstop=4
smarttabsta行首按 Tab 插入 shiftwidth 空格,非行首插入 tabstop 空格set smarttab

推薦 .vimrc 完整配置區塊

" PHP 專用縮排設定(放在 .vimrc 或 ~/.vim/ftplugin/php.vim)
setlocal tabstop=4
setlocal shiftwidth=4
setlocal softtabstop=4
setlocal expandtab
setlocal smarttab
setlocal autoindent
setlocal cindent
" 可選:針對 PHP 語法優化的縮排規則
setlocal indentkeys=0{,0},:,0#,!^F,o,O,e
" 顯示不可見字元,方便除錯混用問題
set list
set listchars=tab:▸\ ,trail:·,extends:>,precedes:<

進階技巧

1. 檔案類型自動偵測與專屬設定

建立 ~/.vim/ftplugin/php.vim,上述設定將僅對 PHP 檔案生效,不影響 Python、Go 等其他語言。

2. 既有檔案 Tab 轉空格

:set expandtab
:retab
:w

:retab 會依目前 tabstop 將現有 Tab 轉換為空格。

3. 檢查混用狀況

:set list
" Tab 顯示為 ▸ ,空格顯示為 · ,一目了然

4. 整合 PHP_CodeSniffer 自動修正

" 儲存時自動執行 phpcbf 修正縮排(需安裝 phpcbf)
autocmd BufWritePre *.php silent! !phpcbf --standard=PSR12 %

常見問題排查

  • 設定不生效:確認 filetype plugin indent on 已在 .vimrc 中啟用。
  • 貼上程式碼縮排亂掉:進入插入模式前輸入 :set paste,貼上後 :set nopaste;或使用 "+p 從系統剪貼簿貼上。
  • 多專案不同標準:專案根目錄建立 .editorconfig,Vim 安裝 editorconfig-vim 外掛即可自動套用專案設定。

總結

核心三招:set expandtab(Tab 轉空格)、set shiftwidth=4(縮排寬度)、set tabstop=4(Tab 顯示寬度)。搭配 ftplugin 隔離語言設定、editorconfig 跨編輯器一致性,即可享受乾淨、標準、無混用困擾的 PHP 開發體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved