Sublime 3 - Définir la carte des touches pour la fonction Goto Definition

143

Je veux créer un raccourci de style Eclipse Ctrl+ MouseClickpour ouvrir la fonction / méthode. Sublime Text 3 a déjà cette fonction appelée goto_definitionmais elle y est liée F12.

Mais je ne sais pas comment créer cette liaison. J'ai cherché ici de la documentation mais c'était trop complexe. Pouvez-vous m'aider avec cette simple liaison de clé?

Edit: Suite à cet article, on m'a dit de faire ceci: http://webtempest.com/better-definition-navigation-in-sublime-text-3/

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

Cela ne semble pas fonctionner, ctrl+ shift+ clickn'exécute rien.

Kivylius
la source
3
superest la clé Windows pour Windows et Linux et la touche de commande pour OS X, pas de contrôle. Essayez cela et voyez si vous obtenez le comportement que vous voulez.
skuroda

Réponses:

244

Pour toute autre personne souhaitant définir la définition du style Eclipse, vous devez créer un .sublime-mousemapfichier dans le Userdossier Sublime .

Windows - créer Default (Windows).sublime-mousemapdans%appdata%\Sublime Text 3\Packages\User

Linux - créer Default (Linux).sublime-mousemapdans~/.config/sublime-text-3/Packages/User

Mac - créer Default (OSX).sublime-mousemapdans~/Library/Application Support/Sublime Text 3/Packages/User

Maintenant, ouvrez ce fichier et mettez la configuration suivante à l'intérieur

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

Vous pouvez changer de modifiersclé à votre guise.


Étant donné que Ctrl- button1sous Windows et Linux est utilisé pour plusieurs sélections, l'ajout d'une deuxième touche de modification comme Altpeut être une bonne idée si vous souhaitez utiliser les deux fonctionnalités:

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

Sinon, vous pouvez utiliser le bouton droit de la souris ( button2) Ctrlseul et ne pas interférer avec les fonctions intégrées.

Boris Brdarić
la source
4
Cela semble être la bonne réponse, mais j'ai fait tout ce que vous avez dit et ça ne fonctionne toujours pas, je suis ctrl+ clicket ça ne fait rien, j'obtiens une erreurUnable to parse binding
Kivylius
avez-vous vérifié le nom du fichier de configuration? pouvez-vous publier une capture d'écran d'erreur quelque part?
Boris Brdarić
Est-ce que quelqu'un sait comment vous faites un clic droit pour cela? J'ai pu ajouter à un fichier de menu Context.sublime la commande mais je n'ai pas pu comprendre comment passer les arguments pour le texte actuellement sélectionné ... Ou une ligne ... J'ai cherché un bon moment en essayant de trouver de la documentation (et j'ai essayé "args": "drag_select") mais je n'ai pas pu le comprendre. Je préfère faire un clic droit et passer à la définition, bien que cela fonctionne très bien! Merci.
Tom
Puis-je également lier la touche Entrée à cela pour ne pas avoir à appuyer manuellement dessus à chaque fois que je ctrl + clic?
user3388884
@ BorisSamardžija, comment puis-je faire en sorte que le script ci-dessus recherche la définition de la fonction dans mon fichier actuel plutôt que de passer à d'autres fichiers externes.
Alexander Solonik
90

Pour définir, accédez à la définition sur alt + d. Depuis le menu Préférences> Key Bindings-User. Et puis ajoutez le JSON suivant.

[
    { "keys": ["alt+d"], "command": "goto_definition" }
]
mbokil
la source
1
Je ne sais pas pourquoi j'ai voté, mais cette solution fonctionne parfaitement pour moi sur Sublime 3.
mbokil
9
Vous avez probablement été critiqué parce que la question originale demandait "Je veux créer un raccourci de style Eclipse Ctrl + SourisClick pour ouvrir la fonction / méthode". J'ai trouvé votre réponse utile dans la mesure où je ne suis pas intéressé par la version du raccourci souris, donc j'ai voté pour. :)
Charles Roper
1
semble être une meilleure option que le cmd + opt + down
mercredi
Possible d'utiliser à la button1place de d... alors, nous avons comme"alt" + "button"
IROEGBU
22

Si vous voulez voir comment faire une définition correcte, allez dans Sublime Text-> Préférences-> Key Bindings - Default et recherchez la commande que vous souhaitez remplacer.

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

Ce sont deux qui apparaissent dans mon Default.

Sur Mac, j'ai copié le second pour remplacer.

dans Sublime Text -> Preferences -> Key Bindings - User I added this

/* Beginning of File */

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

/* End of File */

Cela le lie à la combinaison Commande + Maj + 1 sur mac.

philcollin_us
la source
6

Sur un Mac, vous devez définir vous-même la liaison de touches. Allez simplement à

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

et saisissez ce qui suit:

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

Cela activera la liaison de touches Shift + Command + Mpour activer la définition goto. Vous pouvez bien sûr définir le raccourci clavier sur tout ce que vous souhaitez.

Abhishek Nick Ganguly
la source
4

ctrl! = super sur les machines Windows et Linux.

Si la version F12 de "Goto Definition" produit des résultats pour plusieurs fichiers, la version "ctrl + shift + click" peut ne pas fonctionner correctement. J'ai trouvé ce bogue lors de la visualisation du projet golang avec le package GoSublime.

minou
la source
1
CMD + SHIFT + MOUSE1 ne fonctionne pas! quel est le bon sintax pour faire un clic sur la définition GoTo?
Magico
@Magico Nécessite l'installation de GoSublime et cela ne peut fonctionner que pour le projet Golang. GoSublime: Godoc / Goto Definition ctrl+dot,ctrl+g ou ctrl+shift+left-clicksous Windows. Remplacez ctrl comme commande sur Mac.
Ivan Chau
0

J'utilise la version portable Sublime (pour Windows) et cela (placer le mousemap dans un SublimeText\Packages\Userdossier) n'a pas fonctionné pour moi.

J'ai dû placer le fichier mousemap dans un SublimeText\Data\Packages\Userdossier pour le faire fonctionner où se SublimeTexttrouve le répertoire d'installation de ma version portable. Data\Packages\Userc'est là que j'ai également trouvé le fichier keymap.

Ravi
la source