我也不大喜欢弹窗 ,embark 默认是 弹出一个buffer 列出命令以及详细解释,我是定义为 which-key 来展示,不知道是否可以集成到 one-key。emark 我也是需要的时候用一下,比如本贴提到这个就很合适用,还有就是在切换buffer 时,在 miniffer 中就想 kill 掉一些 buffer 时用。
感觉对你的流程,embark 可以做为一个补充的,需要的时候用一下 embark-act
,它还可以应用于选择的区域。
我也不大喜欢弹窗 ,embark 默认是 弹出一个buffer 列出命令以及详细解释,我是定义为 which-key 来展示,不知道是否可以集成到 one-key。emark 我也是需要的时候用一下,比如本贴提到这个就很合适用,还有就是在切换buffer 时,在 miniffer 中就想 kill 掉一些 buffer 时用。
感觉对你的流程,embark 可以做为一个补充的,需要的时候用一下 embark-act
,它还可以应用于选择的区域。
which-key 的源代码我看过,主要是它要用户手动去写弹出菜单的布局,维护代价太大了, one-key.el 可以自动根据列表内容生成适合Emacs窗口的菜单,除了古老以外,我觉得 which-key 的方便性不如 one-key.el
我看完了这个帖子和视频,说一下我的个人想法(每个人习惯不一样哈):
Embark 现在的交互有点类似 ivy 和 which-key 的集合,当然也可以换成 helm 那种风格,本质上是 “从光标处提取初始化的字符串 → 用户输入点内容过滤列表 → 切换命令菜单来执行匹配的内容
作为Anything的开发者之一(Helm的前身),我不看好embark, 理由如下:
如果按照Anything/Helm那样的集大成发展,我觉得 embark 非常有可能发展成 Anything/Helm 那样的巨无霸插件的效果 看着琳琅满目的功能,给人感觉很强大,用户只是想拥有自己平常也很少用的功能,开发者也疲于奔命,代码越来越复杂,维护吃力,经常更新后还不稳定
我入门 Emacs 比较晚,没用过 Anything / Helm 。看你这么说, Embark 的行为是和 Helm 比较像吗?
我也不赞同这种集大成的发展。 经过了 helm ivy 等教训以后,现在 Emacs 社区看起来是有这方面的意识了,尽量保证包的轻量化,方便用户自由集成。比如最近比较流行的 consult ,发展的比较成熟了,用户也想加入很多类似 helm 的功能,但作者都是把他们放在单独的包( 如 consult-dir)。
目前我觉得能用 Embark 解决一些小问题就好,不求什么都用它 。
Embark从视频看,一个窗口负责搜索过滤,类似 Helm 的多后端同时过滤,当需要 Action List提示的时候,用另外一个窗口显示 Action List。
从交互易用性看,还不如 Helm 的 Tab 切换 Candiate Buffer/Action Buffer 的设计。
但是从博客和视频看,Action List有太多额外的功能,非常像 Helm 的发展路径,作者使劲往搜索框架里面开发各种非搜索Action功能,其实大多数Action都不如在实际场景下用别的插件方便。
vertico的卖点就是一个插件专注一件事。使用embark感觉就是把之前丢的都捡回来了,可能还没以前的体验好。个中得失还是挺微妙的。
确实,embark除了export这个偶尔代替ivy的occur还比较实用,其他的比如类dwim功能感觉用的真不多。。。
vertico的生态发展起来估计不亚于ivy/helm这种重量级的,优点可能在于核心做的比较精简,模块化程度更高吧。
embark 比起 helm ivy 这些我看到的区别一是不光作用在 minibuffer 中,比如说在 variable 上 embark-dwim 的默认操作就是 find-definition。二是操作的对象是 object,不需要像 ivy 每个函数都定义 action,而是可以调用已有函数,一定程度上减轻维护代价。
上面那个博客是第三方作者介绍自己咋用 embark 的,函数都是自己添加的,事实上我觉得 embark 默认能支持好 Emacs 内置的 object 就好(buffer,file),目前貌似已经是这样做的,然后函数基本都是已有的。添加功能或者与别的插件交互应该通过第三方插件,比如说想在 org-cite 上面打开 bibtex entry, note, file 就可以用 citar
如果是从这种角度看,应该着重放在环境对象感知和自定义触发函数的设计上,不要以补全为中心。
从我个人使用习惯看,我比较怀疑同一个对象是否都是 dwim 第一个动作?比如光标在一个符号上,有可能的动作是复制、删除、找定义、找引用甚至是记录当前位置等等,环境的不同动作不同会回到弹出菜单选择上。
embark 是否长期有价值,还是要看能否把 dwim 做好,如果这个方向不对,最多只能帮助用户减少一些全局按键绑定。
我感觉 dwim 够呛,然后只能回到菜单选择,靠用户肌肉记忆。你说的对,那样确实只是帮用户绑定了一些按键
只能说在补全方面较 helm ivy 的方式一个个绑定的方式稍微有些进步
可以用函数 browse-url 在 dired 中快捷键是 W
外部命令打开当前文件
(browse-url buffer-file-name)
外部命令打开当前文件夹
(browse-url default-directory)