webstorm启动项目_Alfred实现快速打开项目

问题

我会把所有的web项目都放在一个dev目录下,编辑代码有时候会用vscode,有时候会用webstorm。这就带来个问题,每次启动的时候,要么是从编辑器的最近文件中启动,要么是从终端快速启动,但是感觉都不太快捷。而且有时候还要找一下才能找到。刚好最近买了个正版Alfred,来试试用Alfred启动项目。

实现效果

想实现的效果是这样的:

  1. 输入code + 文件名,可以过滤出包含文件名的项目目录。
  2. 选择项目之后,会再让用户选择使用vscode还是webStorm打开。

两个步骤的示意图如下:

f16c7d9a2b2604c0eaa9ce1f203afb2f.png

实现方式

1. 读取目录下文件并且响应过滤

按理说Aflred也有文件过滤的功能,但是发现没有对指定目录过滤的,只能自己实现了。其实实现也比较简单,看到有个Alfred的python库。还比较方便的,帮忙处理了一些逻辑。所以就用python来写吧。

从Alfred的文档里可以看出,过滤的实现原理是,脚本响应用户输入的字符,然后返回json格式的内容供Alfred展示。

使用了上面提到的python库,拼接json字符串的工作,就可以省略了。如下,最后调用send_feedback就可以把选项提交给Alfred了。

# 获取文件列表
def getFileList():
   path = wf.args[1]
   log.debug('path: ' + path)
   path = expanduser(path)
   return [f for f in listdir(path) if isdir(join(path, f))]

def main(wf):
    # 获取搜索参数
    searchKey = wf.args[0]
    log.debug('searchKey: ' + searchKey)
    # 文件列表缓存3s
    fileList = wf.cached_data('projects', getFileList, max_age=3)
    # 根据query过滤目录
    for x in fileList:
        if (searchKey and (searchKey in x)):
            wf.add_item(title=x, arg=x, valid=True);

    # 把应该展示的内容发送给Alfred
    wf.send_feedback()

这个脚本有两个参数,一个是query一个是项目目录。

d08b6dc855da068ed6daa093e1eda68c.png

path是这个项目设置的全局变量,点击右上角的图标设置的,使用前需要修改成自己的项目目录:

48c723f8677a2af7645757912c7ab44e.png

2. 参数转换

刚才的脚本执行之后,可以获得想要打开的目录路径,使用Arg and Vars把得到的query转换成filename给后面的流程使用。

fdbb3f7d3e42e54dd8ec6b838e96418c.png

3. 选择打开方式

通过Alfred的List Filter来提供两个选项,是使用webstorm还是使用vscode。

88f856b9cf448d515b8112b001148c8a.png

4. 判断并启动

分别使用ConditionalOpen File

60b6c47103d1bcfb40d9057573cc82c4.png

1ff6b062c20b0655e0e63a9339c52664.png

整体图:

7232546fd9de16fdfb8b80e8b81d167f.png

Git地址

下载地址

这里可以根据自己的需求修改编辑器,如果只需要一个编辑器,可以把listFilter和条件判断直接去掉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值