0

是否可以将片段的输出写入当前行上方的行?我正在尝试创建一个片段,您可以在其中从 csharp 文件中选择一个元素名称,并在元素上方插入一个摘要部分。

片段:

"CSharpSummarySelected": {
    "prefix": "c#-summary-selected",
    "body": [
        "/// <summary>",
        "/// ${1:$TM_SELECTED_TEXT}",
        "/// </summary>",
        "/// <returns>${2:returns}</returns>"
    ],
    "description": "Inserts Summary for component with selected text as name in C# files"
}
4

2 回答 2

0

Microsoft Visual Studio 产品包括一个代码片段管理器。

但是对于 Visual Studio Code,您将需要使用扩展。您将在Jorge Serrano 的 Visual Studio Marketplace C# Snippets for Visual Studio Code 中获得一份。

在此处输入图像描述

作者还在 Github 上发布了源代码https://github.com/J0rgeSerran0/vscode-csharp-snippets。这为其他开发人员编写他们的扩展提供了一个很好的学习机会。

于 2019-08-22T23:44:07.407 回答
0

我不认为你可以在不使用宏或扩展名的情况下在文本上方插入一个片段 - 除了选择是唯一的东西的琐碎情况,我认为你不是这种情况。

使用一些宏扩展,这里是 multi-command,把它放到你的 settings.json 中:

  "multiCommand.commands": [

    {
      "command": "multiCommand.cSharpSummary",
      "sequence": [
        "editor.action.clipboardCopyAction",
        "editor.action.insertLineBefore",
        {
          "command": "editor.action.insertSnippet",
          "args": {
            "name": "CSharpSummarySelected"
          }
        }

      ]
    }
  ]

并将您的片段放入一些片段文件中:

"CSharpSummarySelected": {
  "prefix": "c#-summary-selected",
  "body": [
      "/// <summary>",
      // "/// ${1:$TM_SELECTED_TEXT}",
      "/// ${1:$CLIPBOARD}",  // this works witheditor.action.clipboardCopyAction, select only

      "/// </summary>",
      "/// <returns>${2:returns}</returns>"
  ],
  "description": "Inserts Summary for component with selected text as name in C# files"
}

注意:我的代码片段使用$CLIPBOARD而不是$TM_SELECTED_TEXT. 这是因为在您选择的文本上方插入一行的行为会取消选择您的选择(即,您通过在上方插入一行会丢失您的选择)。

您只需选择您的变量,而不是实际复制它 - 宏将为您处理复制操作。但是剪贴板现在将在其上包含您的变量,而不是以前的任何变量-这可能会或可能不会被您接受-在宏中,我认为这是不可避免的。

现在宏将不会使用前缀而是使用键绑定来触发。在 keybindings.json 中:

{
  "key": "ctrl+alt+b",                      // whatever keybinding you choose
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.cSharpSummary" }
},

现在,当您选择一些文本并使用键绑定触发宏时,您的代码段将插入该行上方,并带有您想要的制表位。见演示:

在当前行上方插入代码段的宏演示

于 2019-08-23T01:29:52.993 回答