【问题标题】:Disable tab completion when pressing tab in Sublime Text 3在 Sublime Text 3 中按下制表符时禁用制表符补全
【发布时间】:2019-03-16 22:12:49
【问题描述】:

如何在 Sublime Text 3 中禁用自动完成或制表符完成?我希望按制表符始终插入制表符字符,除非自动完成下拉框显示其他选择。

发生了什么(Javascript 文件):

按tab后:

我尝试将其添加到 Preferences.sublime-settings 文件中:

"tab_completion": false

但是,行为没有改变。

我的首选项文件如下所示:

{
    "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
    "font_size": 9,
    "ignored_packages":
    [
        "Vintage"
    ],
    "tab_completion": false
}

我的Preferences > Settings - Syntax Specific 文件为空:

// These settings override both User and Default settings for the JavaScript syntax
{

}

【问题讨论】:

  • 如果您在编辑 JavaScript 文件时使用Preferences > Settings - Syntax Specific,弹出的窗口是否显示您有任何特定于这些文件类型的设置?
  • Settings - Syntax Specific 文件为空

标签: sublimetext3


【解决方案1】:

接受的答案对我不起作用。

这两个设置适用于 Sublime Text 3 及更高版本。

  "tab_completion": false,
  "auto_complete_commit_on_tab": false

不需要重新启动 Sublime Text。

【讨论】:

    【解决方案2】:

    对 HTML 标记补全感到烦恼?

    很有可能你就是这样到达这里的。在 SublimeText 中有一个众所周知的现象,如果你在“标签”或“表单”之类的词之后按 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" }
            ]
        },
    
    

    现在您所要做的就是将其复制到右侧(键盘映射 - 用户),然后删除前 2 个声明。那些说“insert_best_completion”的人。这样一来,您的 Tab 键仍将执行它通常应该执行的所有操作,缩进/取消缩进等等,除了那个让您疯狂很久的讨厌的自动完成功能。

    哦,不客气。
    不完全是。我的荣幸。

    无法告诉你我现在感到多么轻松。

    【讨论】:

    • 是的!我还必须在顶部添加{ "keys": ["tab"], "command": "insert", "args": {"characters": "\t"} },以便TAB 插入一个TAB,而不是继承自默认键盘映射的insert_best_completion。也很有用:保留前 2 个声明,但将它们的键更改为 "option+/" 和 args 默认为 "",因此 Option-/ 像 PyCharm 中一样执行 word/HTML 补全。 (困扰我的是 TAB sometimes 进行插入/缩进和 sometimes 根据可用的补全进行单词补全。这使它们解开了。)
    【解决方案3】:

    您是正确的,首选项 > 设置并设置“tab_completion”:false。然后你必须关闭 sublime 应用程序,这可能是这里缺少的步骤。

    【讨论】:

    • 我已重新启动应用程序,但选项卡补全仍在发生。编辑。不需要重启,我也需要添加这个"auto_complete_commit_on_tab": false
    猜你喜欢
    • 2014-04-01
    • 1970-01-01
    • 2014-01-04
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多