我希望在我的 Python 文档字符串中看到一些不错的语法突出显示和着色,它们(当然)是有效的 RESt。例如:
'''
A section
=========
an example::
some code
'''
rest of python code
我最接近的是我的.vim/after/syntax/python.vim
:
syn include syntax/rst.vim
syn region pythonDocstring start=+^\s*'''+ end=+'''+ contained
根据语法包含的文档 http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syn-include这应该足够了。另请注意rst.vim
重新定义了一堆 python 实体,所以我不得不注释掉与代码相关的所有部分:
" syn region rstCodeBlock contained matchgroup=rstDirective
" \ start=+\%(sourcecode\|code\%(-block\)\=\)::\_s*\n\ze\z(\s\+\)+
" \ skip=+^$+
" \ end=+^\z1\@!+
" \ contains=@NoSpell
" syn cluster rstDirectives add=rstCodeBlock
" if !exists('g:rst_syntax_code_list')
[...]
最后我不能用!runtime
因为rst.vim
如果b:current_syntax
变量已经定义:
if exists("b:current_syntax")
finish
endif
尽管我付出了努力,我的文档字符串仍然与其他注释保持相同的颜色,没有语法突出显示。
我也尝试过这个:
syn region pythonDocstring start=+^\s*'''+ end=+'''+ contains=CONTAINED
但我只设法将块的颜色更改为Special
而不是Comment
.
也许我应该定义 pythonDocstring 不具有任何默认颜色?
进一步注意:如果我删除 python.vim 中对 python 原始字符串的引用,着色就会消失,但我只会突出显示 python 关键字。
Update
使用我的 after/syntax/python.vim 文件尝试以下解决方案之一:
syn include @pythonRst syntax/rst.vim
syn region pythonDocstring start=+^\s*'''+ end=+'''+ contains=@pythonRst
导致使用以下命令打开文件时,RESt 文件呈灰色显示:.py
扩大:
使用 a 打开同一个文件时.rst
。扩展似乎工作正常(只是为了表明我有一个休息语法文件):
请注意,我已经尝试过有和没有colorscheme
在我的 .vimrc 中