问题
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.
回答1:
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.
回答2:
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" }
]
回答3:
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.
回答4:
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.
回答5:
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.
回答6:
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.
来源:https://stackoverflow.com/questions/16235706/sublime-3-set-key-map-for-function-goto-definition