vim - 如何将连续的三个引号视为注释而不是字符串

vim - 如何将连续的三个引号视为注释而不是字符串

我使用 python,在 python 中,连续三个引号

"""

或者

'''

表示块注释,普通注释只是一个井号。(#)我希望注释为灰色,字符串为橙色。我使用的是 murphy 配色方案。我创建了一个 murphy-mine.vim 文件,并将此添加到其中

hi Comment term=bold     ctermfg=Grey     guifg=Grey
hi String  term=bold     ctermfg=LightRed guifg=Orange

但是 gvim 将"""and'''视为 python 语法中的字符串,而不是将其视为注释(块注释)。有没有办法让我告诉 gvim 将"""and'''视为注释/块注释而不是字符串?

答案1

您可以将以下内容放入~/.vim/after/syntax/python.vim(取自这里

" Highlight docstrings as comments, not string.
syn region pythonDocstring  start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError
syn region pythonDocstring  start=+^\s*[uU]\?[rR]\?'''+ end=+'''+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError

hi def link pythonDocstring pythonComment

答案2

PEP 257 规定在文档字符串中使用“三重双引号”。在文档字符串中不一定要包含“三重单引号”或“单重双引号”。有一个困难是,我们有类文档字符串、函数文档字符串、模块文档字符串、属性文档字符串和其他文档字符串。这就是为什么我决定将文档字符串视为以下形式更容易:

syn region pythonDocString start=+^\s*"""+ end=+"""+ keepend contains=...

进而:

HiLink pythonDocString        Comment

您可以在此脚本中看到示例(搜索 pythonDocString):https://github.com/andbar-ru/python-syntax/blob/master/syntax/python.vim

相关内容