代码之家  ›  专栏  ›  技术社区  ›  Brian Leishman

在VS代码中像Netbeans那样在新行周围自动添加引号

  •  0
  • Brian Leishman  · 技术社区  · 7 年前

    我刚刚完成了从Netbeans到VS代码的转换,而在从字符串中按enter键时,Netbeans会自动处理引号,这让我非常怀念VS代码。

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

    Netbeans long text string before

    Netbeans after enter key

    您可以看到,它将一个引号放在光标所在的位置,添加一个换行符,添加缩进,添加一个点(PHP concat操作符),然后是另一个引号,这是一个非常棒的特性。

    两件事;这叫什么,我如何在VS代码中得到这种行为?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mark    7 年前

    使用宏很容易。安装 macrosRE extension .

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

    并在keybindings.json中为其设置一些keybinding:

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

    如果有一个 when “用于检测字符串(和php文件)中是否存在的条件,然后绑定到 进入 什么时候 “条款。

    [ 编辑

    我应该记得,在您的情况下,“宏”是如此简单,您不需要使用宏功能。在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

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