VS代码扩展-获取完整路径



我正在为VS Code编写一个插件,我需要知道调用扩展名的文件的路径,无论是从编辑器上下文菜单还是资源管理器上下文菜单调用的,还是用户只键入了扩展名命令。

function activate(context){
    // get full path of the file somehow
}

提前感谢!

如果需要文件,请使用uri.fsPath如果您需要工作区文件夹,请使用uri.path

if(vscode.workspace.workspaceFolders !== undefined) {
    let wf = vscode.workspace.workspaceFolders[0].uri.path ;
    let f = vscode.workspace.workspaceFolders[0].uri.fsPath ; 
    message = `YOUR-EXTENSION: folder: ${wf} - ${f}` ;
    vscode.window.showInformationMessage(message);
} 
else {
    message = "YOUR-EXTENSION: Working folder not found, open a folder an try again" ;
    vscode.window.showErrorMessage(message);
}

更多详细信息可从VS Code API 中获取

您可以调用vscode窗口属性来检索文件路径或名称,具体取决于您要查找的内容。这将为您提供执行命令时在当前选项卡中打开的文件的名称。如果从资源管理器上下文调用,我不知道它是如何工作的。

var vscode = require("vscode");
var path = require("path");
function activate(context) {
   var currentlyOpenTabfilePath = vscode.window.activeTextEditor.document.fileName;
   var currentlyOpenTabfileName = path.basename(currentlyOpenTabfilePath);
   //...
}
import * as vscode from "vscode";
import * as fs from "fs";   
var currentlyOpenTabfilePath = vscode.window.activeTextEditor?.document.uri.fsPath;

上面的代码用于查找vscode上当前激活的文件的路径。

vscode.window.activeTextEditor获取编辑器的引用,document.uri.fsPath以字符串格式

返回该文件的路径

以下是vscode在windows中返回的各种路径的示例:

扩展路径:

vscode.extensions.getExtension('extension.id').extensionUri.path
> /c:/Users/name/GitHub/extensionFolder 
vscode.extensions.getExtension('extension.id').extensionUri.fsPath
> c:UsersnameGitHubextensionFolder

当前文件夹:

vscode.workspace.workspaceFolders[0].uri.path
> /c:/Users/name/Documents/Notes 
vscode.workspace.workspaceFolders[0].uri.fsPath
> c:UsersnameDocumentsNotes 

当前编辑器文件:

vscode.window.activeTextEditor.document.uri.path
> /c:/Users/name/Documents/Notes/temp.md 
vscode.window.activeTextEditor.document.uri.fsPath
> c:UsersnameDocumentsNotestemp.md 

注意,pathfsPath指的是同一文件夹。fsPath以适合操作系统的形式提供路径。

如果需要当前扩展的路径,请使用上下文对象。这将在调试模式和生产模式下工作:

export async function activate(context: ExtensionContext) {
  console.log(context.extension);
  console.log(context.extensionPath);
  console.log(context.extensionUri);
}

如果你要打另一个分机:

extensions.getExtension('extensionId');

在调试模式下,由于当前扩展未安装,因此会返回undefined。

相关内容

  • 没有找到相关文章

最新更新