ivy-occur 修改后不能全部保存?

如题,有一段时间没有用这个功能了,今天发现 ivy-occur 修改之后,修改成功但是退出后发现所有修改的 buffer 都没有保存,还需要一个一个手动保存?

ivy-occur

C-s swiper 搜索

C-c C-o ivy-occur

C-x C-q ivy-wgrep-change-to-wgrep-mode 修改

C-x C-s 保存

5 个赞

谢谢回复!

我把最后一个忘记了,我按照 minibuffer 中的提示,用的 ,c,看来是不行。

如果是spacemacs

(define-key ivy-minibuffer-map (kbd "C-c C-e") 'spacemacs//counsel-edit)

这个已经在spacemac–counsel-map里面定义了,但swiper没有生效,所以得再重新定义下

还真的不行。。

这个函数的doc string是"Edit the current search results in a buffer using wgrep.",感觉是搜索中minibuffer弹出来的时候用的,感觉还是楼上的C-x C-q ivy-wgrep-change-to-wgrep-mode更合适一点

helm 性能不佳,我也有点动摇了。但是 ivy 功能/默认配置欠缺,哪里有比较完善的配置可抄?

spacemacs的develop的completion layer吧,日常写代码用的基本都有。

spacemacs 怎么启用 ivy?没看到说明文档

   dotspacemacs-configuration-layers
   '(better-defaults
     osx
     git
     ;; version-control
     markdown
     html
     javascript
     php
     auto-completion
     ivy ;; <----
     syntax-checking
     mc-evil-compat
     )

比较早的的配置(但 spacemacs 更新到 2017-12-03,并且看似启动正常),加了这行并没有什么变化,连 ivy 包都没有下载 :expressionless:

这个不就是ivy-occur + wgrep么。。

我看了下我的,;; helmivy是在auto-completion前面的,不知道这个顺序有没有关系。

另外要用develop branch,master的0.200.x我用过,有ivy但是少不少东西,不像develop,日常用的都有了。

和顺序没关系。

@twlz0ne 先手动移除 helm 有关的包,或者直接重新起一个 Spacemacs 试试。

这篇文章了解这个功能的,发现 ivy + wgrep + evil 的配合真是完美

(use-package wgrep
 :config
 (setq wgrep-auto-save-buffer t
       wgrep-enable-key "r"))

wgrep 这么配置后的工作流程:

  1. counsel-git-grep 搜要改的字符
  2. 之后 ivy-occur 打开
  3. r 进入 wgrep 模式,使用 %s/old/new/g 修改
  4. 最后 C-c C-c (wgrep-finish-edit) 保存修改

这个问题好早了哈哈,已经解决了,spacemacs里也是用的类似你说的这种方法