在Sublime Text 3中按下制表符时,禁用制表符完成

时间:2018-10-11 18:22:02

标签: sublimetext3

如何在Sublime Text 3中禁用自动完成或制表符完成?我希望按Tab总是插入制表符,除非“自动完成”下拉框显示其他选定内容。

发生了什么(JavaScript文件):

enter image description here

按下选项卡后:

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
}

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

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

}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

HTML标记完成烦恼了吗?

很有可能是您到达这里的方式。 SublimeText中有一个众所周知的现象,如果您在“ label”或“ form”之类的单词之后按Tab,它将假定您在尝试插入标签并为您完成。实际上,如果您处于类似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键仍然可以执行通常应做的所有技巧,包括缩进/取消缩进以及所有其他功能,之外,令人讨厌的自动完成功能一直困扰着您很长时间。

不客气。
不完全是。我很高兴。

不能告诉你我现在有多放心。