Sublime 3 - Legen Sie die Tastenkarte für die Funktion Gehe zu Definition fest

143

Ich möchte eine Verknüpfung im Eclipse-Stil Ctrl+ erstellen MouseClick, um die Funktion / Methode zu öffnen. Sublime Text 3 hat diese Funktion bereits aufgerufen goto_definition, ist aber daran gebunden F12.

Ich bin mir jedoch nicht sicher, wie ich diese Bindung erstellen soll. Ich habe hier nach Dokumentation gesucht , aber sie war zu komplex. Kannst du mir bei dieser einfachen Schlüsselbindung helfen?

Bearbeiten: Nach diesem Artikel wurde mir gesagt, dass ich dies tun soll: http://webtempest.com/better-definition-navigation-in-sublime-text-3/

[
    {
        "button": "button1", 
        "count": 1, 
        "modifiers": ["super", "shift"],
        "press_command": "drag_select",
        "command": "goto_definition"
    }
]

Dies scheint nicht zu funktionieren, ctrl+ shift+ clickführt nichts aus.

Kivylius
quelle
3
superist die Windows-Taste für Windows und Linux und die Befehlstaste für OS X, nicht die Steuerung. Versuchen Sie das und sehen Sie, ob Sie das gewünschte Verhalten erhalten.
Skuroda

Antworten:

244

Für alle anderen, die die Definition des Eclipse-Stils festlegen möchten, müssen Sie eine .sublime-mousemapDatei im Sublime- UserOrdner erstellen .

Windows - erstellen Default (Windows).sublime-mousemapin%appdata%\Sublime Text 3\Packages\User

Linux - erstellen Default (Linux).sublime-mousemapin~/.config/sublime-text-3/Packages/User

Mac - erstellen Default (OSX).sublime-mousemapin~/Library/Application Support/Sublime Text 3/Packages/User

Öffnen Sie nun diese Datei und fügen Sie die folgende Konfiguration ein

[
    {
        "button": "button1", 
        "count": 1, 
        "modifiers": ["ctrl"],
        "press_command": "drag_select",
        "command": "goto_definition"
    }
]

Sie können den modifiersSchlüssel nach Belieben ändern .


Da Ctrl- button1unter Windows und Linux für mehrere Auswahlen verwendet wird, ist das Hinzufügen eines zweiten Modifikatorschlüssels wie Alteine gute Idee, wenn Sie beide Funktionen verwenden möchten:

[
    {
        "button": "button1", 
        "count": 1, 
        "modifiers": ["ctrl", "alt"],
        "press_command": "drag_select",
        "command": "goto_definition"
    }
]

Alternativ können Sie die rechte Maustaste ( button2) Ctrlalleine verwenden und keine integrierten Funktionen beeinträchtigen.

Boris Brdarić
quelle
4
Dies scheint die richtige Antwort zu sein, aber ich habe alles getan, was du gesagt hast und trotzdem funktioniert es nicht. Ich bin ctrl+ clickund es tut nichts. Ich bekomme einen FehlerUnable to parse binding
Kivylius
Haben Sie den Namen der Konfigurationsdatei überprüft? Kannst du irgendwo einen Fehler-Screenshot posten?
Boris Brdarić
Weiß jemand, wie Sie dafür mit der rechten Maustaste klicken würden? Ich konnte den Befehl zu einer Context.sublime-Menü-Datei hinzufügen, konnte aber nicht herausfinden, wie die Argumente für den aktuell ausgewählten Text übergeben werden sollen ... oder Zeile ... Ich habe nach einer guten Suche gesucht, während ich versucht habe, Dokumentation zu finden (und habe "args": "drag_select" ausprobiert) konnte es aber nicht herausfinden. Ich würde lieber mit der rechten Maustaste klicken und zur Definition springen, obwohl dies großartig funktioniert! Vielen Dank.
Tom
Könnte ich auch die Eingabetaste daran binden, damit ich sie nicht jedes Mal manuell drücken muss, wenn ich Strg + Klick mache?
user3388884
@ BorisSamardžija, auch wie kann ich das obige Skript dazu bringen, nach der Funktionsdefinition in meiner aktuellen Datei zu suchen, anstatt zu anderen externen Dateien zu springen.
Alexander Solonik
90

Zum Einstellen gehen Sie zur Definition auf Alt + D. Über die Menüeinstellungen> Tastenkombinationen-Benutzer. Fügen Sie dann den folgenden JSON hinzu.

[
    { "keys": ["alt+d"], "command": "goto_definition" }
]
mbokil
quelle
1
Ich bin mir nicht sicher, warum ich abgewählt wurde, aber diese Lösung funktioniert perfekt für mich auf Sublime 3.
mbokil
9
Sie wurden wahrscheinlich abgelehnt, weil die ursprüngliche Frage lautete: "Ich möchte einen Shorcut im Eclipse-Stil erstellen. Strg + Mausklick, um die Funktion / Methode zu öffnen." Ich fand Ihre Antwort insofern nützlich, als ich nicht an der Maus-Shortcut-Version interessiert bin, also habe ich upvoted. :)
Charles Roper
1
scheint eine bessere Option zu sein als die cmd + opt + down
uday
Möglich zu verwenden button1statt d... also haben wir wie"alt" + "button"
IROEGBU
22

Wenn Sie sehen möchten, wie eine korrekte Definition vorgenommen wird, gehen Sie zu Sublime Text-> Preferences-> Key Bindings - Default und suchen Sie nach dem Befehl, den Sie überschreiben möchten.

{ "keys": ["f12"], "command": "goto_definition" },
{ "keys": ["super+alt+down"], "command": "goto_definition" }

Das sind zwei, die in meinem Standard angezeigt werden.

Auf dem Mac habe ich die zweite kopiert, um sie zu überschreiben.

in Sublime Text -> Einstellungen -> Tastenkombinationen - Benutzer habe ich dies hinzugefügt

/* Beginning of File */

[
    {
        "keys": ["super+shift+i"], "command": "goto_definition" 
    }
]

/* End of File */

Dies bindet es an die Kombination Befehl + Umschalt + 1 auf dem Mac.

philcollin_us
quelle
6

Auf einem Mac müssen Sie die Tastenkombination selbst festlegen. Einfach gehen zu

Sublime --> Preference --> Key Binding - User  

und geben Sie Folgendes ein:

{ "keys": ["shift+command+m"], "command": "goto_definition" }

Dadurch wird die Tastenkombination Shift + Command + Maktiviert, um die Goto-Definition zu aktivieren. Sie können die Tastenkombination natürlich auf alles einstellen, was Sie möchten.

Abhishek Nick Ganguly
quelle
4

ctrl! = super auf Windows- und Linux-Rechnern.

Wenn die F12-Version von "Gehe zu Definition" Ergebnisse mehrerer Dateien liefert, funktioniert die Version "Strg + Umschalt + Klick" möglicherweise nicht richtig. Ich habe diesen Fehler beim Anzeigen des Golang-Projekts mit dem GoSublime-Paket gefunden.

Kätzchen Kätzchen
quelle
1
CMD + SHIFT + MOUSE1 funktioniert nicht! Was ist die richtige Sintax, um auf con GoTo Definition zu klicken?
Magico
@Magico Erforderliche GoSublime-Installation und möglicherweise nur für Golang-Projekte. GoSublime: Godoc / Goto Definition ctrl+dot,ctrl+g oder ctrl+shift+left-clickunter Windows. Ersetzen Sie Strg als Befehl auf dem Mac.
Ivan Chau
0

Ich verwende die tragbare Version von Sublime (für Windows) und dies (Platzieren der Mauskarte im SublimeText\Packages\UserOrdner) hat bei mir nicht funktioniert.

Ich musste die Mousemap-Datei in einem SublimeText\Data\Packages\UserOrdner ablegen , damit sie funktioniert. Dort SublimeTextbefindet sich das Installationsverzeichnis für meine tragbare Version. Data\Packages\UserHier habe ich auch die Keymap-Datei gefunden.

Ravi
quelle