开始也只是想实现一个交换选区的功能,但是希望在操作上更“无感”一些,把它附着在 yank 上,少占用快捷键,减轻记忆负担。然后我看 @xuchunyang 已经写了一个 swap-regions.el,就压着没放出来。
后来把其他操作也慢慢纳进来,不再适合叫 swap
了,就一直在琢磨起个什么名字,拖了很久。直到最近才决心整理一下。由于是不同时期的代码,也没有整体的规划,难免有些乱(包括命名和代码组织)。不过好在我写了不少测试,保证这些功能都符合我的预期,将来重构如果改偏了也能很快发现。
以下是效果展示(我用到了 hydra 和 evil):
交换选区(支持跨 buffer)
交换光标左右的内容
交换选区左右的内容
移动 sexp (也可以是 word 和 line)
以 sexp(也可以是 word 和 line)作为步长移动选区内容
在临时 buffer 中重新排列当前列表中的 sexp
欢迎建议,pr 或者修改英语语法错误😅