有没有类似 evil-exchange 功能的非evil包。

相交换buffer中任意 位置的文本。有没有类似evil-exchange的包。我没有用evil。

没用个过 evil-exchange,自带这些函数满足么

交换任意两个 region:

结合 thing-at-point 应该能实现一些比较便捷的操作。

1 个赞

evil-exchange 的逻辑是不是先指定一个 motion ,启动了之后,然后去另一个地方再指定一个 motion 就直接交换了?

是的,gx{motion1},gx{motion2}

自带的好像只能交换相邻前后文本,不能交换任意位置的文本。

我有想过说做个第二选择的功能。同时这个选择会替换当前 kill-ring 的位置。

这样如果 kill 的话就是把选择的内容发到这第二选择里面来,如果 kill-ring 首位和选择交换的话,就是两个选择的内容交换之类的。

“第二选择”的思路很棒,在此基础上可以发掘出更多功能。例如兼顾 multi cursor,成为大一统的方案?

如果仅提供后面这一种操作,好像并没有太大优势。因为在 evil-exchange 第二次 motion 的时候,额外提供一个覆盖内容的按键,实现起来也很简单。

如果是交换 任意两个区域(不同buffer也行 ),可以看看这个 swap-region.el

兼容 multiple cursors 会引入无限多的问题,感觉 kmacro 才是王道。按键数更少,性能也更好。

不过这是另一个话题了

确实,控制复杂度要紧

这个方案怎么样

1 个赞

优秀。 有点意思。周末研究下。