有时候只修改几个单词而已, 就很卡, 每输入一个字符都能明显感觉到延迟, 而且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即可), 经常用, 不过性能确实不太好.
个人感觉比较理想的操作方式:
- 分为左右两个窗口, 一个窗口显示原始文件, 界面类似iedit的, 另一个窗口显示所有匹配的行, 界面类似occur的结果, 右边与左边实时同步更新.
- 主要用第一个窗口, 后面这个窗口用于辅助. 辅助窗口若能同时显示outline就好了, 比如可以直观看到匹配的某几行属于哪个函数.
看了下helm-swoop, 有点接近, 但按键次数有点多, 而且输入焦点不在原始窗口里, 焦点在minibuf和辅助窗口.
这个厉害, 尽快发布