vscode不用插件直接修改源代码如何实现“打开最近的文件/文件夹"的功能,要求文件路径显示在文件目录下,并且没有二级目录,直接将最近打开的10项文件/文件夹的路径显示在”文件“目录的最下面,然后点击某一个文件路径,则会打开相应的文件/文件夹。请问需要在哪些文件中进行添加代码或者修改,添加的具体代码是什么。
时间: 2024-02-11 13:04:36 浏览: 170
要实现这个功能,需要在 VSCode 的菜单栏中添加一个菜单项,然后在菜单项被点击时弹出一个 QuickPick 列表,列出最近打开的文件/文件夹,点击某一项后再打开相应的文件/文件夹。具体的实现步骤如下:
1. 打开 VSCode 的命令面板,选择 Open User Settings,然后在右边的 JSON 配置文件中添加以下代码:
```
"menu": {
"file": [
{
"command": "extension.openRecent",
"when": "editorFocus",
"group": "navigation",
"label": "Open Recent"
}
]
}
```
这里添加了一个名为 "Open Recent" 的菜单项,并指定了它的命令 ID 为 "extension.openRecent"。
2. 创建一个名为 "openRecent.ts" 的 TypeScript 文件,添加以下代码:
```
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
const disposable = vscode.commands.registerCommand('extension.openRecent', async () => {
const recents = vscode.workspace.getConfiguration().get('workbench.editor.recentlyOpened');
const items = recents.map((recent: any) => ({
label: recent.label || recent.filename,
description: recent.workspace ? recent.workspace.configPath : recent.filename,
path: recent.workspace ? recent.workspace.configPath : recent.filename
}));
const selected = await vscode.window.showQuickPick(items, { placeHolder: 'Select recent file/folder to open' });
if (selected) {
vscode.commands.executeCommand('vscode.openFolderOrFile', vscode.Uri.file(selected.path));
}
});
context.subscriptions.push(disposable);
}
```
这里实现了 "extension.openRecent" 命令的具体逻辑。首先获取最近打开的文件/文件夹列表,然后将它们转换成 QuickPick 的列表项格式。当用户选择某一项时,调用 "vscode.openFolderOrFile" 命令打开相应的文件/文件夹。
3. 修改 "package.json" 文件,添加以下代码:
```
"activationEvents": [
"onCommand:extension.openRecent"
],
"contributes": {
"commands": [
{
"command": "extension.openRecent",
"title": "Open Recent"
}
]
}
```
这里注册了 "extension.openRecent" 命令,并指定了它的激活事件为 "onCommand:extension.openRecent"。
4. 最后,在 VSCode 中按下 F5 进行调试,完成后可以在菜单栏中看到 "Open Recent" 菜单项了。点击它后就可以弹出 QuickPick 列表了,列出最近打开的文件/文件夹,点击某一项后就可以打开相应的文件/文件夹了。
阅读全文