「IDEA&Alfred Workflow」快捷打开 IDEA 项目

01 引言

作为一名 javaer, 日常开发自然是离不开 IDEA, 经常需要打开不同项目的代码, 每次在 IDEA 里面选择项目自然是十分麻烦, 再加上有使用 Alfred 的习惯, 于是自己搞了一个简单的 Workflow 来实现快速打开 IDEA 项目, 实际效果如下图, 使用上下方向键选择, 按回车即可使用 IDEA 打开

02 准备工作

2.1 环境

macOS 14.5

2.2 JetBrains Toolbox

一个 JetBrains 官方的 APP, 提供了很多方便的管理 JetBrains 系列 IDE 的功能, 例如不需要去下载安装包直接在 APP 内安装 IDE, 版本升级/回退, 使用起来非常方便, 强力推荐. 这里需要使用到 toolbox 的一个功能是生成一个用于启动 IDEA 的脚本, 按照下面的步骤生成即可

2.3 Alfred

一个效率工具, 基础功能可以完全替代 macOS 搜索功能, 本文需要用到 Alfred 的付费功能 Workflows, 需要借助自定义的 shell 脚本实现搜索功能

2.4 ugrep

本来用的是 find 命令来做的, 但是想实现一些模糊匹配的效果, 最后改用了 ugrep

macOS 可以直接使用 Homebrew 安装

brew install ugrep

2.5 一个图标(非必需)

搜索出的目录加一个漂亮的图标, 增加仪式感

03 具体步骤

懒得看不想自己拖一个工作流的可以直接下载我导出的,Open-with-IDEA.alfredworkflow, 下载完成后双击导入配置一下环境变量即可

3.1 新建一个空白 Workflow

3.2 配置几个环境变量

为了保留一定的扩展性, 能够分享给其他人使用, 配置一些环境变量

  1. icon_path 搜索结果目录图标
  2. idea_shell_path 准备工作中生成的 idea shell 脚本的绝对路径
  3. workspace_dir 需要搜索的目录的绝对路径, 目前脚本只会检索这个目录-1层级的目录

3.3 拖拽构建自己的工作流

  1. 添加一个 Script Filter, 并配置触发的关键词, placeholder...
  2. 编写 shell 脚本, 这是最关键的步骤, 脚本的作用是检索目录并按照 Alfred 的要求生成输出 json 格式的结果
  3. 添加一个 Run Script, 接收上一部传过来的项目目录, 调用 idea shell 打开
  4. 最后别忘记把两个组件连起来
bash 复制代码
key_word=$1
icon_path=$icon_path
items=""
for dir in $workspace_dir
do
    for f in $(ls -l "$dir" | awk '/^d/ {print $9}' | ug -i -Z1 "$key_word")
    do
      # 修复路径拼接:如果 $dir 末尾没有 /,则自动补上
      if [[ "$dir" != */ ]]; then
          abs_path="$dir/$f"
      else
          abs_path="$dir$f"
      fi
      item='{"title":"'$f'","subtitle":"'$abs_path'","valid":true,"arg":"'$abs_path'","text":{"copy":"'$abs_path'"},"icon": {"path": "'$icon_path'"}}'
      if [ "$items" ]; then
        items="$items,"
      fi
      items="$items$item"
    done
done
echo '{"items":['${items}']}'
bash 复制代码
$idea_shell_path $1

04 其他

目前对我来说足够用, 但是其实还挺简陋的, 大佬可以来优化分享一下

  1. 只检索了一级目录, 这个是考虑到我所有项目都在一起, 还有就是要快
  2. 拼接 json 是用字符串硬拼的, 有些特殊字符可能有问题, 使用 jq 可能更好一些, 这个其实也是为了快
相关推荐
Jaising6662 天前
JetBrains AI 打零工(三)——Junie 常用交互模式分析
ai编程·intellij idea·jetbrains
q_19132846953 天前
基于Springboot+Vue的办公管理系统
java·vue.js·spring boot·后端·intellij idea
5upport4 天前
Gradle Version Catalog的IDE辅助工具
gradle·android studio·intellij idea
Jaising6666 天前
JetBrains AI 打零工(一)——生产力工具与程序员的驾驭之道
ai编程·intellij idea
MacroZheng9 天前
IDEA官方中文文档正式发布,太全了!
java·后端·intellij idea
ApeAssistant10 天前
Idea HttpClient
intellij idea
KK溜了溜了10 天前
JAVA-springboot整合Mybatis
spring boot·mysql·maven·mybatis·intellij idea
舒一笑11 天前
PandaCoder发布-仅以此篇记录人生第一个开源项目
intellij idea
dearxue14 天前
ApiHug 1.3.9 支持 Spring 3.5.0 + Plugin 0.7.4 内置小插件升级 & 儿童节快乐!
spring·api·intellij idea