which-key 和 hydra 两者的区别是什么

以前一直用的 which-key,前面也研究了下 hydra,也会配置了。在群里也问了很多人区别,有十几人回答了我两者不一样,但没一个帮我分析两者到底是什么不一样。所以把自己搞迷糊了。 我的理解两个都是快捷键提示,至于内部原理,配置方式不一样那些是细节,实现的目标都是说叫快捷键提示,或者什么帮助记忆也罢,那都是字眼上的文章了。

有可能,有一个回答我的是: 一个是键绑定,一个是绑定键。我没理解,我理解两者是一样,实现目标是一样的,就像 lsp-mode eglot 配置原理和一些是不一样,但都是 lsp 代码补全。主要是有十几个人一直在给我说不一样,却没一个人回我什么不一样,就是叫我看这看那,我要不看也不会配置了呀。

好吧,目前公司都没用 git ,所以那部分也没去配置。

我也经常干这种伸手问某个插件是什么作用的事情,但要是别人两句话解释了一下还没明白的话,就不追问了,自己能解决的不该花别人太多时间。不追问怎么办呢?readme啃一遍,肯定知道了;readme看了也不知道,那就“我的配置暂时够用了/这个插件我暂时不需要”。

我可不是伸手党,你看前面聊天内容,两个插件我都用过,你所说的 readme 也都看过,也都配置过。到目前你们所解释的内容我都知道,只是每个人的理解不一样,举个例子就像 Angular 与React 在你们眼里他就不是一样的,因为很多技术原理不一样。而在我这里却理解成了一样的,解决的问题是一致的。

既然你吃了一个鸡蛋觉得很好,那又何苦非得见一面生了那个蛋的母鸡呢


https://zhidao.baidu.com/question/434582708.html

原句出自这里,是不是怼人,我不知道,视读者心境而定。

你到底在扯什么

我提的遗憾至于你们那么多恨意?

你解决了问题,就不要试图了解里面的细节。

把所有实现细节都暴露给用户的设计是坏设计。

你吼辣么大声干什么?

这又算是你自己的阅读理解。我寻思我打了那么多字,起码的尊重也该有吧,我又没说你是伸手党。

1 个赞

我是看前面一个怼了你立刻就接着怼人,尊重感谢你的人也不会在感谢了吧。两个其实对会用,本来也没什么,只是大家众口一词比较疑惑是不是自己理解错了之类的。

祝你身体健康,生活愉快

好了就这样吧,网上过嘴瘾,搞这些小心态没意思。

1 个赞

大家有没试过按 ctrl 按到手指痛? 为例。

用 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 仅用来提示下一步操作
9 个赞

多谢,自己用的 evil,然后水平限制很多功能还没有用到,少数的就写成了函数。

hydra只有用户用hydra定义的的键才会提示,which-key就只有提示功能,所有快捷键都会提示。你可以考虑用hydra实现提示所有快捷键,这样你就知道这什么区别了。hydra的提示就是一个附送品,hydra目标就不是来提示的,而是一种快捷键策略,就好像evil。所以说啊,实现的目标都是说叫快捷键提示,这根本就不对。

你是手机回的吧:grin:

一个是自动发现并提示快捷键,一个需要配置想干嘛就干嘛,目标是不一样的。楼主用 evil 没有发现异同点吧

https://camo.githubusercontent.com/7188a57a097771ce80af534a4183c759717b54af/687474703a2f2f6f72656d6163732e636f6d2f646f776e6c6f61642f48796472612e6a7067

一直觉得这个图片很形象 有没有? 九头蛇?

hydra就是九头蛇,哈哈哈

2 个赞

一个用于快捷键提示,一个用于改快捷键。这俩根本就不是一类东西

4 个赞