Mam trudności z nauką wyrażeń regularnych vim (nie znam też dobrze innych wyrażeń regularnych), więc głównym problemem jest zdefiniowanie wyrażeń regularnych, które pasowałyby do siebie
some_function_call(simple_value, keyword=value)
słowo kluczowe w tym przykładzie.
Powinien więc pasować do słowa, jeśli znajduje się w parens i ma po nim znak równości.
Kolejnym problemem jest sposób definiowania plików składniowych w vimie. Byłbym wdzięczny za pomoc w tym, ale nauka nie powinna być trudna, więc prawdopodobnie mogę to zrobić samodzielnie.
EDYCJA na podstawie odpowiedzi Sporządziłem własny skrypt składni Pythona. Spróbuj tego. wprowadź opis linku tutaj
syntax-highlighting
regular-expression
filetype-python
użytkownik1685095
źródło
źródło
Odpowiedzi:
Dzięki tym ustawieniom:
Dostaję:
Tutaj:
contains
opcja pozwala mi zagnieżdżać wywołania funkcji.\i*
), po których następuje=
, ale nie==
, aby testy równości nie były dopasowane.Używając regionów, mogę zagnieżdżać mecze tyle, ile potrzebuję, co byłoby bardzo skomplikowane (niemożliwe?), Gdybym wybrał tylko
match
wyrażenia regularne.Uważam, że wyrażenia regularne używane do dopasowania wywołania funkcji i słowa kluczowego mogą zostać dopracowane, ale biorąc pod uwagę to, co jest ważne w Pythonie 3 , nie jest to zadanie, które chętnie podejmę się.
Opcjonalnie myślę, że możesz użyć tego do podświetlenia wywołań funkcji, używając
matchgroup
:źródło
pythonBuiltin
domyślnie wymienione w grupie składnisyntax/python.vim
. Jednak to nie rozróżnia funkcji i zmiennych wbudowanych (True
,False
aNone
także wpythonBuiltin
). Prawdopodobnie możesz skopiować definicje do swojego użytku.query(...).***filter***()
filtr jest podświetlony, podczas gdy nie ma on nic wspólnego z wbudowanymi funkcjami filtrów.syntax.vim
czyni je słowami kluczowymi. Zobacz github.com/vim/vim/blob/master/runtime/syntax/python.vim#L184syntax/python.vim
plików (tylko domyślny i nie widzę takiego zachowania: i.stack.imgur.com/LgF6F.png i zgadzam się z definicją słowa kluczowego - to najbliższe dopasowanie, a ja nie sądzę, że słowa kluczowe są dopasowane w przypadkach takich jaknonkeyword.keyword
. Jeśli chodzi o zmienne, zwróć uwagę, że te wbudowane są zmienne, są to zmienne zawierające obiekty funkcyjne, i można je przypisać tak samo jak innym zmiennym. Nic nie stoi na przeszkodzie, aby to zrobić,sorted = filter
a następnie użyćsorted
podobnegofilter
,Oto od czego możesz zacząć:
Rozkład:
To wymaga ulepszeń, ale daje przegląd tego, jak możesz to zrobić.
źródło
Oprócz odpowiedzi @ Nobe4 możesz wykonać następujące czynności:
~/.vim/after/syntax/python.vim
Umieść tezę w pliku:
Spowoduje to utworzenie pliku składni, który doda dopasowanie składni do argumentów, a następnie a
=
i ustawi styl do użycia. Ten temat:h mysyntaxfile-add
powinien być dla Ciebie interesujący.Użyłem także innego wyrażenia regularnego niż inna odpowiedź, oto szczegół (nie wiem, który z nich działa lepiej, więc prawdopodobnie będziesz musiał spróbować):
źródło
Odkryłem, że odpowiedź @ Wolfie przechwytuje rozpakowanie krotki jako słowo kluczowe, a także miała problemy z przechwyceniem argumentów słowa kluczowego z łamanym wierszem.
Zainspirowany jego wyrażeniem regularnym wymyśliłem następujące, aby umieścić w moim
python.vim
pliku składni. (Pamiętaj, że pierwotnie używampython.vim
pliku składni z sheerun / vim-polyglot )Podział wyrażenia regularnego jest bardzo podobny do odpowiedzi @ Wolfie :
Zauważ, że nie będzie to kolor argument słowa kluczowego napisany jako:
key = value
. Co uważam za dobrą rzecz, ponieważ jest to sprzeczne z oficjalną rekomendacją białych znaków PEP-8 dla argumentów słów kluczowych .źródło
Przyjęta odpowiedź w momencie pisania przerwała podświetlanie ciągów w listach argumentów funkcji (według jakiej alchemii nie wiem), więc mam nadzieję, że jest to bezpieczniejsza wersja, oparta na wersji Statoxa .
ctermfg
jest dla terminala konsoli,guifg
jest dla GUI. Oczywiście możesz dowolnie zmieniać kolory na dowolne. Oto przydatna lista .Jak zawsze najlepiej włożyć to do środka
~/.vim/after/syntax/python.vim
Aby uzyskać rozkład wyrażeń regularnych, proszę:
Ostatnia kontrola powstrzymuje wyróżnianie od warunkowych kolorów. Możesz usunąć, jeśli chcesz.
źródło