iedit占cpu太多了, 有没有优化方法或者替代品?

有时候只修改几个单词而已, 就很卡, 每输入一个字符都能明显感觉到延迟, 而且cpu会突然占满.

anzu-query-replace 试试?

它能否将范围限定在函数内?

另外, 它搜索的时候统计匹配数量不会卡吗? 比如匹配数量很多的时候

multi cursor 之类的扩展很多。但有时候很难准确操作每个编辑点,特别是当这些点在视线外。

相关讨论

可以变通一下,把常用功能组合起来作为替代方案:

  • narrrow-to-region / narrow-to-defun 限定编辑范围。
  • evil
    • a) 矩形编辑。适用于按列对齐的数据。
    • b) 选区内替换。选中一段文本,然后 : 再输入 s/foo/bar/g 就可以在限定范围内替换。evil 替换有个好处:在按下确认键之前,会给出预览,修改之后的效果一目了然。
    • c) Operating on search matches。用 evil-ex-search 找出所有关键字,编辑其中一个匹配点,然后应用到其他所有位置(中间可以任意跳过)
  • helm-swoop。把需要编辑的位置找出来,汇集到一个单独窗口集中修改。

正在专门设计编辑器解决类似问题。

iedit就是操作比较简便, 比mc简单, 而且范围可以限定在函数中(给个prefix即可), 经常用, 不过性能确实不太好.

个人感觉比较理想的操作方式:

  1. 分为左右两个窗口, 一个窗口显示原始文件, 界面类似iedit的, 另一个窗口显示所有匹配的行, 界面类似occur的结果, 右边与左边实时同步更新.
  2. 主要用第一个窗口, 后面这个窗口用于辅助. 辅助窗口若能同时显示outline就好了, 比如可以直观看到匹配的某几行属于哪个函数.

看了下helm-swoop, 有点接近, 但按键次数有点多, 而且输入焦点不在原始窗口里, 焦点在minibuf和辅助窗口.

这个厉害, 尽快发布