緣由
不知道為什麼我的顏色設定在 vimdiff 時,剛好 highlight 的背景色與某種 syntax 的前景色一樣,導致整個字像透明一樣,diff 時看不到字,一整個就是搞笑,所以我決定一定要修好他。
在決定要修他之前,我的妥協作法是,在 diff 時手動設成別種 colorscheme。上網查發現也有人有這問題,一個解法是在 vimrc 裡設定,偵測跑 vimdiff 時就自動套別種顏色,不過根本的解法還是把顏色調好,這才是一勞永逸。
就在我調顏色時,突然發現了一個關鍵點,我的 Vim 怎麼不是 256 色!!!,我明明就設了,Oh NO。
最後終於找到,原來是 tmux,我的 Vim 是透過 gnome terminal => tmux => vim,tmux 那層沒設好,顏色就不見了,哭哭。
所以我決定把我的心路歷程寫下來。
開啟 256 色的 Vim
terminal
我會用我的環境當例子,首先是 terminal,我是用 ubuntu 的 gnome terminal。
aknow@aknow-ubuntu:~$ echo $COLORTERM
gnome-terminal
From: https://github.com/guns/xterm-color-table.vim |
tmux
接下來是 tmux,記得要在 .bashrc 裡加上:
export TERM="xterm-256color"
進 tmux,再跑跑看剛剛的程式,驗證 tmux 裡也有 256 色。
Vim
在 vimrc 裡設定:
set t_Co=256
開啟 Vim,執行:
:runtime syntax/colortest.vim
你會看到一些測試的顏色,當然還有更威的 256 色測試 xterm-color-table.vim,裝完後執行:
:XtermColorTable
From: https://github.com/guns/xterm-color-table.vim |
如果這些都沒問題,恭喜你有 256 色的 Vim 了。
Colorschme 的選擇
Vim 有一些預設的 colorscheme,你可以選擇你想要的,執行以下指令就可以設定:
:colorscheme <scheme>
:colorscheme 可以簡寫為 :colo (懶人的哲學)
不知道有什麼 <scheme> 嗎?可以透過這兩個方法列出已安裝的 scheme。
- :colo <space> <tab>
- :colo <space> <c-d> (ctrl+d)
覺得不夠的話,還可以到 vimcolorschemetest,這裡有 400 多種 scheme 可以預覽和下載。
細部顏色的微調
如果你很龜毛還是想要調顏色的話,可以去修改 scheme 裡的設定,vim help 裡有說怎麼設。
:help highlight
基本上像這樣:
hi ErrorMsg term=standout cterm=bold ctermfg=7 ctermbg=1
數字就是色碼,可以從剛剛的 xterm-color-table.vim 得到,然後前面的那個是 highlight group,想知道有哪些 highlight group 可以設,跑這個指令:
:so $VIMRUNTIME/syntax/hitest.vim
他會把各 highlight group 與目前的顏色顯示出來。