我正在 Visual Studio Code 中处理一个项目,其目录结构如下:
project-root
├── dirA
│ └── dirB
├── dirB
└── tests
├── dirA
└── dirB
我想在工作区设置中使用
dirA
从资源管理器视图中排除顶层的 dirB
和 files.exclude
,without 排除嵌套的 dirA/dirB
、tests/dirA
和 tests/dirB
。
不幸的是,在
"**/dirA": true
中使用 "**/dirB": true
和 files.exclude
之类的模式也会隐藏嵌套目录,因为 glob 模式适用于任何深度具有这些名称的所有目录。
有没有办法在 VS Code 的顶层严格指定排除,使用
files.exclude
或其他方法,以便仅隐藏顶层 dirA
和 dirB
,而不隐藏结构中更深层的同名对象?
VS Code 的 glob 模式匹配
files.exclude
没有提供区分项目结构不同级别的目录的方法。这些模式全局应用,影响与该模式匹配的所有目录,无论其相对于工作空间根的深度如何。
特定的全局模式:使用更具体的路径(例如,
"/project-root/dirA": true
)无法达到预期的效果,因为模式是相对于工作空间根的,并且在files.exclude
语法中不支持直接指定根。
唯一命名:将顶级目录名称更改为唯一可能可行,但由于命名限制或项目标准并不总是可行。
手动更新:对于更大或更动态的项目结构,动态更新
files.exclude
是不切实际的。
我认为你正在寻找的东西是不可能的(尽管我很乐意错)。您可以通过
./dir{A,B}/[!d]*
靠近。但它将无法排除 ${workspaceFolder}/dir{A,B}
下以 d
开头的文件夹和文件。
有关文档,请参阅 https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options 和 https://code.visualstudio.com/docs/editor/glob-patterns。