2016-07-05 93 views
2

我想在vim中自定義python的語法突出顯示。我想突出顯示關鍵字self,但只有在後面跟着.。這裏是我想出了代碼:Vim語法突出顯示:使用正則表達式突出顯示`self` python關鍵字

syn match pythonBoolean  "\(\Wself\)\%(\.\)" 

不幸的是,.也強調,雖然我使用非捕獲組\%(\.\)

有什麼想法?

+0

有你的嘗試\ v在開始激活非常神奇 – Destrif

+0

我試過了,它並沒有改變一件事。根據我的理解,'\ v'允許避免轉義括號等特殊字符。 – BiBi

+0

但是'self'並不是python中的關鍵字。 – aragaer

回答

4

您需要使用環視

:syn match pythonBoolean "\(\W\|^\)\zsself\ze\." 

:syn match pythonBoolean "\(\W\|^\)\@<=self\(\.\)\@=" 
+1

工作就像一個魅力!謝謝。 – BiBi

1

如何使用lookbehinds and lookaheads?對於任何非文字字符[^a-zA-Z0-9_]共同的正則表達式的語法之前和之後.自我的occurence一個有效的正則表達式是:(?<=\W)(self)(?=\.)

Vim的正則表達式來看看this answer,而且,如果你需要更多的幫助,檢查this page出。

0

作爲替代回顧後和前瞻,往往VIM放緩:

syn match pythonBoolean "\<self\ze\." 

或者,如果您想突出顯示所有對象:

syn match pythonBoolean "\<\w\+\ze\." 
1

@腦膜的答案建立在,我已將此添加到我的.vimrc

augroup PythonCustomization 
    " highlight python self, when followed by a comma, a period or a parenth 
    :autocmd FileType python syn match pythonStatement "\(\W\|^\)\@<=self\([\.,)]\)\@=" 
augroup END 

注1:那除了什麼運問,它也將在self其次是突出逗號或右括號。

注2:不使用pythonBoolean,採用pythonStatement(個人喜好)這突出self。您可以使用其他高亮組(運行:syn與python文件打開,看看有什麼可用)