[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 使用者!