哪一个undo包比较好用,求推荐

众所周知,emacs原生的undo功能虽然强大,但是又是会有一些反直觉。虽然用undo-tree包可视化操作的话基本都可以解决问题,但是日常使用的话,似乎还是用一个模拟一般undo行为的包比较方便。

之前我使用以下包,来满足这个需求

倒也是一切正常。但是,最近某次更新之后,我发现这个包的行为变的有些怪异。首先是增加了后缀名是~undo-fu的临时文件,来记录undo的历史。而之前的版本是不需要临时文件的,不知为何会增加。其次是,有了这些临时文件后反而undo的历史很容易被未知原因破坏,还没有之前好用。

目前只好让这个包下岗了,大家有什么推荐吗?

我一直用 undo fu 蛮好的。

使用过undo-fu,直到有一次完全搞乱了我的文件 。目前还是自定义undo-tree用着,平时就用内置的快捷键。

现在又多了一个选择,目前正在准备加入 elpa。 简单的 undo/redo 就用Emacs 自带的够用,需要切换分支的时候开 vundo-mode 就可以可视化。

3 个赞

这个包挺好的,我已经用了很久了,很稳定

emacs有内置的redo命令吗

有的,28.1 版本引入了的 undo-redo,快捷键是 C-?undo 的快捷键是 C-/C-x u

3 个赞

收到,看来是时候升级28了

怎么保存历史记录呢?undo-tree可以记录到临时文件中,重启 Emacs 也还可以 undo redo.有没有其他的包能实现这个的?

1 个赞

undo fu session

可惜manjaro还停留在27.2不知什么时候升28

应该是冤枉了undo-fu包,出问题应该是undo-tree。特别是undo-tree更新后把undo-tree-auto-save-history的默认值设成了真,结果就是出现了一大堆暂时文件,大家注意吧。

1 个赞

今天用 vundo 替换了 undo-tree, vundo真好用啊, 再也不用进入撤销原来撤销的代码这种云里雾里的循环中啦。

3 个赞

虽然但是,undo-tree也是现代/普通的undo模式,只有emacs原版是“撤销原来撤销的”这样的。undo-tree主要是有bug,撤销多了可能崩,undo-fu更可靠。


现在挺稳定的


可能无关但是记得用 GitHub - emacscollective/no-littering: Help keeping ~/.config/emacs clean

我这两天习惯了一下, C-/用正常的 undo, C-? 用 vundo, 只在 redo 场景用 vundo , 这样结合一下效果很好。

2 个赞

其实vundo虽好但我很少用……因为只有两个分叉的历史很长的时候才需要,而这时候保险起见一般会在开始分叉之前git stage或者git stash一下。

可能非evil用户会经常进vundo因为里面jkhl比较好按哈哈,我用evil,undo和redo分别是u r,不开心/不确定/想不通就来回按两下,完全不费力


顺便给路过的evil用户分享一个小技巧:把u r绑到undo redo,然后t在operator和visual的时候绑定不变,在normal的时候绑到evil-replace(修改单个字符),虚空挤出按键抛弃原来难用的C-r,很开心

1 个赞

我安装了 vundo(和 undo-tree 一样,邦定的 C-x u), 几乎没用过。平时都是用的默认的 undo(C-/) 和 undo-redo (C-?)

我觉得vundo主要的优势是反撤销的时候不会把历史弄乱,只是在现有历史导航。

这样对于用户来说,反撤销时总会回到一个稳定的版本,而不是因为反撤销操作引入更多编辑历史,最后弄丢东西了。这个是核心吸引点。

undo还是要用默认操作比较符合传统。

我自己是使用 undo-tree. :smiley:

我是用evil,把vundo绑定到u键上。有点不习惯。