Ivy 下面有类似 helm 的 multi edit 吗?

就是选中几个备选项,然后同时编辑的功能。刚刚转过来,不知道 ivy 有没有类似的功能?如果有的话能不能告诉我怎么用,看了一下 ivy 的文档说得不太具体。

似乎没有。我当初看比较两者的帖子里面看到过。


Update 被打脸了。 你要的 multi edit

4 个赞

我又多了一个继续用 IVY 的理由,谢谢!

试了一下批量修改当前 buffer 的内容:

  1. M-xswipper
  2. 过滤
  3. C-c C-o(ivy-occur) 进入一个只读窗口
  4. C-x C-q(ivy-wgrep-change-to-wgrep-mode) 进入可编辑模式,这时 minibuffer 有一行快捷键提示:C-x C-s(save-buffer) 结束, 按 C-c C-k(wgrep-abord-change) 终止。
  5. 编辑
  6. C-c C-c(wgrep-finish-edit) 或 C-x C-s 结束,虽然更改生效了,但是临时编辑窗口没有关闭,还需要操作一次 C-o 0

还是有很多地方有待改进:

  • 过程略麻烦,有些步骤没必要,比如:只读 -> 可写,关闭临时编辑窗口
  • 快捷键安排/函数使用上比较混乱,既有 C-x * 又有 C-c *,既有avy-*又有swiper又有wgrep-*还有系统内置函数
  • 提示不明确,提示信息很快因其它操作而被覆盖,因为比较混乱,所以很容易忘记,我写这段回复就回头查看了多次

有点拼凑的感觉,不成体系。

1 个赞

我很少去扩展 helm,所以对它的复杂还没什么感觉,倒是 helm-swoop 偶尔崩溃,不知 ivy 是不是更稳定一些。考虑试用一段时间,把 find-file/switch-buffer 这些操作先替换掉,helm-swoop 暂时保留。

另外我刚才看了 @lujun9972 这篇 emacs-document/emacs-common/从Helm到Ivy.org at master · lujun9972/emacs-document · GitHub 文章,里边提到:

Helm 是不使用 minibuffer ,但是Ivy 是使用的。所以它可以被配置成总是在当前打开的窗口展示。对于那些大屏幕显示器 的用户而言,这个特性真的非常有用,因为你的目光不用在 minibuffer 来回切换:补全 结果总是显示在同一个窗口

对照文章后面给出的图片,没看太明白,我观察到的比较明显的区别,就是输入区的位置,确实眼睛移动的范围小了:

+--------------------+      +--------------------+
|                    |      |                    |
|                    |      |                    |
|                    |      |                    |
|                    |      |                    |
+--------------------+      +--------------------+
| >                  |      |                    |
|       ivy          |      |       helm         |
|                    |      | :                  |
+--------------------+      +--------------------+

其实理想的应该是像补全菜单一样,直接在光标位置弹出。

这个区别在 spacemacs 中是不存在的,helm 的输入区也是在上面

目前已经是 ivy 的死忠,应该不会再换回去了。(一个小 tip:使用 ivy 并不妨碍 helm 的使用,helm 的命令还是可以用的,比如一些 ivy 没有的功能,大可以用 helm 来补充。)

Ivy 是不是Emacs.app/Spacemacs 才用得上的? 我控制台版的 Emacs 能用上的吗~? (不知道 Ivy 是什么东西,刚刚才发现 wgrep 很有用才看到这个概念。。。)