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

如何在Visual Studio Code代码片段中提取当前文件的最后一级目录名?

从VS Code代码片段的TM_DIRECTORY提取最后一级文件夹名

我懂你遇到的坑了——本来想通过VS Code代码片段的变量转换,从TM_DIRECTORY的完整路径里抠出最后一个文件夹名,结果正则表达式直接被输出成文本了,对吧?问题出在转换语法的使用方式上,我给你捋清楚正确的写法:

正确的转换写法

VS Code的代码片段变量转换必须遵循${变量名/正则表达式/替换内容/标志}的格式,针对你的需求,直接用这个就行:

${TM_DIRECTORY/.*\\///}

拆解一下这个转换的逻辑

  • .*:匹配路径里从开头到最后一个斜杠的所有内容
  • \\/:是转义后的路径斜杠(因为正则里/是转换语法的分隔符,必须用反斜杠转义才能匹配实际的路径分隔符)
  • 替换内容留空:把前面匹配到的部分全部删掉,剩下的就是最后一级文件夹的名称了

举个实际例子:如果TM_DIRECTORY的值是/Volumes/my-project-path/ParentFolder/MyFolder,用这个转换后就会得到MyFolder。

完整的代码片段示例

如果你要生成{folder: "MyFolder"}这样的代码,对应的JSON格式代码片段应该这么写(注意JSON里的反斜杠需要双重转义):

"Get Current Folder Name": {
  "prefix": "folderName",
  "body": [
    "{folder: \"${TM_DIRECTORY/.*\\\\//}\"}"
  ],
  "description": "Insert the name of the current file's parent folder"
}

兼容Windows和macOS/Linux的通用写法

如果你的代码需要跨系统兼容(Windows用反斜杠,macOS/Linux用正斜杠),可以把正则改成匹配两种分隔符:

${TM_DIRECTORY/.*[\\\\\\/]//}

这个正则会匹配最后一个/或者\及之前的所有内容,替换后同样能得到正确的文件夹名。

你之前失败的原因

大概率是没用到正确的${.../.../...}结构,比如直接写了$TM_DIRECTORY/.*\\///——这种写法会被VS Code当成普通字符串输出,而不是执行变量转换操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:40:48