起因
工作中的業(yè)務(wù)線比較復(fù)雜,每個業(yè)務(wù)線對應(yīng)一個項目,經(jīng)常會遇到多個需求并行開發(fā)或者在多個項目中排查問題的情況,需要頻繁在不同項目之間切換。
日常接觸到各種新工具自己也會上手試一下,有時候研究到一半可能會被其他事情中斷導(dǎo)致忘記。
所以編寫了一個簡單的小工具滿足自己的需求:
- 可以記錄工作區(qū)目錄,增加和刪除
- 可以直接通過VS Code打開工作區(qū)進行編輯
小工具介紹
這個小工具使用了一年多,在大部分場景下滿足我自己的需求,也提高了開發(fā)效率。小工具使用nodejs編寫,使用了inquire.js來做交互提示,通過上下鍵選擇,回車則使用VS Code打開。使用使用效果:

其他命令(recent可以簡寫為: r):
- recent add + dirname (相對地址或絕對地址)
- recent del + dirname
- recent ls 查看已添加的所有工作區(qū)數(shù)據(jù)
- recent ls + str 根據(jù)輸入的內(nèi)容篩選工作區(qū)數(shù)據(jù)
- recent + str 根據(jù)輸入內(nèi)容進行匹配并打開
具體使用
在環(huán)境變量中添加code命令
在VS Code中使用快捷鍵 Command/ + shift + P 打開命令行面板,執(zhí)行安裝code的shell命令。
安裝完成后就可以在命令行中通過code .在VS Code中打開文件或文件夾。

link recent到全局命令
因為功能比較簡單,并沒有封裝成npm包,代碼放在了GitHub: tools
clone之后執(zhí)行:
npm install && npm link
就可以通過recent(或簡寫r)來管理工作區(qū)了,會調(diào)用code命令在VS Code中打開工作區(qū)。
其他
安裝的code命令做了什么操作
# 查看code命令地址
which code
# 查看軟連接指向
ls -a /usr/local/bin/code

找到具體的文件之后,發(fā)現(xiàn)是一個shell腳本:
#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
function realpath() { python -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$0"; }
CONTENTS="$(dirname "$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")")"
ELECTRON="$CONTENTS/MacOS/Electron"
CLI="$CONTENTS/Resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"
exit $?
在MacOS下查看了一下:
$ELECTRON是/Applications/Visual Studio Code.app/Contents/MacOS/Electron
$CLI是 /Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js
$@就是接收到的文件夾或文件地址

open命令
在MacOS下,我們可以通過open -a來指定的應(yīng)用并傳參:
# 使用Typora打開文件或文件夾
open -a Typora README.md
# 使用Chrome打開文件或文件夾
open -a open -a Google\ Chrome cat.png
open -a open -a Google\ Chrome .
默認(rèn)情況下,open命令會使用文件的默認(rèn)應(yīng)用程序打開。如果文件是 URL 形式,則文件將作為 URL 打開:
# 目錄默認(rèn)使用Finder打開
open .
# html會用默認(rèn)瀏覽器打開
open index.htmls
通過-a參數(shù)可以指定應(yīng)用程序來打開文件或目錄,其他支持的參數(shù)可以通過open -h查看。
為Open命令創(chuàng)建快捷命令
通過Open命令我們可以使用指定的程序打開指定文件或目錄,但是open命令打開比較繁瑣,需要輸入完整的程序名稱。
如果想直接通過typora打開markdown文件,我們可以為Open創(chuàng)建快捷命令。
Node.js版本:
#!/usr/bin/env node
// typora.js
const { spawn } = require('child_process')
const params = process.argv.slice(2)
spawn('open', ['-a', 'Typora', ...params]);
創(chuàng)建軟連接
-
直接創(chuàng)建軟連接
# 添加可執(zhí)行權(quán)限 chmod +x ./recent.js # 鏈接到全局 ln -s 源文件絕對路徑 本地環(huán)境變量 ln -s /User/xxx/typora.js /usr/local/bin/typora -
或者放到單獨的目錄,在package.json中指定
{ "bin":{ "typora":"./typora.js", "t":"./typora.js" } }目錄執(zhí)行l(wèi)ink,會自動添加可執(zhí)行權(quán)限并添加軟連接到本地環(huán)境變量
npm link
我們就可以在命令行中使用typora來通過Typora打開指定文件/文件夾了,類似的我們可以創(chuàng)建任何快捷命令來打開我們想使用的軟件。
歡迎關(guān)注微信:“混沌前端”