在VS Code中,如何只复制某个文件夹的路径(不包含文件名)?
我正在使用这段代码来复制一个文件的路径:
{"key": "ctrl+shift+alt+f11","command": "copyFilePath","when": "!editorFocus"},
{"key": "ctrl+shift+alt+f11","command": "copyFilePath","when": "editorFocus"},
但如何只复制文件夹的路径,不包含文件名?
我尝试过 Copy 扩展,但只有复制文件名的选项。
完整版本:
版本:1.120.0
提交:0958016b2af9f09bb4257e0df4a95e2f90590f9f
日期:2026-05-12T20:17:22Z
Electron:39.8.8
ElectronBuildId:13870025
Chromium:142.0.7444.265
Node.js:22.22.1
V8:14.2.231.22-electron.0
操作系统:Windows_NT x64 10.0.26200
解决方案
这可以很容易地通过我写的一个扩展来实现,Find and Transform 因为它允许你在按键绑定中使用VS Code的内置变量,例如 ${fileDirname}。
下面是一个按键绑定,它会把 ${fileDirname} 放入剪贴板:
{
"key": "alt+f", // whatever keybinding you want
"command": "findInCurrentFile",
"description": "modify the clipboard with file's dirname",
"args": {
"run": [
"$${",
"await vscode.env.clipboard.writeText(`${fileDirname}`);",
"}$$"
],
"restrictFind": "line"
},
"when": "!editorHasSelection"
}
它会写入你的 keybindings.json 文件。
对该按键绑定使用的唯一限制是光标必须处于一个空白行上。
要在空白行上“放松光标”,请设置一个无意义的 find,并使用这个按键绑定,它会把 / 路径分隔符替换为 \。
{
"key": "alt+f", // whatever keybinding you want
"command": "findInCurrentFile",
"description": "modify the clipboard",
"args": {
"find": "@#$%^^%",
"run": [
"$${",
"const dirname = '${fileDirname}'.replace(/\\\//g, '\\\\');",
"await vscode.env.clipboard.writeText(dirname);",
"}$$"
],
"runWhen": "onceOnNoMatches"
}
}
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。