以 大家有没试过按 ctrl 按到手指痛? - #18,来自 twlz0ne 为例。
用 hydra 包装 C-n/p,来减少下/上翻页的按键次数:
原始按键翻页:
C-n
C-n
C-n
...
C-n
hydra 按键翻页:
C-n
n
n
...
n
使用 hydra 相当于进入了一个临时 mode 或 state,此时不在需要再按前缀键
[ origin state ] [ hydra state ]
| |
| |
| C-n |
| ----------------> |
| page-down |--.
| | | n ;; page-down
| |<-'
| |--.
| | | n ;; page-down
| |<-'
... ...
| |--.
| | | q ;; exit hydra
| <---------------- |<-'
| |
| |
v v
而 which-key 是把已经存在的绑定「分层」展示出来,比如定义了一系列按键:
key: func:
------- ---------
C-x a func-a
C-x b b func-bb
C-x b n func-bn
C-x b p func-bp
在你按下 C-x 的时候提示:
a -> func-a
b -> prefix ;; 注意这里
继续按 b 的时候提示:
b -> func-bb
n -> func-bn
p -> func-bp
接着喊 b/n/p 执行,并关闭提示窗口。
从按键提示上看,hydra 和 which-key 是有一点点类似,但本质上不同:
- hyrda 可用来减少重复「前缀」按键,也具备提示下一步操作的功能
- which-key 仅用来提示下一步操作