前几天我做了一件小事,直到那时我才知道这是可能的。我像往常一样在 VS Code 中打开了一个项目文件夹,然后向窗口添加了另一个不同的根文件夹。我一直认为当你打开一个项目时,它只有一个顶级根文件夹,仅此而已,如果你需要在其他地方打开另一个文件夹,你将在另一个窗口中打开它。但事实并非如此!
我们在 CodePen 上进行了一种“双仓库”操作(一个是主要的 Ruby on Rails 应用程序,另一个是我们的微服务),现在我可以同时打开它们。

现在我可以搜索这两个项目,并且基本上可以假装它是一个大型项目。
当你第一次这样做然后关闭 VS Code 窗口时,它会询问你是否要保存一个“工作区”。也许以后吧,我一直这么想。我知道它的意思,但我太懒了不想处理它。它会创建一个文件,我心想,我并没有真正为这样的文件准备位置。(我会避免仓库本身,因为我不想强迫我的系统给其他人。)
好吧,我终于克服了它并做到了。我把所有 .code-workspace
文件都放在一个本地文件夹中。它们实际上作为文件非常有用,因为我可以将这些文件放在我的 Dock 中,并且只需单击一下即可打开我的工作区,就像我想要的那样。
自定义工作区图标
工作区文件具有如下所示的特殊小图标

由于我将这些放在我的 Dock 中,我将其视为一个很好的机会,可以将它们制作成自定义图标!这将使我的使用变得非常清晰,并且使用起来也会更令人愉快,因为我可能每天都会多次使用它们。
从原始图标获得一些灵感,我抓取了SVG 徽标,并将其放置在我的项目徽标的右下方。

在 macOS 上更改徽标就像对文件“获取信息”,单击该面板中的徽标,然后粘贴图像一样简单。
现在我可以将它们保留在 Dock 中,并一键打开所有内容

打开项目时启动终端命令
既然我已经有了这些非常方便的一键式图标来打开我的项目,我就在想,“如果它也启动启动项目的命令会怎么样!”显然,这就是任务的用途,而且设置起来并不难(感谢Andrew!)。就在该设置文件旁边,在 .vscode/tasks.json
中,我使用了这个
{
"version": "2.0.0",
"tasks": [
{
"label": "Run Gulp",
"type": "shell",
"command": "gulp",
"task": "default",
"presentation": {
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": true
},
"runOptions": {
"runOn": "folderOpen"
}
}
]
}
每当我打开此工作区时,它都会为我启动命令 gulp
。我想你必须手动运行一次任务(终端→运行任务),以便它具有正确的权限,然后它就可以从那里开始工作了。

覆盖
我不认为这一定是特定于工作区的,但我真的很喜欢如何在项目文件夹中使用像 .vscode/settings.json
这样的文件来覆盖特定项目的 VS Code 设置。
例如,在 CSS-Tricks 上,我有一个非常基本的 Sass 设置,其中 Gulp 将 .scss
预处理成 .css
。这都很好,但我很可能在某个时候会搜索选择器。我不需要在 .css
中看到它,因为我没有使用纯 CSS。就像永远一样。我可以将此内容放在该设置文件中,并知道它仅适用于此项目,而不是我所有的项目。
{
"search.exclude": {
"**/*.css": true,
}
}
我喜欢这份指南,它很棒,我打算试一试。
但是你有没有尝试过 Project Manager 扩展?我已经使用它很多年了,它很棒,因为它实际上不需要保存任何文件。
我认为你把最好的部分留到了最后 :-)
这些是我阅读过的功能,我当时想“哦,这有点酷”,然后就忘记了。看到它们像这样组合在一起,突然间我看到了我未来在 git(hub|lab) 中的私有/个人项目元项目的景象。
嗨!作为拥有工作区文件夹的替代方案,我做了一件很棒的事情。
将你的工作区和 VSCode 特定文件保存在你的项目仓库的 .VSCode 文件夹下。然后只需配置你的本地 gitignore 文件以忽略该目录,然后你就可以在你的工作区中访问和编辑它,Git 会忽略整个文件夹,这样你就不会将你的个人任务配置文件推送到你的远程主机!
我建议你试一试!这真的很方便。如果你仍然希望在桌面上拥有这些快捷方式,你可以创建快捷方式(或者更进一步,创建指向项目文件夹中现有 .workspace 文件的软/硬链接)。
很酷的帖子!喜欢对细节的关注,毕竟小事情会带来快乐。
有用的提示 - 我喜欢将工作区放入 Dock 的想法
感谢你抽出时间写下这些提示。像许多其他人一样,工作区之类的东西是我在使用 VS Code 进行项目时忽略的东西,但是能够利用从我的 Dock 启动项目或设置自定义设置和任务之类的东西非常实用。
哇,我真的很想知道如何在 Windows 中复制每个项目的任务栏图标!
你如何在 Mac Dock 中放置工作区?
像这样
Geoff 提到的那个是关于向 Dock 添加空格,但你实际上并不需要这样做才能将工作区放在 Dock 中。Dock 中接受文件的区域位于分隔符之后的右侧(或底部)。在垃圾桶所在的部分。
这很棒,也适合我的工作流程。我在 Apple Automatizor 中创建了应用程序 - 它可以一键打开我的工作区、Local by Flywheel、Github Desktop 和 Codekit。(我还创建了一个应用程序,在一天结束时关闭所有这些应用程序)
那么如何在 Windows 任务栏上放置带有自定义图标的工作区图标呢?
或者你没有谈论它,因为它只是一个快捷方式文件?
我没有谈论它,因为我从未使用过 Windows。如果你使用过并且尝试成功了,你能分享一下吗?
你可以为任何文件创建一个链接(lnk)。文件链接会打开默认应用程序(在这种情况下为 VSC)。只需右键单击工作区进行拖动。然后在 lnk 的属性中选择一个图标,你就完成了。
你可以将 lnk 放入快速启动菜单中。所以在
这是它的样子
https://ibb.co/cyLqC7k
显然,在创建图标时,你可以做得比我更好。
您可以使用命令“Code.exe C:\Project\MyProject.code-workspace”创建一个快捷方式,然后将其固定到任务栏。您可以右键单击它,选择属性并更改图标。如果您已经将vscode固定到任务栏,则需要执行此操作,因为显示的默认图标将与vscode相同。
当然,您也可以在桌面上创建快捷方式,首先自定义它,然后将其固定。重点是操作非常简单。
关于不在css中搜索,我想反驳的是,您的构建文件可能应该只存在于构建文件夹中,该文件夹应该被git忽略,因此无论如何都不会出现在搜索结果中(如果选择了排除被忽略文件的选项,则很可能是为了避免在node_modules等中搜索)
VS Code是否会自动不搜索
.gitignore
文件中包含的文件?这很不错。在我的例子中,我提交了我的.css文件。我可能不应该这样做,但并非所有构建和部署过程都是理想的完美事物。关于使用VS Code Tasks功能的“runOn”选项的提示可能是最终促使我使用工作区的东西(我之前也处于“嗯,也许以后再说”的阵营)!非常方便。
顺便说一句,工作区可以拥有自己的设置,这些设置保存在
.code-workspace
文件中而不是.vscode
子目录中,如果您不希望与在同一存储库上工作的其他人共享您的设置,或者.gitignore方法不适用于您的设置,这可能很理想。如果您在VS Code中编辑
.code-workspace
文件(我的意思是将其打开到编辑器中——有没有更好的UI方式进入此工作区的原始JSON配置?我找不到……),您可以设置每个工作区的设置和任务,如下所示在您首次设置此操作后,您仍然需要执行“允许文件夹中的自动任务”操作,但除此之外,它似乎运行良好,并且存储库中没有烦人的
.vscode
文件夹!在任务手动运行一次(终端→运行任务)后,我没有收到更新权限的提示。我必须从命令面板手动“允许文件夹中的自动任务”。
下次我打开工作区时,它运行得非常完美!感谢这篇文章!