Sublime Text 3 - 点击选项卡不添加 space,而是使文本小写

Sublime Text 3 - Hitting tab doesn't add space, instead makes text lower case

如果我输入以下内容:

TEST

然后按 TAB,代码现在看起来像这样:

test

我不知道发生了什么,但制表符不再缩进并将当前行的文本更改为小写。

知道如何恢复 TAB 功能吗?

在一般情况下,一个可能的原因是您安装了第三方软件包,该软件包窃取了 Tab 键绑定以执行其自己的操作,在此case 会将前面的单词转为小写。

如果此行为适用于您之后碰巧按 Tab 的任何单词,就会出现这种情况。在那种情况下,解决方案是找到执行此操作的软件包并禁用或重新配置它。

在您的情况下,我认为更可能的原因是在您当前正在编辑的文件中出现 TEST 一词,并且您启用了以下设置:

// When enabled, pressing tab will insert the best matching completion.
// When disabled, tab will only trigger snippets or insert a tab.
// Shift+tab can be used to insert an explicit tab when tab_completion is
// enabled.
"tab_completion": true,

当设置设置为 true(这是默认设置)时,按 Tab 将尝试执行制表符补全,这不仅考虑片段和补全还有当前缓冲区中的单词。

在那种情况下,如果您要输入单词 test 并在单词 TEST 也出现在缓冲区中的位置按 Tab , 它被认为是一个潜在的完成,将成为替代品。

如果这是问题所在,只需输入 t 并按 Tab,您就会看到类似的行为,这将循环显示所有 T 单词在缓冲区中尽可能完成。

假设这就是您遇到的情况,以下方法之一应该可以为您解决问题:

  1. 在您的偏好中将tab_completion设置为false;这将在所有地方完全禁用该功能

  2. 仅在您遇到问题的特定文件类型的设置中将 tab_completion 设置为 false;这将使该功能在一般情况下保持启用状态,但会阻止它出现在您不希望它出现的文件中。

  3. 改用Shift+Tab;该键序列将执行 Tab 通常执行的操作并插入制表符,即使 Tab 会尝试完成。

要使 #3 正常工作,请确保您按如下方式设置此设置:

// By default, shift+tab will only unindent if the selection spans
// multiple lines. When pressing shift+tab at other times, it'll insert a
// tab character - this allows tabs to be inserted when tab_completion is
// enabled. Set this to true to make shift+tab always unindent, instead of
// inserting tabs.
"shift_tab_unindent": false,

此值的默认值为 false,在这种情况下,正如注释中提到的那样,绑定将执行一个制表符,除非您选择了多行,在这种情况下它会取消缩进。