Ich kämpfe mit dem Erlernen von regulären Ausdrücken (ich kenne auch keine anderen regulären Ausdrücke sehr gut), daher besteht das Hauptproblem darin, reguläre Ausdrücke zu definieren, die übereinstimmen würden
some_function_call(simple_value, keyword=value)
Schlüsselwort in diesem Beispiel.
Es sollte also mit einem Wort übereinstimmen, wenn es sich innerhalb von Parens befindet und ein Gleichheitszeichen dahinter steht.
Das nächste Problem ist das Definieren von Syntaxdateien in vim. Ich würde mich über Hilfe freuen, aber es sollte nicht so schwer zu lernen sein, also kann ich das wahrscheinlich alleine machen.
BEARBEITEN basierend auf der Antwort Ich habe mein eigenes Syntax-Skript für Python erstellt. Fühlen Sie sich frei, es zu versuchen. Geben Sie hier die Linkbeschreibung ein
syntax-highlighting
regular-expression
filetype-python
user1685095
quelle
quelle
Antworten:
Mit diesen Einstellungen:
Ich bekomme:
Hier:
contains
Option kann ich Funktionsaufrufe verschachteln.\i*
) besteht, gefolgt von=
, jedoch nicht==
, damit die Gleichheitsprüfungen nicht übereinstimmen.Durch die Verwendung von Regionen kann ich die Übereinstimmungen so oft verschachteln, wie ich es brauche. Das wäre sehr kompliziert (unmöglich?), Wenn ich nur
match
reguläre Ausdrücke gewählt hätte.Ich glaube, die regulären Ausdrücke, mit denen der Funktionsaufruf und das Schlüsselwort abgeglichen werden, können verfeinert werden. Angesichts der Gültigkeit von Python 3 bin ich jedoch nicht bereit, diese Aufgabe zu übernehmen.
Ich denke, Sie können dies optional verwenden, um Funktionsaufrufe hervorzuheben, indem Sie Folgendes verwenden
matchgroup
:quelle
pythonBuiltin
Syntaxgruppe in dem Standardsyntax/python.vim
. Allerdings unterscheidet es nicht zwischen Funktionen und Variablen builtin (True
,False
undNone
ist auch inpythonBuiltin
). Sie könnten wahrscheinlich die Definitionen für Ihre Verwendung kopieren.query(...).***filter***()
ähnlicher Filter wird hervorgehoben, obwohl er nichts mit den eingebauten Filterfunktionen zu tun hat.syntax.vim
sie zu Schlüsselwörtern. Siehe github.com/vim/vim/blob/master/runtime/syntax/python.vim#L184syntax/python.vim
Dateien (nur die Standarddateien und ich sehe nicht das Verhalten, das Sie tun: i.stack.imgur.com/LgF6F.png , und ich stimme der Keyword-Definition zu - das ist die engste Übereinstimmung, und ich glaube nicht , Schlüsselwörter in solchen Fällen aufeinander abgestimmt sindnonkeyword.keyword
. wie für Variablen, beachten Sie, dass diese builtins sind Variablen, sie sind Variablen Funktionsobjekte enthält, und kann wie alle anderen Variablen zugewiesen werden. Nichts hindert Sie daran , zu tunsorted = filter
und dann unter Verwendung vonsorted
wiefilter
.Hier können Sie beginnen:
Zerlegen:
Dies ist verbesserungsbedürftig, gibt Ihnen jedoch einen Überblick darüber, wie Sie dies tun können.
quelle
Zusätzlich zur Antwort von @ Nobe4 können Sie Folgendes tun:
~/.vim/after/syntax/python.vim
Setze diese Zeile in die Datei:
Dadurch wird eine Syntaxdatei erstellt, in der eine Syntaxübereinstimmung für Ihre Argumente gefolgt von a hinzugefügt
=
und der zu verwendende Stil festgelegt wird. Dieses Thema:h mysyntaxfile-add
dürfte für Sie interessant sein.Außerdem habe ich einen anderen regulären Ausdruck verwendet als die andere Antwort. Hier ist das Detail (ich weiß nicht, welcher besser funktioniert, also musst du es wahrscheinlich versuchen):
quelle
Ich fand, dass die Antwort von @ Wolfie das Auspacken eines Tupels als Schlüsselwort erfasst und es auch Probleme beim Erfassen von Schlüsselwortargumenten mit Zeilenumbruch gab.
Inspiriert von seinem Regex habe ich mir Folgendes ausgedacht, um meine
python.vim
Syntaxdatei einzutragen. (Denken Sie daran, dass ich ursprünglich die Syntaxdateipython.vim
von sheerun / vim-polyglot verwende. )Und die Regex-Aufschlüsselung ist der Antwort von @ Wolfie sehr ähnlich :
Beachten Sie, dass dies nicht ein Schlüsselwort Argument Farbe wie geschrieben:
key = value
. Das finde ich gut, da dies gegen die offizielle PEP-8-Whitespace-Empfehlung für Keyword-Argumente verstößt .quelle
Die vom Verfasser akzeptierte Antwort hat die Hervorhebung für Zeichenfolgen in Funktionsargumentlisten für mich unterbrochen (nach welcher Alchemie ich nicht weiß), daher hier eine hoffentlich sicherere Version, basierend auf der von Statox .
ctermfg
ist für Konsolenterminal,guifg
ist für GUI. Natürlich können Sie die Farben nach Belieben ändern. Hier ist eine praktische Liste .Wie immer tun Sie dies am besten, indem Sie es hineinlegen
~/.vim/after/syntax/python.vim
Für eine Regex-Aufschlüsselung klicken Sie hier:
Die abschließende Prüfung verhindert, dass die Hervorhebung durch Farbbedingungen hervorgehoben wird. Sie können es entfernen, wenn Sie möchten.
quelle