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

gak*_*gak 39 keyboard-shortcuts autocomplete sublimetext sublimetext3

在Sublime Text 3中,我想禁用enter从自动完成下拉列表中选择项目的tab键,并且只允许键执行此操作.

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

{ "keys": ["enter"], "command": "commit_completion", "context":
    [
        { "key": "auto_complete_visible" },
        { "key": "setting.auto_complete_commit_on_tab", "operand": false }
    ]
},
Run Code Online (Sandbox Code Playgroud)

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

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

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

lyd*_*ell 61

我从未使用过Sublime Text 3,但我认为自Sublime Text 2以来,以下内容没有改变.

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

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

{ "key": "setting.auto_complete_commit_on_tab", "operand": false }
Run Code Online (Sandbox Code Playgroud)

...表示"只有在名为'auto_complete_commit_on_tab'的设置被设置为false时才执行命令".所以只需打开该设置即可.

在Default/Preferences.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,
Run Code Online (Sandbox Code Playgroud)

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

  • 我*喜欢*此设置的描述"如果此设置为true,则更好,但我们默认将其设置为false" (11认同)

sku*_*oda 11

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

{ "keys": ["enter"], "command": "noop", "context":
    [
        { "key": "auto_complete_visible" },
        { "key": "setting.auto_complete_commit_on_tab", "operand": false }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

编辑

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