VSCode 创建未保存的文件并添加内容

VSCode create unsaved file and add content

在 VS Code 中,我想在新编辑器中创建一个新文档(相同 window),但它需要保持未保存状态。当文档处于未保存状态时,我找不到以编程方式设置该文档内容的方法。

我用过: commands.executeCommand("workbench.action.files.newUntitledFile") 但是似乎没有办法将内容添加到文件中。

当我创建一个新的临时文件并打开它时: workspace.openTextDocument(路径) 文件已保存。

有什么想法吗?

尝试使用 openTextDocumentuntitled 文档在给定路径创建未保存的文件,然后使用 WorkspaceEdit 添加一些文本:

import * as vscode from 'vscode';
import * as path from 'path';

const newFile = vscode.Uri.parse('untitled:' + path.join(vscode.workspace.rootPath, 'safsa.txt'));
vscode.workspace.openTextDocument(newFile).then(document => {
    const edit = new vscode.WorkspaceEdit();
    edit.insert(newFile, new vscode.Position(0, 0), "Hello world!");
    return vscode.workspace.applyEdit(edit).then(success => {
        if (success) {
            vscode.window.showTextDocument(document);
        } else {
            vscode.window.showInformationMessage('Error!');
        }
    });
});

新文件在第一次打开时不会保存,但在用户保存时会保存到指定路径。

希望这提供了一个好的起点。

VSCode 1.54(2021 年 2 月)应支持,这意味着 from Matt 默认实现:

Open Editors New Untitled File action

We have introduced a New Untitled File action in the Open Editors view title area.

我不知道如何在编辑器中打开它,但您可以创建一个未保存的文件,内容如下:

vscode.workspace.openTextDocument({
  content: "your content", 
  language: "text"
});

最终使用 this solution from Matt, but I was able to use it in combination with DarkTrick's response 保存文档时我遇到了一些问题。

通过使用默认行为创建一个空文档并在 then 子句中激活它。

vscode.workspace.openTextDocument({
    content: newXmlContent,
    language: "xml"
}).then(newDocument => {
    vscode.window.showTextDocument(newDocument);
});

这让我可以创建一个无标题的文档,其中包含我想要的任何内容,并在编辑器中显示它。虽然我无法给它起一个具体的名字。这可能是创建无标题文档的限制。