如何使 vscode 在插入时停止覆盖右括号

How to make vscode stop overriding closing parentheses on insertion

当我尝试添加右括号时,它总是会覆盖右边的下一个括号。

这是一个屏幕截图(看起来我按下了键盘上的右键,但实际上我插入了一个新的右括号):

是否可以更改此行为?

尝试 setting:

"editor.autoClosingBrackets": "never"

完全禁用自动闭合括号功能。

从 1.38 版开始,答案是,您可以完全关闭它,同时仍然保持自动关闭括号

该版本引入了一个新设置 editor.autoClosingOvertype,它可以采用三个可能的值:

  • always - 总是改写右括号(旧的、经典的、受 Sublime-Text 启发的行为)
  • auto - "smart" overtype 尝试检测是否由编辑器自动插入右括号,并且仅改写那些括号(这是默认值)
  • never - 永远不要改写右括号

当前的默认行为是在 1.37 版中引入的。那时,没有可用的设置,无论如何你都会得到 "smart" 改写行为。

出于历史目的,我将保留下面的 material。


不,(目前)不可能,这是设计使然。当您键入全新代码并键入左括号时,您会自动获得右括号(当然,当您打开 editor.autoClosingBrackets 时)。然后,当您在这些括号内输入完您想要的任何内容后,您将如何 "exit" 并将右括号留在原处?最自然的方法是输入右括号!有些人不同意,但许多打字员发现这比将他们的手一直移到箭头键或鼠标上移动要容易得多。

请注意,此行为在很大程度上受到 Sublime Text 的启发和模仿。

了解自动闭合括号功能并非主要用于节省击键可能会有所帮助。相反,它的主要目的是提高语法突出显示的稳定性(当有一个未闭合的括号时它会变得不稳定),其次是帮助防止您 忘记 键入右括号。如果您碰巧因为某些其他原因而没有输入它就离开了,那么恭喜您,您 免费获得了那个括号!

如果你想添加一个括号(请注意,在你的示例中,你将添加一个 mismatched 括号),你有两个最简单的选择是(1) 将光标 放在 右括号后,然后再输入新括号,或 (2) 将光标放在您输入的位置,但继续输入右括号直到输入新括号被添加。无论哪种情况,任何 new 括号都只会添加到簇的末尾。

更新(现已过时):

值得一提的是,现在有一个 issue for this on the tracker, as well as a pull request 可以创建一个允许您关闭 "bracket-swallowing" 的设置。对于正在阅读本文的任何人,如果您对此感兴趣,您应该对拉取请求提供反馈。

进一步更新(现已过时):

目前有 new code being tested which will make the bracket overtyping more sophisticated。计划是让编辑器跟踪自动生成了哪些括号,并且只在这些括号上键入。一旦光标离开括号区域,编辑器就会停止跟踪这些括号,它们变成 "full-fledged" 无法再被键入的字符。希望这会在有用的地方保留改写,在没用的地方去掉。请注意,目前的计划是让这个新行为成为标准,并且没有有一个设置来控制它是否生效。

使用 VSCode 原始设置的方法是在括号列表的末尾添加新的括号。

...if (test === funFunction(data))| /* <- here */ {...

您应该可以输入新的括号,并且不会覆盖旧括号。这并不能解决您的问题,但是如果您想遵循 VSCode 使用的范例,那么您就可以了。

(我个人像其他评论所说的那样禁用它)

Vscode 终于解决了这个问题,您无需执行任何操作即可获得新的行为。现在它只会吞下自动添加的括号,所以一切都按预期进行。如果您已经从设置中禁用了 autoClosingBrackets 选项,建议现在再次打开它。