如何禁用/覆盖自动完成的回车键?

时间:2013-03-14 23:37:13

标签: autocomplete sublimetext3 keyboard-shortcuts sublimetext

在Sublime Text 3中,我想禁用 enter 键从自动完成下拉列表中选择一个项目,并且只允许 tab 键这样做。 / p>

我在内置的Default (OSX).sublime-keymap文件中找到了此部分:

{ "keys": ["enter"], "command": "commit_completion", "context":
    [
        { "key": "auto_complete_visible" },
        { "key": "setting.auto_complete_commit_on_tab", "operand": false }
    ]
},

似乎如果我从配置中删除 enter 将不会在下拉列表中选择一个项目。不幸的是,建议不要更改此文件,只能在我的User文件中覆盖它。我不认为我实际上可以在不修改.app内容的情况下编辑它。

我尝试通过删除不同的部分来覆盖它,并删除除"keys": ["enter"]之外的所有内容,但似乎没有任何效果。

如何在不修改内置Default (OSX).sublime-keymapUser/Default (OSX).sublime-keymap文件的情况下实现此目标?

2 个答案:

答案 0 :(得分:57)

我从未使用Sublime Text 3 ,但我认为自Sublime Text 2以来,以下内容未发生变化。

您想要实现的目标实际上是Sublime Text的标准功能。你只需要打开它。

您引用的代码中的这一行......

{ "key": "setting.auto_complete_commit_on_tab", "operand": false }

...表示“只有在名为'auto_complete_commit_on_tab'的设置被设置为false时才执行命令”。所以只需打开那个设置。

在默认/偏好.sublime-settings中:

// By default, auto complete will commit the current completion on enter.
// This setting can be used to make it complete on tab instead.
// Completing on tab is generally a superior option, as it removes
// ambiguity between committing the completion and inserting a newline.
"auto_complete_commit_on_tab": false,

"auto_complete_commit_on_tab": true放入User / Preferences.sublime-settings中。可以通过“首选项”菜单访问这两个提到的文件。

答案 1 :(得分:10)

您可以将其分配给不存在的命令。尝试将以下内容添加到User/Default (OSX).sublime-keymap

{ "keys": ["enter"], "command": "noop", "context":
    [
        { "key": "auto_complete_visible" },
        { "key": "setting.auto_complete_commit_on_tab", "operand": false }
    ]
}

如果您安装/编写具有命令noop的插件,则需要更改此命令。

修改

Lydell的解决方案更好:)忘了那个设置(尽管它在上下文中所以我应该知道......)。猜猜我的答案是一个更通用的“如何禁用键绑定”。