Vim 语法突出显示:使用正则表达式突出显示 `self` python 关键字
Vim Syntax Highlighting: highlight `self` python keyword with regex
我正在尝试为 vim 中的 python 自定义语法突出显示。我想突出显示关键字 self
,但仅当其后跟 .
时才突出显示。这是我想出的代码:
syn match pythonBoolean "\(\Wself\)\%(\.\)"
不幸的是,尽管我使用了非捕获组 \%(\.\)
,.
也被突出显示了。
有什么想法吗?
使用 lookbehinds and lookaheads 怎么样?在常见的正则表达式语法中,self 前面有任何非单词字符 [^a-zA-Z0-9_]
并后跟 .
的有效正则表达式是:(?<=\W)(self)(?=\.)
对于vim正则表达式看一下this answer, and, if you need more help, check this page。
您需要使用 环视:
:syn match pythonBoolean "\(\W\|^\)\zsself\ze\."
或
:syn match pythonBoolean "\(\W\|^\)\@<=self\(\.\)\@="
作为 lookbehind 和 lookahead 的替代方案,它们往往会减慢 vim:
syn match pythonBoolean "\<self\ze\."
或者,如果您想突出显示所有对象:
syn match pythonBoolean "\<\w\+\ze\."
基于@Meninx 的回答,我将其添加到我的 .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:除了 op 询问的内容外,它还会突出显示 self
后跟逗号或右括号的内容。
注2:这里不使用pythonBoolean
,而是使用pythonStatement
突出显示self
(个人偏好)。您可以使用其他突出显示组(运行 :syn
打开 python 文件以查看可用的内容)
我正在尝试为 vim 中的 python 自定义语法突出显示。我想突出显示关键字 self
,但仅当其后跟 .
时才突出显示。这是我想出的代码:
syn match pythonBoolean "\(\Wself\)\%(\.\)"
不幸的是,尽管我使用了非捕获组 \%(\.\)
,.
也被突出显示了。
有什么想法吗?
使用 lookbehinds and lookaheads 怎么样?在常见的正则表达式语法中,self 前面有任何非单词字符 [^a-zA-Z0-9_]
并后跟 .
的有效正则表达式是:(?<=\W)(self)(?=\.)
对于vim正则表达式看一下this answer, and, if you need more help, check this page。
您需要使用 环视:
:syn match pythonBoolean "\(\W\|^\)\zsself\ze\."
或
:syn match pythonBoolean "\(\W\|^\)\@<=self\(\.\)\@="
作为 lookbehind 和 lookahead 的替代方案,它们往往会减慢 vim:
syn match pythonBoolean "\<self\ze\."
或者,如果您想突出显示所有对象:
syn match pythonBoolean "\<\w\+\ze\."
基于@Meninx 的回答,我将其添加到我的 .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:除了 op 询问的内容外,它还会突出显示 self
后跟逗号或右括号的内容。
注2:这里不使用pythonBoolean
,而是使用pythonStatement
突出显示self
(个人偏好)。您可以使用其他突出显示组(运行 :syn
打开 python 文件以查看可用的内容)