【问题标题】:Sublime 3 - Set Key map for function Goto DefinitionSublime 3 - 为函数 Goto 定义设置键映射
【发布时间】:2013-04-20 14:01:48
【问题描述】:

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

但我不确定如何创建此绑定。我查看了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 的命令键,而不是控制。试试看,看看你是否得到了你想要的行为。

标签: keyboard-shortcuts sublimetext2 sublimetext sublimetext3


【解决方案1】:

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 替换为命令。
【解决方案2】:

对于其他想要设置 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,以及如何让上述脚本在当前文件中查找函数定义,而不是跳转到其他外部文件。
【解决方案3】:

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

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

【讨论】:

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

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

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

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

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

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

/* Beginning of File */

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

/* End of File */

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

【讨论】:

    【解决方案5】:

    在 Mac 上,您必须自己设置键绑定。直接去

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

    并输入以下内容:

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

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

    【讨论】:

    • 在 linux 和 windows 上将 shift+command+m 更改为 shift+control+m
    【解决方案6】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-08-16
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2017-02-23
      • 2022-12-01
      • 2014-04-01
      相关资源
      最近更新 更多