Выделите строку в тройных одинарных кавычках в качестве комментариев?
Исходя из этого, я хотел бы выделить строку в тройных одинарных кавычках в качестве комментариев (или лучше для тех, которые не являются первыми в классе / функции / модуле).
Я использую джедай-вим. Вот содержимое файла after/syntax/python.vim
:
syn match pythonComment "#.*$" contains=pythonTodo,@Spell,jediFunction
syn region pythonString
\ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
\ contains=pythonEscape,@Spell,jediFunction
syn region pythonString
\ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
\ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell,jediFunction
syn region pythonRawString
\ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
\ contains=@Spell,jediFunction
syn region pythonRawString
\ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
\ contains=pythonSpaceError,pythonDoctest,@Spell,jediFunction
Я попытался удалить тройные одинарные кавычки в pythonString
и добавьте одно из следующего:
syn region Comment start=/'''/ end=/'''/
syn region pythonDocstring start=+^\s*[uU]\?[rR]\?'''+ end=+'''+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError
как предложено в этом разделе, но это не сработало (строка в тройных одинарных и двойных кавычках выделяется как строка документации).
ОБНОВЛЕНИЕ Пт 14 февраля 08:29:00 ИКТ 2014
@benjifisher
Я уверен, что это признается как pythonString
так как :echo synIDattr(synID(line("."), col("."), 1), "name")
говорил мне это.
:syn list pythonString
--- Syntax items ---
pythonString xxx start=/[uU]\=\z(['"]\)/ skip=/\\\\\|\\\z1/ end=/\z1/ contains=pythonEscape,@Spell
start=/[uU]\=\z("""\)/ end=/\z1/ keepend contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
start=/[uU]\=\z(['"]\)/ skip=/\\\\\|\\\z1/ end=/\z1/ contains=pythonEscape,@Spell,jediFunction
start=/[uU]\=\z("""\)/ end=/\z1/ keepend contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell,jediFunction
links to String
:syn list pythonComment
--- Syntax items ---
pythonComment xxx match /#.*$/ contains=pythonTodo,@Spell
match /#.*$/ contains=pythonTodo,@Spell,jediFunction
start=/'''/ end=/'''/
start=/[uU]\=\z('''\)/ end=/\z1/ keepend contains=pythonTodo,@Spell,jediFunction
start=/^\s*[uU]\?[rR]\?'''/ end=/'''/ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError
links to Comment
1 ответ
Ой, прости, я виноват.
Так как я добавил предложенную строку после первой строки (pythonComment
), Я также должен удалить одинарную кавычку во второй строке:
syn match pythonComment "#.*$" contains=pythonTodo,@Spell,jediFunction
syn region pythonComment start=/'''/ end=/'''/
syn region pythonString
\ start=+[uU]\=\z(["]\)+ end="\z1" skip="\\\\\|\\\z1"
\ contains=pythonEscape,@Spell,jediFunction
Урок: я должен добавить его в конец файла в следующий раз:D.