Workspace 提高十倍开发效率

什么是 Workspace?

Workspace 翻译成中文是 工作空间 的意思,我的理解是一个 集合,它将我们工作所用到的资源和状态都集成在里面,这样下次打开时就可以自动还原当时的工作状态,不用重新去查找文件,因此使用起来非常的高效。

Visual Studio Code 编辑器就有 Workspace (工作区)的概念,即它可以将工作区保存为文件,下次打开该文件时,将自动还原原来的状态(包括打开的文件、目录显示状态和光标显示位置等等),这样我们就不用去重复查找和打开文件了,使用起来非常的得心应手。

可惜的是,这个概念并有没有得到很好的推广,支持 Workspace 的软件屈指可数,就我知道的除了 Visual Studio Code,还有 Eclipse,貌似再无其它了。(可能是本人见识少👻,对了还有 Google Workspace,表示没用过!)

工作中,由于经常被产品催债式般地疯狂催赶进度,再加上日以夜继的加班(可能是本人比较菜吧💘),使我对开发效率有着远超常人的渴望和执着。

在使用 Visual Studio Code 的 Workspace 功能一段时间后,我被它的效率惊到了。多个项目无缝切换,真的是越用越觉得舒服😘。于是我就想,为什么不在其它工具上也试试 Workspace 呢 ?像 Chrome 浏览器、Finder(访达)文件管理器、iTerm2 终端 这些都是值得尝试的对象。

不幸的是,这些工具都没有 Workspace 功能,搜遍全网也没有找到类似的工具或插件。由于对提高开发效率的强烈渴望,本着宁可错杀不可放过的理念,我抄起了自己的家伙(不对,应该叫编辑器😅),撸起了 Workspace 插件。

功夫不负有心人,通过不断的努力(其实很简单😏),我成功了!从一开始的 Chrome 插件 SaveTabs,再到 iTerm2-Workspace 到最后的 Finder-Workspace,整一个 Workspace 开发环境算起成功搭建起来。接下来我就为大家一一介绍这些产品,希望能帮助到同样对开发效率有着强烈渴望的同学。

Chrome 插件 SaveTabs

无论是在工作中,还是在生活中,相信我们用得最多的软件就是浏览器了,而在众多的浏览器中,Chrome 一枝独秀,其占据了浏览器市场的大片江山。现实中,用得越多,需求就越多,Chrome 当然也不例外,其拥有成千上万插件的 Chrome Web Store 就是最好的证明。

平时浏览网页时,看到喜欢但是来不及阅读的网页,或者是想要反复浏览的文章,大家第一时间想到的是使用收藏功能。

但是收藏有一个特点,那就是一次只能打开一个网页,这着实不太方面。于是就有了 OneTab 插件,它可以直接将当前窗口打开的所有网页保存起来,并且归到同一个组中,下次打开时可以一次性还原组内所有网页。

看起来挺不错的,不过用得久了,你会发现,它成了垃圾箱(只是比喻,绝没有任何贬低)。因为每次恢复网页,你都要新开一个窗口,再点击 OneTab 插件图标,找到想要打开的组并点击“恢复全部”。(这里说明一下,之所以要新开一个窗口,是因为不那样的话,当前窗口的网页会被保存并关闭,但我们只是要打开 OneTab 功能页,所以得新开一个窗口)当然你也可以直接设置快捷键,不过你还得再输入快捷键 Command-F 和关键字以查找网页或组,最后再点击“恢复全部”。

这确实很繁琐,而且保存网页为组后,为组命名也是要做很多次操作,所以到后面用着用着都把这个插件给忘了。

那还有什么办法呢?

一个现实观察到的现象是,很多人会选择一直保留打开的网页,久而久之就成了下图中的样子。

我最早也是如此,只是网页一旦变多,找起来还不如直接重新搜索打开呢。

后来发现可以新建新的窗口,这个就有点类似 Workspace 的概念了,只是用着用着,窗口又慢慢地多了起来,即便是用快捷键切换,也是很难找。

但我不能放弃。

我又想到了另外一个功能:窗口最小化。

虽然窗口多,但是在处理特定的事务中,我们访问的只是其中一部分窗口,于是我把暂时不会用到的窗口最小化,这样在当前窗口下查找起来就不会那么费劲了。

到这里,问题看起来是解决了,但其实它隐藏着一个很大的风险。

一方面,随着使用次数的增加,最小化的窗口会越来越多,操作起来同样吃力。每次切换工作内容,窗口状态就得重新处理一遍。这包括将用不到的窗口最小化和从最小化的窗口中找到当前事务中需要用到的窗口并将其最大化。可以想象,在众多最小化窗口中找到需要的窗口是一件多么困难的事,因为最小化下的窗口默认是只显示活跃状态下的标签标题,除非最大化,不然你很难区分它里面的内容。

另一方面,要是浏览器突然挂了怎么办?电脑突然死机了怎么办?而且打开这么多窗口,既耗 CPU 又耗内存。你可能会说我电脑性能好,而且浏览器可以自动恢复。好吧,那你敢试试现在把浏览器杀掉吗?我相信你是不会去冒这个风险的。(不服的请在评论区发你录制的视频。噢,貌似没这个功能。😅)

那还能怎么办?难道要我自己手动把网页保存起来,下次再手动打开?

恭喜你,如果你想到这,那么你离成功就不远了。其实我们还可以再进一步,如果有个工具可以帮我们把网页保存起来,下次需要时,我们只要找到并执行这个文件,而它可以帮我们恢复这些网页,那不就是我们想要的吗?

没错,于是就有了 Chrome 插件 SaveTabs,其功能实现就和我们想象中的完全一样,请看下图演示:

怎么样?是不是有点蠢蠢欲动,迫不及待了呢?那就赶紧下载试试吧。

由于它类似 Workspace ,所以也算得上是一种 Workspace 工具,很幸运 Chrome 在 Workspace 方面的空白终于被我给填补了。

可能有网友会有疑惑:“为什么不直接叫 Workspace ?”“是啊?我去。。。现在改名有点麻烦。。。算了就这样吧。”

网上同名插件很多,不过功能完全不同,大家认准以下链接:

GitHub地址

扩展迷

直接下载

大家在视频中看到的 Alfred 搜索中的 tabs 命令,其实是我专为在 SaveTabs 所生成的文件(tabs.html)搜索需要而编写的一个 Alfred Workflow 即 Chrome Workspace,大家可以在以一下地址中下载:

GitHub地址

Packal下载

直接下载

这个插件其实我用了有半年的时间了,到目前已经生成了九十多个文件,很多都有重复阅读的价值,所以我上传到了 GitHub 上,大家需要的话可以下载。

GitHub地址

有一点需要注意,由于生成的脚本文件使用了 window.open 自动打开网页,所以默认会被禁用,需要设置浏览器以允许其 弹出式窗口和重定向

这个插件虽然功能强大,但是比较简陋,还有很多可以开发的功能,大家有兴趣的话可以点击 fork 来参与项目。如果对你有帮助,欢迎点赞或转发。

VSCode-Workspace

文章一开始就讲到这个了,这里主要分享一下自己的使用心得和为其定制的另一个插件。

在工作中,对于一些大的项目,即使是一个功能,也可能涉及多个页面,调试的时候就需要同时打开这些文件。

如果此时该项目还有别的功能要处理,我一般会再打开一个新的窗口来处理与其关联的文件,这样就不会因为和别的功能文件混在一起而导致混乱,操作起来仅仅有条。

于是,很容易想到的,我会分别将这些窗口保存为一个独立的 Workspace 文件,并用其 项目名+功能名 命名,下次需要重新编辑该功能时,直接打开该 Workspace 文件就可以立刻还原现场,就像操作系统中的线程切换一样,效率非常高。(真的是很多原理都是相通的)

这里有个坑要注意,Visual Studio Code 的 WorkSpace 文件如果被挪动位置或者换了文件名,那么下次打开,其所有文件打开状态都将消失。

其实 Workspace 保持文件状态只是一个副产品,Visual Studio Code 的工作区更多的是为了保存其它的一些设置,我们只是一厢情愿罢了,所以不可避免会有这些问题,也就是其 Workspace 概念与本文所要表达概念并不完全一致。

那么为什么我们不自己造一个这样的插件呢?这个我也想过,看了 Visual Studio Code 扩展开发文档,并没有找到有读取当前标签文件地址的功能,所以实际做不到。不过其实只要我们不挪动文件位置就没有问题,真要挪动位置或者换文件名,可以在打开该 Workspace 后,再另存到别的位置或换个名字,虽然会麻烦一点。

为了更快地搜索,我为其编写了一个 Alfred Workflow 即 Finder-Workspace,它只搜索带有 .code-workspace 后缀的文件,而且是按照最近打开的顺序排序的,非常的方便。大家可以通过以下方式下载:

Packal下载

直接下载

最后让我们看看实际使用效果:

iTerm2-Workspace

接下来介绍的工具和前面说到的大同小异,其使用 iTerm2 的 Dynamic Profiles 特性,去调用一个能将当前标签路径保存为文件的 AppleScript 的脚本,再使用另一个 Alfred Workflow 即 iTerm2-Workspace 去搜索脚本以恢复原标签。

安装方式:

git clone --depth=1 https://github.com/hzh-cocong/iTerm2-Workspace.git ~/.iTerm2-Workspace
sh ~/.iTerm2-Workspace/install.sh

iTerm2-Workspace 插件下载:

GitHub地址

Packal下载

直接下载

Finder-Workspace

MAC 软件开发我从未接触过,所以换了种方式,直接使用 Alfred Workflow 即 Finder-Workspace,它里面包含了两个命令:

save 命令将当前打开的窗口的路径保存为文件,finder 命令则是搜索对应的文件并恢复原来的窗口。

这里有个地方要注意,受限于 AppleScript Finder 本身提供的功能,目前保存的是所有窗口的路径而非当前窗口,因为 AppleScript Finder 词典并没有区分窗口和标签,其全部都是窗口,所以在执行 save 命令前,你需要关掉多余的不需要保存的窗口和标签。

实际这个我用的比较少,也是最近才发现有这个bug的(自我安慰中😂)。大家如果有更好的方法,欢迎在 GitHub 中提交 issue。

下载地址:

GitHub地址

Packal下载

直接下载

总结

如果你看完了本文并亲自使用了这个 Workspace 功能,你将会发现,原来工作还可以这么丝滑、柔顺。即便是再大的功能,再多的项目,你都可以灵活应对。而且不仅仅是上面提到的工具,像 Markdown 软件、文本编辑器等,都可以用类似的 Workspace 插件来应对频繁的使用和切换。不过我在工作中用的最多的就是前面提到的几个软件,所以只是为这几个软件编写 Workspace 插件,如果你有新的更有用的工具,欢迎在评论区留言分享。

Windows 用户改怎么办?

这个问题扎心了,我的建议是换台电脑吧,MAC 真的不错,谁用谁知道。

可惜的是,在现实中,大部分人并没有把 MAC 的价值完全挖掘出来,所以接下来的几篇文章我将着重介绍一些非常实用的 MAC 使用技巧、工具和插件,喜欢的话可以点击 关注 以便第一时间获取信息。
[图片上传失败...(image-db2c96-1603790581450)]

推荐阅读更多精彩内容