You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VS Code的keybindings.json的args内用正则提取文件名

解决方案

VSCode 快捷键的 sendSequence 命令参数本身不支持直接内嵌正则处理内置变量,你可以通过以下两种方式实现需求:

方案1:使用VSCode内置变量(推荐)

VSCode 原生提供了无需正则即可直接获取无后缀纯文件名的内置变量 ${fileBasenameNoExtension},直接替换原有配置的${file}即可:

{
    "key": "ctrl+shift+r",
    "command": "workbench.action.terminal.sendSequence",
    "args": { "text": "'${fileBasenameNoExtension}'\u000D"  }
}

相关VSCode路径内置变量参考:

  • ${file}:当前文件的完整绝对路径
  • ${fileBasename}:带后缀的完整文件名
  • ${fileExtname}:当前文件的后缀名
  • ${fileDirname}:当前文件所在的文件夹路径

方案2:借助终端正则处理

如果你有自定义正则匹配的特殊需求,需要用你给出的正则逻辑处理路径,可以把正则判断放到终端命令里执行,以下是不同终端的示例:

Bash/Zsh 环境示例

{
    "key": "ctrl+shift+r",
    "command": "workbench.action.terminal.sendSequence",
    "args": { "text": "filename='${file}'; [[ $filename =~ ^(.+/)*(.+)\\.(.+)$ ]] && echo \"${BASH_REMATCH[2]}\"\u000D"  }
}

PowerShell 环境示例

{
    "key": "ctrl+shift+r",
    "command": "workbench.action.terminal.sendSequence",
    "args": { "text": "$filename = '${file}'; if ($filename -match '^(.+\\\\)*(.+)\\.(.+)$') { $matches[2] }\u000D"  }
}

注意:Windows 路径的反斜杠需要双重转义,所以正则里的路径分隔符要写为 \\\\ 才能正常识别。

内容的提问来源于stack exchange,提问作者Yarden Orenshtein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:24:04