像Netbeans一样在VS Code中的新行周围自动添加引号

时间:2018-08-20 15:15:31

标签: netbeans visual-studio-code

刚刚完成从Netbeans到VS Code的过渡,而VS Code中缺少一件事,而Netbeans却让我很想念,当您在字符串中按Enter键时,它实际上会自动处理引号。

这些图片应该显示我的意思,第一张图片是Netbeans中的一个长字符串。

Netbeans long text string before

这是我在不按任何其他键的情况下在字符串中间某处按Enter键

Netbeans after enter key

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

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

1 个答案:

答案 0 :(得分: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”子句。

[ EDIT ]:

我应该记得,在您的情况下,“宏”非常简单,因此您无需使用宏功能。在您的keybindings.json中尝试一下:

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

它只是在args中插入一个代码段。您可能会或可能不希望使用“ php”限制。如果要插入实际上存在于摘要文件中的摘要,也可以使用以下方法:

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

来自vscode doc: assigning a keybinding to a snippet

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