相交换buffer中任意 位置的文本。有没有类似evil-exchange的包。我没有用evil。
交换任意两个 region:
- GitHub - xuchunyang/swap-regions.el: Swap text in two regions
- GitHub - twlz0ne/jagger: Move/swap things more conveniently in Emacs
结合 thing-at-point 应该能实现一些比较便捷的操作。
1 个赞
evil-exchange 的逻辑是不是先指定一个 motion ,启动了之后,然后去另一个地方再指定一个 motion 就直接交换了?
是的,gx{motion1},gx{motion2}
自带的好像只能交换相邻前后文本,不能交换任意位置的文本。
我有想过说做个第二选择的功能。同时这个选择会替换当前 kill-ring 的位置。
这样如果 kill 的话就是把选择的内容发到这第二选择里面来,如果 kill-ring 首位和选择交换的话,就是两个选择的内容交换之类的。
“第二选择”的思路很棒,在此基础上可以发掘出更多功能。例如兼顾 multi cursor,成为大一统的方案?
如果仅提供后面这一种操作,好像并没有太大优势。因为在 evil-exchange 第二次 motion 的时候,额外提供一个覆盖内容的按键,实现起来也很简单。
兼容 multiple cursors 会引入无限多的问题,感觉 kmacro 才是王道。按键数更少,性能也更好。
不过这是另一个话题了
确实,控制复杂度要紧
这个方案怎么样
1 个赞
优秀。 有点意思。周末研究下。