在Sublime Text 3中按下Tab时禁用标签完成

5

我该如何在Sublime Text 3中禁用自动完成或制表符补全?我希望按下Tab键始终插入制表符,除非自动完成下拉框中显示其他内容。

发生了什么(Javascript文件):

enter image description here

按下Tab键后:

enter image description here

我尝试将以下内容添加到Preferences.sublime-settings文件中:
"tab_completion": false

然而,这个行为没有改变。
我的首选项文件看起来像这样:
{
    "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
    "font_size": 9,
    "ignored_packages":
    [
        "Vintage"
    ],
    "tab_completion": false
}

我的首选项>设置-语法特定文件是空的:
// These settings override both User and Default settings for the JavaScript syntax
{

}

如果您在编辑JavaScript文件时使用“首选项>设置-语法特定”,弹出的窗口是否显示您对这些类型文件的任何特定设置? - OdatNurd
“设置 - 语法特定”文件为空。 - jjz
4个回答

6
您说得对,需要进入“偏好设置”并将“tab_completion”设置为false。不过,您需要关闭Sublime应用程序,这可能是遗漏的步骤。

1
我已经重新启动了应用程序,但仍然发生标签补全。编辑。无需重新启动,我需要添加这个 "auto_complete_commit_on_tab": false - Ste

4

厌倦了自动补全HTML标签?

很可能你就是因为这个问题而来到这里。 在SublimeText中,如果您在“label”或“form”等单词后按Tab键,它会认为您要插入一个tag并自动完成。实际上,如果您处于类似HTML的上下文中,您几乎无法在这样的单词后插入制表符。

我刚刚找到了禁用此功能的方法。因为tab_completion:false并不能解决这个问题。打开资源文件、编辑Python脚本或者尝试网上能够找到的其他任何方法都没用——直到你意识到整个问题在于Tab键的功能被硬编码了;所以只需要打开你的键绑定,在默认设置中的左边查找以下神奇序列:

    { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} },
    { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false},
        "context":
        [
            { "key": "setting.tab_completion", "operator": "equal", "operand": true },
            { "key": "preceding_text", "operator": "not_regex_match", "operand": ".*\\b[0-9]+$", "match_all": true },
        ]
    },
    { "keys": ["tab"], "command": "replace_completion_with_next_completion", "context":
        [
            { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
            { "key": "setting.tab_completion", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["tab"], "command": "reindent", "context":
        [
            { "key": "setting.auto_indent", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_match", "operand": "^$", "match_all": true },
            { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }
        ]
    },
    { "keys": ["tab"], "command": "indent", "context":
        [
            { "key": "text", "operator": "regex_contains", "operand": "\n" }
        ]
    },
    { "keys": ["tab"], "command": "next_field", "context":
        [
            { "key": "has_next_field", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["tab"], "command": "commit_completion", "context":
        [
            { "key": "auto_complete_visible" },
            { "key": "setting.auto_complete_commit_on_tab" }
        ]
    },


现在你只需要把这个复制到右边 (keymap - user) ,然后删除顶部的两个声明。那些说“insert_best_completion”的声明。这样,你的 Tab 键仍然可以像往常一样完成所有技巧,缩进/取消缩进等操作,除了那个让你疯狂已久的自动完成功能。
哦,不客气。
不,真的,我很乐意帮忙。
无法形容我现在有多么宽慰。

1
是的!我也必须添加{ "keys": ["tab"], "command": "insert", "args": {"characters": "\t"} }在文件开头, 这样TAB键将插入一个制表符而不是默认按键映射中继承insert_best_completion。同样有用的是: 保留前2个声明但将它们的按键更改为"option+/"并将args默认值更改为"", 以便Option-/像PyCharm一样完成单词/ HTML。(困扰我的是TAB 有时 根据可用的自动完成项执行插入/缩进和有时执行单词完成。这将使它们解脱出来。) - Jerry101
1
在我的 Sublime 版本中,删除命令是 "auto_complete""commit_completion" - fin444

2

对我来说,被接受的答案没有起作用。

这两个设置适用于 Sublime Text 的 3 版本及以上版本。

  "tab_completion": false,
  "auto_complete_commit_on_tab": false

不需要重新启动Sublime Text。

0

对于那些正在运行Sublime Text 4的人,这里是我如何能够删除TAB上令人非常烦恼的弹出菜单。

  1. 前往:Sublime Text>Preferences>Key Bindings

  2. 这将在双窗格编辑器中打开绑定规则。左侧为应用程序默认设置,右侧为用户首选项。您无法编辑系统默认设置。您需要将要更改的规则复制到右侧并保存它们。然后它们将覆盖应用程序默认设置(无需重新启动)。

  3. 查找第117行,搜索“setting.tab_completion”。将该块复制到右侧(对我来说是117-126行)。

  4. 保留括号,除了tab_completion行之外,删除其他部分。将其设置为:

    { "key": "setting.tab_completion", "operator": "equal", "operand": false },

  5. 保存 enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接