# Vimrc 小技巧 ###### tags: `note` contributed by <`HYISABUG`> ## Highlight python 的 self python 的 `self` 在 vim 裡面預設不會被標色 這是因為 `self` 不是一個關鍵字, 只是個慣例命名 因為覺得太多 self 在程式碼裡不標色容易找不到 所以就去找了點方法讓 vim 幫忙標色 ### syntax 設定 vim 的 syntax 設定長這樣 ```syn keyword {group-name} {keywords}``` (或 ```syntax keyword {group-name} {keywords}```) `group-name` 可以是任意自訂的名字, 也可以是 vim 內建的組別 (e.g. `pythonBuiltin`) 內建的組別可以到 vim 的資料夾底下去找設定 `*.vim` (e.g. `/usr/share/vim/vim74/syntax/python.vim` 就是 python 相關的 vim 設定) 這個 `group-name` 跟標色是什麼顏色有關 舉個例子, `group-name` 用 `pythonBuiltin` 會讓顏色變得跟那些內建 function 一樣 (e.g. `abs`, `print`) `keywords` 當然就是指哪些詞要標色啦 當然, 也可以選擇用 regular expression 來決定標色部份 像 ```syn match {group-name} {regex}``` 一樣把 `keyword` 換成 `match` 就行了 ### Highlight Group 如果是用自訂 `group-name`, 那麼做完 syntax 設定還不夠 接下來有兩條路能選擇 1. 自訂顏色 2. 套用已有組別的顏色 第一種用 ```hi {group-name} ctermfg={color-nr}``` `color-nr` 是色碼, 詳細[自己去查](http://vimdoc.sourceforge.net/htmldoc/syntax.html#:highlight) 第二種用 ```hi link {from-group} {to-group}``` `from-group` 是你的自訂組別, `to-group` 是要套用的組別 在這裡我用的是第二種, 並且將組別連接到 `Keyword` 這個預設組別上 ```hi link myPythonKeyword Keyword``` ### 自動執行 上面兩個設定如果直接寫在 `.vimrc` 里會發現「ㄟ怎麼沒變?」 這是因為設定被預設的 syntax file 洗掉了 所以我用 `autocommand` 來解決這問題 ``` augroup python au! au FileType python \ syn keyword myPythonKeyword self | \ hi link myPythonKeyword Keyword augroup end ``` 像這樣設定好, 就能看見設定生效了 ### 參考資料 [How can I fix 'missing' syntax highlighting for Python keywords such as 'self' ?](https://vi.stackexchange.com/questions/8772/how-can-i-fix-missing-syntax-highlighting-for-python-keywords-such-as-self) [Vim documentation: syntax](http://vimdoc.sourceforge.net/htmldoc/syntax.html)