在 vim 的 Python 评论块中匹配太长的行
Match too long lines inside Python comment block in vim
我需要突出显示太长的额外字符 Python 文档字符串行
正在尝试使用此代码:
syn region PythonDocString start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl
syn match TooLongDocString /\%80v.*/ containedin=PythonDocString
hi TooLongDocString guifg=Red
但它也匹配文档字符串之外的行并关闭默认的 Python 注释突出显示。如何让它发挥作用?
更新
之前
后
更新 2
突然,对于一个没有任何 """
形式注释的文件,我得到:
行:
sha = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=cwd).decode('ascii').strip()
当前代码:
au BufNewFile,BufRead *.py syn region pythonDocString start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError,pythonDocstringTooLong
au BufNewFile,BufRead *.py syn match pythonDocStringTooLong /\%81v.*/ contained
au BufNewFile,BufRead *.py hi def link pythonDocString pythonString
au BufNewFile,BufRead *.py hi def link pythonDocStringTooLong Error
containedin=...
将当前语法元素添加到引用元素的包含列表中,但 它确实暗示 contained
。如果 TooLongDocString
上没有该属性(为了保持一致性,BTW 也应该有 python...
前缀),该元素将匹配 anywhere.
无论如何,由于您可以控制这两个定义,因此您可以只在 pythonDocstring
上使用 contains=pythonDocstringTooLong
。我还认为应该包含其他(默认)语法元素:
syn region pythonDocString start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError,pythonDocstringTooLong
syn match pythonDocStringTooLong /\%80v.*/ contained
containedin=
通常用于无法修改引用语法元素定义的情况。
最后,我会 link 现有的高亮组而不是定义(仅限 GUI)高亮:
hi def link pythonDocStringTooLong Error
我需要突出显示太长的额外字符 Python 文档字符串行
正在尝试使用此代码:
syn region PythonDocString start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl
syn match TooLongDocString /\%80v.*/ containedin=PythonDocString
hi TooLongDocString guifg=Red
但它也匹配文档字符串之外的行并关闭默认的 Python 注释突出显示。如何让它发挥作用?
更新
之前
更新 2
突然,对于一个没有任何 """
形式注释的文件,我得到:
行:
sha = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=cwd).decode('ascii').strip()
当前代码:
au BufNewFile,BufRead *.py syn region pythonDocString start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError,pythonDocstringTooLong
au BufNewFile,BufRead *.py syn match pythonDocStringTooLong /\%81v.*/ contained
au BufNewFile,BufRead *.py hi def link pythonDocString pythonString
au BufNewFile,BufRead *.py hi def link pythonDocStringTooLong Error
containedin=...
将当前语法元素添加到引用元素的包含列表中,但 它确实暗示 contained
。如果 TooLongDocString
上没有该属性(为了保持一致性,BTW 也应该有 python...
前缀),该元素将匹配 anywhere.
无论如何,由于您可以控制这两个定义,因此您可以只在 pythonDocstring
上使用 contains=pythonDocstringTooLong
。我还认为应该包含其他(默认)语法元素:
syn region pythonDocString start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError,pythonDocstringTooLong
syn match pythonDocStringTooLong /\%80v.*/ contained
containedin=
通常用于无法修改引用语法元素定义的情况。
最后,我会 link 现有的高亮组而不是定义(仅限 GUI)高亮:
hi def link pythonDocStringTooLong Error