自己在使用插件Evil-mc,当自己编辑完成以后,不能去掉这些cursor,在很多地方还是高亮。自己使用命令(evil-mc-undo-all-cursors)好像还是不能正常工作,没有任何反应。不知道大家有使用这个插件的吗?大家在Spacemacs下进行多点编辑都是使用什么插件呢?有没有更好的插件来进行文本的多点的编辑?
我的可以undo,可以多点编辑,但是不能多点删减
既然你已经知道 evil-mc-undo-all-cursor
不工作,为何不进一步调试它呢。多点高亮,本质上就是创建多个 overlay,在编辑期间,这些 overlay 必定存放在某个全局的变量中,把它们删除就实现 undo 了。
多点编辑在我看来就是个噱头,华而不实。我不记得上一次使用多点编辑是什么时侯了,有太多更方便&可靠的替代方案:
你下面说的 narrowing 和 widen ,以及 vim style 替换这个我也是经常使用这个。这个对我使用频率还是比较高的。或许这个是比较好的解决方案。我原来也尝试过使用这个evil-mc,后来也是使用体验不好暂时放弃了,现在又重新看看这个插件,是不是可以更好的使用。感觉这个插件在使用过程中感觉并没有效率很高,反倒是很麻烦,琐碎了。
再试试evil-multiedit
这个打字太多了,特别是foo
换成fo
这种的,用multi edit只要match-next
几下然后删掉一个o
就行了,:s
要把两个单词都打一遍
复制粘贴也就多按两次键,s/foo/bar/g
的好处是可以预览,而且操作过程可以重复利用(或修改后再利用)。它的缺点不是输入的问题,而是修改范围的问题。只能限定修改的起始区间,不能跳过中间的某些匹配项。这种情况 evil-ex-search 是很好的解决方案。
多点编辑的问题在于,编辑点很难维持,必须一气呵成选对所有的编辑点,一步出错,全盘重来。而且你下次修改相同/相似的内容,还要再打一套完整的降龙十八掌。
evil-ex-search 则不同,可以重用历史操作。编辑过程中有足够的时间思考是否跳过、观察每一步是否正确,编辑错了可以单步撤销,即使按 C-g
中断了也可以立即唤起继续操作。
You don’t need more than one cursor in vim,对 evil 也适用。
加个c flag后,vim就可以选择是否跳过中间的匹配项了 s/foo/bar/gc
trigger | Effect |
---|---|
y | Substitute this match |
n | Skip this match |
q | Quit substituting |
l | “last”—Substitute this match, then quit |
a | “all”—Substitute this and any remaining matches |
C-e | Scroll the screen up |
C-y | Scroll the screen down |
其他不清楚,evil-multiedit是可以跳到各个match上然后toggle一个的。
(evil-ex-define-cmd "ie[dit]" 'evil-multiedit-ex-match)
可解
这个我猜现在multiple-cursors evil-mc evil-multiedit都支持