Sublime 3: imposta la mappa dei tasti per la funzione Vai a definizione


143

Voglio creare un collegamento in stile Eclipse Ctrl+ MouseClickper aprire la funzione / metodo. Sublime Text 3 ha già chiamato questa funzione goto_definitionma è vincolata a F12.

Ma non sono sicuro di come creare questa associazione. Ho cercato qui la documentazione ma era troppo complessa. Puoi aiutarmi con questo semplice key binding?

Modifica: in seguito a questo articolo mi è stato detto di farlo: http://webtempest.com/better-definition-navigation-in-sublime-text-3/

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

Questo non sembra funzionare, ctrl+ shift+ clicknon esegue nulla.


3
superè la chiave di Windows per Windows e Linux e la chiave di comando per OS X, non di controllo. Provalo e vedi se ottieni il comportamento che desideri.
skuroda,

Risposte:


244

Per chiunque voglia impostare la definizione di goto in stile Eclipse, è necessario creare il .sublime-mousemapfile nella Usercartella Sublime .

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

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

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

Ora apri quel file e inserisci la seguente configurazione

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

Puoi cambiare modifierschiave come preferisci.


Poiché Ctrl- button1su Windows e Linux viene utilizzato per selezioni multiple, l'aggiunta di un secondo tasto modificatore come Altpotrebbe essere una buona idea se si desidera utilizzare entrambe le funzionalità:

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

In alternativa, è possibile utilizzare il pulsante destro del mouse ( button2) da Ctrlsolo e non interferire con alcuna funzione integrata.


4
Questa sembra la risposta corretta, ma ho fatto tutto quello che hai detto e ancora non funziona sto ctrl+ clicke non sta facendo nulla, ottengo un erroreUnable to parse binding
Kivylius

hai controllato il nome del file di configurazione? puoi pubblicare screenshot degli errori da qualche parte?
Boris Brdarić,

Qualcuno sa come avresti fatto clic destro per questo? Sono stato in grado di aggiungere il comando a un file del menu Context.sublime ma non sono riuscito a capire come passare negli arg per il testo attualmente selezionato ... O la riga ... Ho cercato bene mentre cercavo la documentazione (e ho provato "args": "drag_select") ma non sono riuscito a capirlo. Preferirei fare clic con il tasto destro e passare alla definizione sebbene funzioni alla grande! Grazie.
Tom,

Potrei anche associare il tasto Invio a questo in modo da non doverlo premere manualmente ogni volta che ctrl + clic?
user3388884

@ BorisSamardžija, inoltre, come posso fare in modo che lo script precedente cerchi la definizione della funzione nel mio file corrente anziché passare ad altri file esterni.
Alexander Solonik,

90

Per impostare vai alla definizione su alt + d. Dal menu Preferenze> Key Bindings-User. E quindi aggiungere il seguente JSON.

[
    { "keys": ["alt+d"], "command": "goto_definition" }
]

1
Non sono sicuro del motivo per cui mi sono votato, ma questa soluzione funziona perfettamente per me su Sublime 3.
mbokil

9
Probabilmente hai ottenuto il downgrade perché la domanda originale chiedeva "Voglio creare uno shorcut in stile Eclipse Ctrl + MouseClick per aprire la funzione / metodo". Ho trovato la tua risposta utile in quanto non sono interessato alla versione di scelta rapida del mouse, quindi ho votato. :)
Charles Roper,

1
sembra l'opzione migliore rispetto al cmd + opt + down
ud

Possibile usare al button1posto di d... quindi, abbiamo"alt" + "button"
IROEGBU

22

Se vuoi vedere come fare una definizione corretta vai in Sublime Text-> Preferenze-> Key Bindings - Default e cerca il comando che vuoi sovrascrivere.

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

Quelli sono due che mostrano nel mio Default.

Su Mac ho copiato il secondo per sovrascrivere.

in Sublime Text -> Preferenze -> Key Bindings - User Ho aggiunto questo

/* Beginning of File */

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

/* End of File */

Questo lo lega alla combinazione Comando + Maiusc + 1 su mac.


6

Su un Mac devi impostare tu stesso il keybinding. Vai semplicemente a

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

e inserisci quanto segue:

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

Ciò consentirà il keybinding di Shift + Command + Mabilitare goto definition. Puoi impostare il keybinding su qualsiasi cosa tu voglia, ovviamente.


4

ctrl! = super su macchine Windows e Linux.

Se la versione F12 di "Vai a definizione" produce risultati di più file, la versione "ctrl + maiusc + clic" potrebbe non funzionare bene. Ho trovato quel bug durante la visualizzazione del progetto Golang con il pacchetto GoSublime.


1
CMD + MAIUSC + MOUSE1 non funziona! qual è la sintassi giusta per fare clic su con GoTo Definition?
Magico,

@Magico È richiesta l'installazione di GoSublime e può funzionare solo per il progetto Golang. GoSublime: Godoc / Goto Definition ctrl+dot,ctrl+g o ctrl+shift+left-clicksu Windows. Sostituisci ctrl come comando su Mac.
Ivan Chau,

0

Sto usando la versione portatile Sublime (per Windows) e questo (posizionando la mousemap nella SublimeText\Packages\Usercartella) non ha funzionato per me.

Ho dovuto posizionare il file mousemap nella SublimeText\Data\Packages\Usercartella per farlo funzionare dove si SublimeTexttrova la directory di installazione per la mia versione portatile. Data\Packages\Userè dove ho trovato anche il file keymap.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.