【发布时间】:2017-08-08 16:05:54
【问题描述】:
【问题讨论】:
标签: visual-studio-code vscode-settings
【问题讨论】:
标签: visual-studio-code vscode-settings
从 1.38 版开始,答案是是,您可以完全关闭它,同时仍保留自动关闭括号。
该版本引入了一个新设置editor.autoClosingOvertype,它可以采用三个可能的值:
always - 总是改写结束括号(旧的、经典的、受 Sublime-Text 启发的行为)auto - “智能”改写尝试检测编辑器是否自动插入关闭括号,并仅改写那些括号(这是默认设置)never - 永远不要改写右括号当前的默认行为是在 1.37 版中引入的。那时,没有可用的设置,无论如何你只是得到了“智能”的改写行为。
出于历史目的,我将保留以下材料。
不,(目前)不可能,这是设计使然。当您输入全新的代码并输入左括号时,您会自动获得右括号(当然,当您打开editor.autoClosingBrackets 时)。然后,当您在这些括号内输入完您想要的任何内容后,您将如何“退出”并将右括号留在原处?最自然的方法是键入右括号!有些人不同意,但许多打字员发现这比将手一直移到箭头键或鼠标移过去要容易得多。
请注意,这种行为很大程度上受 Sublime Text 的启发和模仿。
了解自动闭合括号功能并非主要用于节省击键可能会有所帮助。相反,它的主要目的是提高语法高亮的稳定性(当有一个未闭合的括号时它会变得不稳定),其次是帮助防止您忘记键入右括号。如果你碰巧因为其他原因没有输入它就离开了,那么恭喜你确实免费获得了那个括号!
如果您想添加一个括号(请注意,在您的示例中,您将添加一个 mismatched 括号),您拥有的两个最简单的选项是(1)将在键入新括号之前,光标 在 右括号簇之后,或者 (2) 将光标放在您所做的位置,但只需继续键入右括号,直到添加新括号。在任何一种情况下,任何 new 括号都只会添加到集群的末尾。
更新(现已过时):
不管怎样,现在跟踪器上有一个issue,还有一个pull request,用于创建一个允许您关闭“括号吞咽”的设置。对于正在阅读本文的任何人,如果您对此感兴趣,您应该就拉取请求提供反馈。
进一步更新(现已过时):
目前有new code 正在测试,它将make the bracket overtyping more sophisticated。计划是让编辑器跟踪自动生成了哪些括号,并且只在这些括号上键入。一旦光标离开括号区域,编辑器就会停止跟踪这些括号,它们会变成“成熟”的字符,无法再输入。希望这将在有用的地方保留过度输入,并在没有用的地方摆脱它。请注意,目前的计划是让这种新行为成为标准,并且不有一个设置来控制它是否生效。
【讨论】:
if 拆分为嵌套的if 或您想要修改某些现有代码的各种其他实例时。第一次输入代码时通常不会出现问题。我关闭了所有这三个:"editor.autoClosingQuotes": "never"、"editor.autoClosingBrackets": "never" 和 "editor.autoSurround": "never"。
【讨论】:
Vscode 终于解决了这个问题,你不需要做任何事情来获得新的行为。现在它只会吞下自动添加的括号,所以一切都按预期工作。如果您已经在设置中禁用了 autoClosingBrackets 选项,建议现在重新开启。
【讨论】:
使用 VSCode 原始设置的方法是在括号列表的末尾添加新的括号。
...if (test === funFunction(data))| /* <- here */ {...
您应该能够键入一个新的括号,并且它不会覆盖旧的括号。这并不能解决您的问题,但是如果您想遵循 VSCode 使用的范例,那么您就可以了。
(我个人像其他 cmets 所说的那样禁用它)
【讨论】: