Sublime 3 - Set Key map for function Goto Definition

Keyboard ShortcutsSublimetext2SublimetextSublimetext3

Keyboard Shortcuts Problem Overview


I want to create an Eclipse style shortcut Ctrl+MouseClick to open the function/method. Sublime Text 3 has already this function called goto_definition but it is bound to F12.

But I'm not sure how to create this binding. I looked here for documentation but it was too complex. Can you one help me out with this simple key binding?

Edit: Following this article I was told to do this: http://webtempest.com/better-definition-navigation-in-sublime-text-3/

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

This doesn't seem to work, ctrl+shift+click executes nothing.

Keyboard Shortcuts Solutions


Solution 1 - Keyboard Shortcuts

For anyone else who wants to set Eclipse style goto definition, you need to create .sublime-mousemap file in Sublime User folder.

Windows - create Default (Windows).sublime-mousemap in %appdata%\Sublime Text 3\Packages\User

Linux - create Default (Linux).sublime-mousemap in ~/.config/sublime-text-3/Packages/User

Mac - create Default (OSX).sublime-mousemap in ~/Library/Application Support/Sublime Text 3/Packages/User

Now open that file and put the following configuration inside

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

You can change modifiers key as you like.


Since Ctrl-button1 on Windows and Linux is used for multiple selections, adding a second modifier key like Alt might be a good idea if you want to use both features:

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

Alternatively, you could use the right mouse button (button2) with Ctrl alone, and not interfere with any built-in functions.

Solution 2 - Keyboard Shortcuts

To set go to definition to alt + d. From the Menu Preferences > Key Bindings-User. And then add the following JSON.

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

Solution 3 - Keyboard Shortcuts

If you want to see how to do a proper definition go into Sublime Text->Preferences->Key Bindings - Default and search for the command you want to override.

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

Those are two that show in my Default.

On Mac I copied the second to override.

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

/* Beginning of File */

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

/* End of File */

This binds it to the Command + Shift + 1 combination on mac.

Solution 4 - Keyboard Shortcuts

On a mac you have to set keybinding yourself. Simply go to

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

and input the following:

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

This will enable keybinding of Shift + Command + M to enable goto definition. You can set the keybinding to anything you would like of course.

Solution 5 - Keyboard Shortcuts

ctrl != super on windows and linux machines.

If the F12 version of "Goto Definition" produces results of several files, the "ctrl + shift + click" version might not work well. I found that bug when viewing golang project with GoSublime package.

Solution 6 - Keyboard Shortcuts

I'm using Sublime portable version (for Windows) and this (placing the mousemap in SublimeText\Packages\User folder) did not work for me.

I had to place the mousemap file in SublimeText\Data\Packages\User folder to get it to work where SublimeText is the installation directory for my portable version. Data\Packages\User is where I found the keymap file as well.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKivyliusView Question on Stackoverflow
Solution 1 - Keyboard ShortcutsBoris BrdarićView Answer on Stackoverflow
Solution 2 - Keyboard ShortcutsmbokilView Answer on Stackoverflow
Solution 3 - Keyboard Shortcutsphilcollin_usView Answer on Stackoverflow
Solution 4 - Keyboard ShortcutsNick GangulyView Answer on Stackoverflow
Solution 5 - Keyboard ShortcutskittykittyView Answer on Stackoverflow
Solution 6 - Keyboard ShortcutsRaviView Answer on Stackoverflow