Das Schreiben von "$" nach dem Schreiben oder Kopieren von Variablen in PHP ist ein Problem, nicht wahr? Ich habe ein [Plug-In] geschrieben (https://github.com/plsplsme/sublime_text/blob/master/add_variable_symbol.py), das dies mit einem einzigen Befehl ausführt, daher werde ich es kurz vorstellen.
Außerdem habe ich zuvor einen Artikel Sublime Snippets verbrauchen geschrieben. Außerdem wird beschrieben, wie Sie ein Snippet mit einem Plug-In aufrufen. Wenn Sie also interessiert sind, schauen Sie bitte.
Nachdem Sie diesen Artikel gelesen haben, erfahren Sie viel über Plugins:
Darüber hinaus kann es auf andere als PHP angewendet werden. Bitte ändern Sie es nach Ihren Wünschen.
Zunächst werde ich den vollständigen Text schreiben.
import sublime, sublime_plugin
import re
class AddVariableSymbol(sublime_plugin.TextCommand):
regs = {'PHP':'[a-zA-Z0-9_]+'}
symbols = {'PHP':'$'}
def run(self, edit, **args):
#get current word
current_word_region = self.view.word(self.view.sel()[0].begin())
current_word = self.view.substr(current_word_region)
#add symbol
if (self.checkIfVariable(current_word,args['language'])):
self.addSymbol(edit,current_word_region,args['language'])
#chck if the string is variable
def checkIfVariable(self,string,lang):
reg = self.regs[lang]
if (re.match(reg,string)):
return True
else:
return False
#add symbol to the top of word
def addSymbol(self,edit,current_word_region,lang):
symbol = self.symbols[lang]
add_point = current_word_region.begin()
self.view.insert(edit, add_point, symbol)
Die Tastenkombinationen, die dieses Plug-In aufrufen, sind:
{ "keys": ["alt+4"], "command": "add_variable_symbol", "args": {"language": "PHP"}},
Sie können Werte mit args
an das Plug-In übergeben.
Ich werde es im Folgenden ausführlich erläutern, aber es ist möglicherweise einfacher zu verstehen, wenn Sie auf Sublimes API-Referenz verweisen.
Die Hauptfunktion ist wie folgt definiert.
def run(self, edit, **args):
Stellen Sie sicher, dass Sie "self" und "edit" als Versprechen definieren. Der an das Plug-In übergebene Wert wird in ** args
gespeichert.
Das Wort wird in den folgenden zwei Zeilen erfasst. self.view.sel () [0] .begin ()
ruft die aktuelle Cursorposition ab und self.view.word ()
ruft die Region dieses Wortes ab. Durch Eingabe in "self.view.substr ()" wird das ausgewählte Wort in current_word eingegeben.
#get current word
current_word_region = self.view.word(self.view.sel()[0].begin())
current_word = self.view.substr(current_word_region)
Als nächstes werden Symbole hinzugefügt. Zunächst prüft checkIfVariable ()
für alle Fälle, ob das ausgewählte Wort eine Variable ist.
if (self.checkIfVariable(current_word,args['language'])):
self.addSymbol(edit,current_word_region,args['language'])
Überprüfen Sie, ob das ausgewählte Wort eine Variable ist. Ich benutze einen regulären Ausdruck. Fehlerbehandlung, wenn reg
unbestimmt ist, wird übersprungen. Entschuldigung.
def checkIfVariable(self,string,lang):
reg = self.regs[lang]
if (re.match(reg,string)):
return True
else:
return False
Fügen Sie als Nächstes ein Symbol hinzu.
def addSymbol(self,edit,current_word_region,lang):
symbol = self.symbols[lang]
add_point = current_word_region.begin()
self.view.insert(edit, add_point, symbol)
Hier geht es darum, dass das, was an das dritte Argument übergeben wird, nicht "current_word", sondern "current_word_region" ist. Dies liegt daran, dass die Funktion Region.begin ()
verwendet wird, um die Position zum Hinzufügen des Symbols abzurufen. Fügen Sie nach dem Abrufen der Position ein Symbol mit "self.view.insert ()" hinzu. Sie sollten in der Lage sein, Ihre Lieblingszeichenfolge nach dem Wort mit "Region.end ()" hinzuzufügen.
Es war eine grobe Erklärung, aber wie wäre es damit? Ich war mir über das Sublime-Plug-In zunächst nicht sicher, aber ich habe es anhand verschiedener Programmbeispiele verstanden. Ich hoffe, dieser Artikel kann ein Beispiel dafür sein. Als ich diesen Artikel schrieb, bemerkte ich, dass anscheinend automatisch festgestellt werden kann, ob das aktuell geschriebene Skript PHP ist. Ich werde es versuchen, wenn ich Zeit habe.