Sublime 3-为功能Goto定义设置键映射


143

我想创建一个Eclipse样式快捷方式Ctrl+ MouseClick以打开该函数/方法。Sublime Text 3已经调用了此功能,goto_definition但已绑定到F12

但是我不确定如何创建此绑定。我在这里查找文档,但是它太复杂了。您可以通过这种简单的键绑定帮助我吗?

编辑:在这篇文章之后,我被告知要这样做:http : //webtempest.com/better-definition-navigation-in-sublime-text-3/

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

这似乎并没有工作,ctrl+ shift+ click执行什么。


3
super是Windows和Linux的Windows键,OS X的命令键(非控制键)。尝试一下,看看是否得到想要的行为。
skuroda

Answers:


244

对于其他想要设置Eclipse风格goto定义的人,您需要.sublime-mousemap在Sublime User文件夹中创建文件。

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

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

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

现在打开该文件,并将以下配置放入其中

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

您可以根据需要更改modifiers密钥。


因为Ctrl- button1在Windows和Linux用于多个选择,添加第二个修改键一样Alt,如果你想使用这两个功能可能是一个好主意:

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

或者,您可以单独使用鼠标右键(button2Ctrl,而不会干扰任何内置功能。


4
这似乎是正确的答案,但是我做了您所说的所有事情,但仍然不起作用,我正在ctrl+ click并且没有执行任何操作,我得到一个错误Unable to parse binding
Kivylius 2013年

您检查配置文件名称了吗?您可以在某处张贴错误屏幕截图吗?
BorisBrdarić13年

有人知道您会如何右键单击它吗?我能够将命令添加到Context.sublime-menu文件中,但无法弄清楚如何为当前选择的文本传递args ...或行...在尝试查找文档时我搜索了很好(并尝试使用“ args”:“ drag_select”),但无法弄清楚。我宁愿右键单击并跳到定义,尽管这样做确实很棒!谢谢。
汤姆(Tom)

我是否也可以将Enter键与此绑定,所以我不必每次按Ctrl键并单击时都手动按下它?
user3388884 2014年

@BorisSamardžija,还有我如何使上面的脚本在当前文件中查找函数定义,而不是跳转到其他外部文件。
亚历山大·索洛尼克

90

要将定义设置为alt + d。从菜单首选项>键绑定用户。然后添加以下JSON。

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

1
不能确定为什么我下投票,但这种解决方案可以正常使用了我的崇高3
mbokil

9
您可能不满意,因为最初的问题是“我想创建Eclipse样式快捷键Ctrl + MouseClick以打开函数/方法”。我发现您的答案很有用,因为我对鼠标快捷方式版本不感兴趣,因此我投票赞成。:)
Charles Roper

1
似乎比cmd + opt + down更好的选择
uday

可以button1代替d... 使用,所以,我们喜欢"alt" + "button"
IROEGBU

22

如果要查看如何进行正确的定义,请进入Sublime Text-> Preferences-> Key Bindings-Default,然后搜索要覆盖的命令。

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

这是我的默认值中显示的两个。

在Mac上,我复制了第二个以覆盖。

在Sublime Text->首选项->快捷键-用户中我添加了此

/* Beginning of File */

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

/* End of File */

这会将其绑定到Mac上的Command + Shift + 1组合。


6

在Mac上,您必须自行设置键盘绑定。只需转到

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

并输入以下内容:

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

这将启用键绑定Shift + Command + M以启用goto定义。您可以将键盘绑定设置为您当然想要的任何内容。


4

ctrl!=在Windows和Linux计算机上为super。

如果F12版本的“转到定义”产生多个文件的结果,则“ Ctrl + Shift +单击”版本可能无法正常工作。我在使用GoSublime包查看golang项目时发现了该错误。


1
CMD + SHIFT + MOUSE1不起作用!单击con GoTo Definition正确的sintax是什么?
Magico 2013年

@Magico必须安装GoSublime,它仅适用于Golang项目。GoSublime:Godoc / Goto定义 ctrl+dot,ctrl+gctrl+shift+left-click在Windows上。在Mac上将ctrl替换为命令。
Ivan Chau

0

我正在使用Sublime便携式版本(适用于Windows),而此操作(将鼠标映射放置在SublimeText\Packages\User文件夹中)对我不起作用。

我必须将mousemap文件放在SublimeText\Data\Packages\User文件夹中,以使其工作在SublimeText便携式版本的安装目录中。 Data\Packages\User也是我找到键盘映射文件的地方。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.