Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • Mac

  • Windows

    • Windows 上有哪些值得推荐的常用软件
    • Git Bash 的配置
    • Windows Terminal 设置与 zsh 安装【非 WSL】
    • 使用 ahk 实现 Manico 功能
      • 手动实现
        • 定义快捷键
        • 窗口操作
      • 使用 Windows 自带的快捷键
      • 使用第三方软件
        • 曹操快切
        • RunAny
        • MyKeymap:强烈推荐
      • 参考资料
  • Linux

  • ShowyEdge
  • 开发效率提升之工具篇
  • 操作系统
  • Windows
Henry
2022-07-26
目录

使用 ahk 实现 Manico 功能

Manico (opens new window) 是 Mac 上一款优秀的效率工具,可以实现快速启动和切换 App

具体介绍可以看:简洁、高效、易用,Mac App 快速启动及切换工具:Manico 2.0 - 少数派 (opens new window)

奈何 Windows 上并没有可以替代的产品,故想通过 ahk 模拟 Manico 的功能

autohotkey 的简单使用可以参考这个文章:Windows 自动化效率神器:AutoHotkey 使用教程和脚本推荐 - 知乎 (opens new window)

# 手动实现

初步想法是这样的:

那我们就实现一下吧,以 chrome 为例:

首先新建脚本 Manico.ahk

# 定义快捷键

我们和 Manico 保持一致,也使用 alt 作为触发键

从这里 (opens new window)可以查得 alt 的修饰符为 !

所以我们可以这样定义快捷键:

; Manico.ahk
!j:: ; 触发的快捷键:alt + j。! 代表 alt
; do something
1
2
3

# 窗口操作

这里 (opens new window)是窗口操作相关的文档

这里 (opens new window)是系统变量相关的文档

继续补齐我们的代码:

; Manico.ahk
!j:: ; 触发的快捷键:alt + j。! 代表 alt
  if not WinExist("ahk_exe chrome.exe") ; 判断是否有打开的 chrome
  {
    run "%A_ProgramsCommon%\Google Chrome" ; 运行 chrome,run 后面是 chrome 的位置
    WinWait, ahk_exe chrome.exe ; 等待 chrome 打开
    WinMaximize ; 最大化 chrome,默认打开的不是最大化的窗口
  }
  else if WinActive("ahk_exe chrome.exe") ; 判断 chrome 是否处于活动状态
  {
    WinMinimize ; 最小化
  }
  else
  {
    WinActivate ; 激活 chrome
    WinGet, OutputVar, MinMax ; 判断 chrome 是否是最大化
    if OutputVar != 1 ; 如果不是最大化
      WinMaximize ; 最大化
  }
return
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

这样我们就实现了通过快捷键 alt + j 打开/最大化/最小化 chrome

不过当有多个 chrome 窗口时,我们只能操作最后激活的那个窗口,无法操作其他的窗口

这时候我们只能使用 Windows 自带的快捷键来实现了

# 使用 Windows 自带的快捷键

在 Windows 中,我们可以使用 win + 数字 N 来打开/激活/最小化第 N 个软件,而且有多个窗口时,可以在窗口之间切换,但无法最小化

比如我将 chrome 固定到任务栏第一个位置 (固定以后位置就不变了,快捷键也就固定了),如果未打开 chrome,使用 win + 1 即可打开,如果当前激活的软件不是 chrome,使用 win + 1 即可激活 chrome,如果当前已激活 chrome,使用 win + 1 即可最小化 chrome,有多个 chrome 窗口时,win + 1 可以在窗口之间切换;我们都不需要 ahk 这个第三方软件了

如果不喜欢使用 win + 数字,也可以改成别的按键

比如还是使用 alt + j 来操作 chrome,上面的代码都不需要了,只需要下面一行即可搞定

; Manico.ahk
!j::
Send #1 ; 将 alt + j 映射为 win + 1
return
1
2
3
4

使用 alt + j 切换多个窗口时无法在窗口之间切换,还是有点问题,改成 win + j 就没有这个问题了

但由于只有 10 个数字,故只支持操作 10 个软件,不过也够用了吧;如果还是不够用,只能使用上面的代码自己实现了

如果需要开机自启,将 Manico.ahk 放到开机启动目录下:C:\Users\${username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

这样我们就基本实现了 Manico,当然没有人家那么完美,不过也可以正常使用

# 使用第三方软件

# 曹操快切 (opens new window)

用法极其简单:按住大小写键(Caps lock,可以自定义触发键),就能弹出切换窗口,之后可通过数字键、鼠标、方向键进行切换。

还可以在 setting.ini 文件里为程序配置固定快捷键,这样就能实现闭眼睛操作了

同一软件不同窗口间快速切换:capslock+·(esc 下面那个键)快捷键切换(当然,通过自定义序列和自定义触发键,这个快捷键可以是任何)

缺点是当有多个窗口时,使用固定快捷键无法切换,必须先按下触发键,再通过搭配的键切换。比如设置 alt 为触发键,alt + j 还是切换 chrome,当有多个 chrome 窗口时,alt + j 不能切换到任何 chrome 窗口,只能先按下 alt,再按 j 切换,而且可以多次按 j 循环切换 chrome 窗口

# RunAny (opens new window)

RunAny 区别一般的启动工具,适合家里、公司多台电脑的用户,不管软件装在 C 盘还是 D 盘 Anywhere,根据名字直接找到并运行

多台电脑你只需配置一套软件列表 (RunAny.ini),就能到处运行,配合 坚果云 \ OneDrive \ Dropbox 等网盘同步更是如虎添翼,达到一劳永逸!

所有 exe 程序设置独立全局热键后有三种功能:

  • 启动、最小化时激活
  • 已激活时最小化
  • 同个 exe 程序多窗口切换功能于一体

RunAny 可以使用固定快捷键切换窗口,弥补了曹操的不足,但无法操作文件资源管理器,而且切换 WindowsTerminal 有问题,会把服务停掉,wt 这个问题看这里:给 wt 设置快捷键后,每次使用 wt 会报错,而且如果起服务的话,会停止服务 · Issue #91 · hui-Zz/RunAny (opens new window)

# MyKeymap (opens new window):强烈推荐

这款软件基本上还原出 Manico 99% 的功能了,除了最小化这个功能,不过这不算是一个很重要的功能

默认激活方式:小指按下 Capslock -> 食指按下 F -> 松开 Capslock

然后按下 w 是 chrome,s 是 VS Code,z 是 Windows 文件管理器 (打开 D:\ 盘)...

我们还是改为 alt 激活吧

以 chrome 为例:

打开 自定义热键,点击 添加一行,热键那里输入 !j

然后在右侧选择 全局生效-启动程序或激活窗口,在 要激活的窗口 (窗口标识符) 输入 ahk_exe chrome.exe,这个值可通过下方的 查看窗口标识符 查询

在 当窗口不存在时要启动的:程序路径 / 文件夹 / URL 输入 %A_ProgramsCommon%\Google Chrome.lnk,可通过下方的 查看例子 查询

至此我们就配置好了:当 chrome 未打开时,使用 alt + j 启动,未激活时,使用 alt + j 激活,当打开多个 chrome 窗口时,使用 alt + j 在窗口之间切换

# 参考资料

  • 快速参考 | AutoHotkey (opens new window)
  • 如何在 Windows 上使用 autohotkey 模拟 macOS 上的 Manico 软件? - 简书 (opens new window)
编辑 (opens new window)
上次更新: 5/27/2023, 1:02:05 PM
Windows Terminal 设置与 zsh 安装【非 WSL】
linux 下 PS1 命令提示符设置

← Windows Terminal 设置与 zsh 安装【非 WSL】 linux 下 PS1 命令提示符设置→

最近更新
01
version 1.15
07-01
02
version 1.14
06-27
03
version 1.13
06-27
更多文章>
Theme by Vdoing | Copyright © 2017-2023 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式