Я борюсь с изучением регулярных выражений vim (я тоже не очень хорошо знаю другие регулярные выражения), поэтому основная проблема состоит в том, чтобы определить регулярное выражение, которое будет соответствовать
some_function_call(simple_value, keyword=value)
Ключевое слово в этом примере.
Таким образом, оно должно соответствовать слову, если оно внутри паренов и после него должно быть знак равенства.
Следующая проблема - как определить файлы синтаксиса в vim. Я был бы признателен за помощь в этом, но это не должно быть так сложно учиться, поэтому я могу сделать это самостоятельно, вероятно.
РЕДАКТИРОВАТЬ, основываясь на ответе. Я разработал собственный синтаксический скрипт для python. Не стесняйтесь попробовать это. введите описание ссылки здесь
syntax-highlighting
regular-expression
filetype-python
user1685095
источник
источник
Ответы:
С этими настройками:
Я получил:
Вот:
contains
Опция позволяет вызовы функций мне гнездо.\i*
), за которыми следуют=
, но==
не совпадают, так что проверки на равенство не совпадают.Используя регионы, я вкладываю совпадения столько раз, сколько мне нужно, что было бы очень сложно (невозможно?), Если бы я просто использовал
match
регулярные выражения.Я считаю, что регулярные выражения, используемые для сопоставления вызова функции и ключевого слова, могут быть уточнены, но, учитывая то, что допустимо в Python 3 , я не хочу выполнять эту задачу.
Необязательно, я думаю, вы можете использовать это, чтобы выделить вызовы функций, используя
matchgroup
:источник
pythonBuiltin
синтаксиса по умолчаниюsyntax/python.vim
. Тем не менее, он не различает между функциями и встроенными переменными (True
,False
аNone
также вpythonBuiltin
). Возможно, вы могли бы скопировать определения для вашего использования.query(...).***filter***()
фильтр выделен, хотя он не имеет ничего общего со встроенными функциями фильтра.syntax.vim
делает их ключевыми словами. См github.com/vim/vim/blob/master/runtime/syntax/python.vim#L184syntax/python.vim
файлов (только по умолчанию, и я не вижу поведения, которое вы делаете: i.stack.imgur.com/LgF6F.png , и я согласен с определением ключевого слова - это наиболее близкое соответствие, и я Не думайте, что ключевые слова совпадают в таких случаях, какnonkeyword.keyword
. Что касается переменных, обратите внимание, что эти встроенные функции являются переменными, они являются переменными, содержащими объекты функций, и могут быть назначены так же, как и любые другие переменные. Ничто не мешает вам делать,sorted = filter
а затем использоватьsorted
какfilter
.Здесь вы можете начать с:
Разбивая:
Это требует улучшений, но дает вам представление о том, как вы можете это сделать.
источник
В дополнение к ответу @ Nobe4 вы можете сделать следующее:
~/.vim/after/syntax/python.vim
Поместите строку с тезисами в файл:
Это создаст файл синтаксиса, который добавит синтаксическое совпадение для ваших аргументов, за которым следует a,
=
и установит используемый стиль. Эта тема:h mysyntaxfile-add
должна быть интересной для вас.Кроме того, я использовал другое регулярное выражение, чем другой ответ, вот подробности (я не знаю, какой из них работает лучше, поэтому вам, вероятно, придется попробовать):
источник
Я обнаружил, что ответ @ Wolfie фиксирует развертывание кортежа как ключевого слова, и у него также были проблемы с захватом аргументов ключевых слов с разбитыми строками.
Вдохновленный его регулярным выражением, я придумал следующее, чтобы добавить в мой
python.vim
файл синтаксиса. (Имейте в виду, что я изначально используюpython.vim
файл синтаксиса из sheerun / vim-polyglot )И разбивка регулярных выражений очень похожа на ответ @ Wolfie :
Обратите внимание , что это не цвет ключевого слова аргумент записывается в виде:
key = value
. Что я считаю хорошей вещью, поскольку это идет вразрез с официальной рекомендацией PEP-8 в отношении пробелов для аргументов ключевых слов .источник
Принятый на момент написания принятый ответ прервал подсвечивание строк внутри списков аргументов функции для меня (по тому, какую алхимию я не знаю), так что, надеюсь, более безопасная версия, основанная на Statox'е .
ctermfg
для консольного терминала,guifg
для графического интерфейса. Конечно, вы можете изменить цвет на любой, который вы считаете модным. Вот удобный список .Как всегда, вам лучше положить это внутрь
~/.vim/after/syntax/python.vim
Для разбивки регулярных выражений, здесь вы идете:
Финальная проверка останавливает выделение из условных раскрасок. Вы можете удалить, если хотите.
источник