[MAC][Vim][PHP] MacBook 升級到 macOS Tahoe 後 Vim 配色跑掉的解決方式
最近將 MacBook 的系統從 macOS Sequoia 升級到 macOS Tahoe 後,意外發現原本使用的 Vim colorscheme default 配色突然跑掉。許多語法的顏色變淡、變灰,尤其是在 PHP 編輯時常用的語法高亮根本不見了。
研究後發現主要原因是:
- macOS Tahoe 的終端機預設啟用了新的色彩處理方式
- Vim 在沒有指定
termguicolors時會退回較舊的顏色模式
也就是說:系統升級後,Vim 沒有自動使用 True Color(真彩色)模式,造成 default colorscheme 顯示異常。
🔧 解決方式:啟用 True Color 並重新定義需要的語法高亮
在 ~/.vimrc 中加入:
set termguicolors
這行設定會強制啟用 24-bit True Color,讓 Vim 能正確顯示舊版系統相同的配色呈現。
接著,我針對自己常用的 PHP 語法補回原本舊版的配色:
" 行號 (Line Number)
highlight LineNr guifg=#DAA520 guibg=NONE
" 搜尋 (Search)
highlight Search guifg=#FFFFFF guibg=#FF0000
" PHP 語法高亮
highlight phpStatement guifg=#DAA520
highlight phpOperator guifg=#DAA520
highlight phpVarSelector guifg=#DAA520
highlight phpComparison guifg=#DAA520
highlight phpNumber guifg=#DAA520
highlight phpMethodsVar guifg=#FFFFFF
highlight phpIdentifier guifg=#00CCCC
highlight phpStringSingle guifg=#FF4500
highlight phpStringDouble guifg=#FF4500
highlight phpConditional guifg=#DAA520
highlight phpRepeat guifg=#DAA520
highlight phpParent guifg=#FF00FF
highlight phpRepeat guifg=#DAA520
以上這些 phpXXX 群組都是 Vim 內建的 PHP syntax highlight group,不需要額外安裝任何外掛。
🔍 如何自己查出 Vim 裡某一段文字的語法高亮群組
若你想自己調整顏色,可以直接使用 Vim 內建指令查詢游標所在文字的 highlight group:
查 highlight group 名稱
:echo synIDattr(synID(line('.'), col('.'), 1), 'name')
例如游標放在 $var 會顯示:
phpVarSelector
🎉 結果:配色恢復成原本的舊版 Vim 樣式
設定完以上內容後,配色就完全恢復到升級前的狀態,包含:
- 行號恢復金色
- 搜尋結果恢復紅底白字
- PHP 關鍵字、運算子、字串、變數等全部回到熟悉的色調
如果你也是從 macOS Sequoia 升到 macOS Tahoe,並且使用 Terminal Vim 或 Homebrew 安裝的 Vim,就很有可能也會遇到同樣問題。只要加入 set termguicolors 並補回必要的 highlight,即可讓顏色重回正常。
📌 小提醒
如果你有使用不同 colorscheme,也建議在升級後確認是否支援 True Color。如果顏色看起來怪怪的,用以下指令檢查:
:set termguicolors?
如果沒有啟用,手動補上即可。同時也能避免未來 macOS 更新再次影響配色。
希望這篇文章能幫助到同樣遇到 Vim 顏色跑掉的 Mac 使用者!