2016-06-09 28 views
0

In TextMate können mehrere Befehle an denselben Tastenanschlag gebunden sein. Wenn Sie diesen Tastenanschlag eingeben, zeigt TextMate einfach ein kleines Menü in der Nähe Ihres Cursors an, in dem die verschiedenen Befehle aufgelistet sind, und Sie können einen auswählen, indem Sie eine Zahl eingeben.Tastenkombinationen in Sublime-Text überladen

Ich möchte dies (oder etwas sehr ähnliches) in Sublime Text tun. Ich würde sehr bevorzugen, wenn es eine Möglichkeit gibt, Sublime (oder ein Plugin für Sublime) zu bekommen, um das Überladen selbst zu verwalten, so dass ich zwei Dinge an den gleichen Schlüssel binden kann (oder zwei verschiedene Pakete können verschiedene Befehle an denselben Schlüssel binden) Alles funktioniert einfach.

Es wäre VIEL weniger ideal, wenn ich dies manuell verwalten müsste, wie zum Beispiel eine Art Menü definieren und dann die beiden Befehle anbieten zu lassen. Aber wenn das die einzige Lösung ist, bin ich immer noch daran interessiert zu wissen, wie es geht.

Antwort

0

In Sublime Text 3 (nicht sicher über 2), wird die zuletzt eingegebene Tastenkombination + Befehlskombination berücksichtigt und ausgeführt. Auch im Menü Einstellungen gibt es 2 Optionen für Tastenbelegung - Standard und Benutzer. Die Tastenkombinationen + Befehl in der Benutzerdatei überschreiben immer die in der Standarddatei.

Um Ihre Frage zu beantworten, habe ich gerade versucht und es ist möglich. Was Sie jedoch tun müssten, ist, ein Plugin in Sublime Text zu erstellen, ihm eine Tastenbindung in Key Binding - User zuzuweisen und dann in Ihrem Plugin können Sie die gewünschten Befehle ausführen. Wenn es sich um vordefinierte Befehle für Sublime Text handelt, können Sie sie wie im folgenden Code gezeigt hinzufügen. Ich habe hier die Tastenkombination "Strg + Tab" überladen.

#Key Bindings - User file (sublime-text-3/Packages/User/Default (Linux).sublime-keymap) 
    [ 
     { "keys": ["ctrl+tab"], "command": "test_overload_two" } 
    ] 

habe ich eine neue Datei unter (sublimen-Text-3/Packages/User) Alle hier erstellten Dateien werden als Plugins in ST3 geladen. Stellen Sie sicher, dass die Datei eine Py Verlängerung (Python)

#Overload.py 

import sublime, sublime_plugin 

class TestOverloadTwoCommand(sublime_plugin.WindowCommand): 
    def run(self): 
     sublime.message_dialog("Command 2") 
     self.window.run_command("next_view_in_stack") 

Also, was passiert, wenn ich die Strg + Tab-Taste drücken Bindung ist zunächst ein Sublime Nachrichtendialog erscheint mit „Command 2“ und dann, wenn ich auf " ok "im Dialogfeld wechselt die Ansicht zur nächsten Ansicht (Tab), die in Sublime geöffnet ist.

Das können Sie also tun. Hoffe das beantwortet deine Frage.

1

Während es möglich wäre, ein Plugin zu erstellen, das ein Menü von Aktionen öffnet, wenn eine bestimmte Tastenkombination gedrückt wird, wäre ein (potentiell) besserer Weg, contexts in Ihrer benutzerdefinierten Tastenanbindung zu verwenden. Sie können mehrere Schlüsselbindungsdefinitionen mit derselben Tastenkombination definieren, jedoch je nach Kontext unterschiedliche Aktionen ausführen, z. B. ob sich der Cursor in einem bestimmten Bereich befindet oder eine bestimmte Regex dem umgebenden Text entspricht oder nicht bestimmte Einstellung ist der eine oder andere Wert usw. Während dies eine gewisse Menge an Setup im Voraus erfordert, sind Kontexte extrem mächtig.