ChatGPT解决这个技术问题 Extra ChatGPT

Sublime 3 - 为函数 Goto 定义设置键映射

我想创建一个 Eclipse 风格的快捷方式 Ctrl+MouseClick 来打开函数/方法。 Sublime Text 3 已经有这个名为 goto_definition 的函数,但它绑定到 F12

https://i.stack.imgur.com/hVNDJ.jpg

但我不确定如何创建此绑定。我查看了 here 的文档,但它太复杂了。你能帮我解决这个简单的键绑定吗?

编辑:在这篇文章之后,我被告知要这样做: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 什么也不执行。

super 是 Windows 和 Linux 的 windows 键和 OS X 的命令键,而不是控件。试试看,看看你是否得到了你想要的行为。

M
MattDMo

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

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

Linux - 在 ~/.config/sublime-text-3/Packages/User 中创建 Default (Linux).sublime-mousemap

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

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

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

您可以随意更改 modifiers 键。

由于 Windows 和 Linux 上的 Ctrl-button1 用于多选,如果您想同时使用这两个功能,添加第二个修改键(如 Alt)可能是个好主意:

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

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


这似乎是正确的答案,但我做了你所说的一切,但仍然无法正常工作,我是 ctrl + click,它什么也没做,我收到错误 Unable to parse binding
你检查过配置文件名吗?你可以在某处发布错误截图吗?
有谁知道你如何右键单击这个?我能够将命令添加到 Context.sublime-menu 文件中,但无法弄清楚如何为当前选定的文本传递参数...或行...我在尝试查找文档时搜索了很多内容(并且确实尝试了“args”:“drag_select”)但无法弄清楚。我宁愿右键单击并跳转到定义,尽管这确实很好用!谢谢。
我也可以将回车键绑定到这个,这样我就不必每次按 ctrl + 单击时手动按下它吗?
@BorisSamardžija,我如何让上面的脚本在我的当前文件中查找函数定义,而不是跳转到其他外部文件。
m
mbokil

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

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

不确定为什么我被否决了,但这个解决方案在 Sublime 3 上对我来说非常有效。
您可能被否决了,因为最初的问题是“我想创建一个 Eclipse 样式的快捷键 Ctrl+MouseClick 来打开函数/方法”。我发现您的回答很有用,因为我对鼠标快捷方式版本不感兴趣,所以我投了赞成票。 :)
似乎比 cmd+opt+down 更好的选择
可以使用 button1 而不是 d...所以,我们有像 "alt" + "button"
j
j0k

如果您想了解如何进行正确的定义,请进入 Sublime Text->Preferences->Key Bindings - Default 并搜索您要覆盖的命令。

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

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

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

在 Sublime Text -> Preferences -> Key Bindings - 用户我添加了这个

/* Beginning of File */

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

/* End of File */

这将它绑定到 mac 上的 Command + Shift + 1 组合。


t
thor

在 Mac 上,您必须自己设置键绑定。只需前往

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

并输入以下内容:

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

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


在 Linux 上窗口将 shift+command+m 更改为 shift+control+m
k
kittykitty

ctrl != 在 windows 和 linux 机器上超级。

如果“Goto Definition”的 F12 版本产生多个文件的结果,“ctrl + shift + click”版本可能无法正常工作。我在使用 GoSublime 包查看 golang 项目时发现了该错误。


CMD+SHIFT+MOUSE1 不起作用!点击 con GoTo 定义的正确语法是什么?
@Magico 需要安装 GoSublime,它可能仅适用于 Golang 项目。 GoSublime: Godoc/Goto Definition ctrl+dot,ctrl+gctrl+shift+left-click 在 Windows 上。在 Mac 上将 ctrl 替换为命令。
R
Ravi

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

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