Visual Studio Code任务能否生成文件并自动在同一窗口中打开它?

5
我有一个C#任务,可以在我的VSCode工作区文件夹中生成一个文件。
我希望该文件在生成后自动打开。目前,我能做到的最好的是打印出文件的完整名称,以便用户可以通过Ctrl+单击该链接。
环境设置:
  • 在空文件夹中打开VSCode。
  • 创建一个新的C#控制台应用程序(在终端中键入dotnet new console)。
  • 更新Program.cs
namespace VSCodeOpenGeneratedFile
{
    using System;
    using System.IO;

    class Program
    {
        static void Main(string[] args)
        {
            File.WriteAllText("test.txt", "Hello world!");
            Console.WriteLine(Path.Combine(Directory.GetCurrentDirectory(), "test.txt"));
        }
    }
}

  • 新增.vscode/tasks.json文件:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Generate File",
            "command": "dotnet run",
            "type": "shell",
            "problemMatcher": []
        }
    ]
}
  • 运行任务:
    • Ctrl+Shift+P
    • 选择任务:运行任务
    • 选择生成文件
  • 终端中,您应该可以看到文件名,可以使用Ctrl+单击打开。

如何使任务自动打开该文件?


你的任务可以尝试在终端中调用 code "full/path/to/test.txt"。然而,即使这是可能的,我认为这会在新的 VSCode 实例中打开 test.txt - HaaLeo
1个回答

2
我发现你可以通过 VS Code的命令行参数 来实现这个目标。使用 -r 或者 --reuse-window 参数,你可以在当前的 VS Code 窗口打开一个文件。
在创建一个带日期的 markdown 文件后,我成功地完成了这个任务:
{
  "label": "new note",
  "type": "shell",
  "command": "set -lx t (date +%Y-%m-%d-%H-%M-%S);echo \"# $t\" > ${workspaceFolder}/notes/$t.md;code -r ${workspaceFolder}/notes/$t.md"
}

这是在Linux上使用fish shell,但你应该能够在Windows或其他shell中使用类似的命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接