【问题标题】:Auto-add quotes around new lines in VS Code like Netbeans does像 Netbeans 一样在 VS Code 中的新行周围自动添加引号
【发布时间】:2026-02-12 23:20:03
【问题描述】:

刚刚完成从 Netbeans 到 VS Code 的过渡,VS Code 中缺少一件我非常怀念的东西,Netbeans 基本上会在您从字符串中按 Enter 时自动处理引号。

这些图片应该能说明我的意思,第一张图片是 Netbeans 内部的一个长字符串。

这是在我在字符串中间的某处按 enter 后没有按任何其他键

您可以看到它在光标所在的位置添加了一个引号,添加了一个换行符,添加了缩进,添加了一个点(PHP 的 concat 运算符),然后是另一个引号,这是一个非常棒的功能。

两件事;这叫什么,如何在 VS Code 中获得这种行为?

【问题讨论】:

  • 我正在寻找一个扩展来做到这一点,但找不到。奇怪的是,Visual Studio(非代码)完全有这个功能,至少对于 C#。也许甚至对于其他语言也是如此,不知道。

标签: netbeans visual-studio-code


【解决方案1】:

使用宏很容易做到。安装macrosRE extension

在您的 settings.json 中:

"macros": {

 "netbeans": [
      {
      "command": "type",
      "args": {
        "text": "\"\n\t\t. \""
      }
    }    
  ]
},

并在 keybindings.json 中为其设置一些键绑定:

{
    "key": "ctrl+alt+n",
    "command": "macros.netbeans"
  },

如果有一个“when”条件来检测是否在字符串中(以及在 php 文件中)...然后绑定到 Enter,那将非常有趣。但我怀疑是否有这样的“when”子句。

[编辑]:

我应该记得,在您的情况下,“宏”非常简单,您不需要使用宏功能。在你的 keybindings.json 中简单地试试这个:

{
    "key": "ctrl+alt+n",
    "command": "editor.action.insertSnippet",
    //"when": "editorTextFocus && editorLangId == php",
    //"when": "editorTextFocus && resourceLangId == php"
    "args": {
      "snippet": "\"\n\t\t. \""
    }
}

它只是在 args 中插入一个 sn-p。您可能想要也可能不想要“php”限制。如果要插入实际存在于 sn-ps 文件中的 sn-p,也可以使用以下方法:

{
  "key": "cmd+k 1",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "langId": "csharp",
    "name": "myFavSnippet"
  }
}

来自vscode doc: assigning a keybinding to a snippet

但您最终会希望将宏扩展允许您执行的命令链接在一起。

【讨论】:

  • 这就是我所担心的,因为 Netbeans 的方式只用 enter 键,它知道你当前使用的语言(尤其是 PHP,因为文件可以 - 并且确实 - 包含JS、HTML、PHP 等),这改变了 concat 运算符
  • 宏工作得很好,不知道我对这个解决方案的感觉如何,但在用了一天之后,感觉非常好,特别是因为我最终只需要在 PHP 中使用它
最近更新 更多