「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 可能更好一些, 这个其实也是为了快
相关推荐
韩立学长1 天前
【开题答辩实录分享】以《兴趣班预约管理系统的设计与实现》为例进行选题答辩实录分享
java·mysql·intellij idea
0和1的舞者2 天前
《#{} vs ${}:MyBatis 里这俩符号,藏着性能与安全的 “生死局”》
java·数据库·学习·mybatis·intellij idea·mybatis操作
故人咕咕咕3 天前
vscode 配置代码颜色风格类似idea
intellij idea
黎雁·泠崖3 天前
Java入门篇之吃透基础语法(二):变量全解析(进制+数据类型+键盘录入)
java·开发语言·intellij-idea·intellij idea
黎雁·泠崖4 天前
Java入门之吃透基础语法:注释+关键字+字面量+变量全解析
java·开发语言·intellij-idea·intellij idea
黎雁·泠崖5 天前
Java入门篇之吃透基础语法(一):注释+关键字+字面量全解析
java·开发语言·intellij-idea·intellij idea
zhanglb126 天前
Gradle 全局配置使用
gradle·android studio·intellij idea
齐鲁大虾7 天前
IDEA如何使用 Swing 构建用户界面
idea·intellij idea
PPPHUANG7 天前
Switch2Antigravity: 让 IntelliJ IDEA 与 Antigravity 无缝协作
程序员·intellij idea·vibecoding
我命由我1234518 天前
Java 开发 - 含有 null 值字段的对象排序(自定义 Comparator、使用 Comparator、使用 Stream API)
java·开发语言·学习·java-ee·intellij-idea·学习方法·intellij idea