众所周知,emacs原生的undo功能虽然强大,但是又是会有一些反直觉。虽然用undo-tree
包可视化操作的话基本都可以解决问题,但是日常使用的话,似乎还是用一个模拟一般undo行为的包比较方便。
之前我使用以下包,来满足这个需求
倒也是一切正常。但是,最近某次更新之后,我发现这个包的行为变的有些怪异。首先是增加了后缀名是~undo-fu
的临时文件,来记录undo的历史。而之前的版本是不需要临时文件的,不知为何会增加。其次是,有了这些临时文件后反而undo的历史很容易被未知原因破坏,还没有之前好用。
目前只好让这个包下岗了,大家有什么推荐吗?
使用过undo-fu,直到有一次完全搞乱了我的文件 。目前还是自定义undo-tree用着,平时就用内置的快捷键。
现在又多了一个选择,目前正在准备加入 elpa。
简单的 undo/redo 就用Emacs 自带的够用,需要切换分支的时候开 vundo-mode 就可以可视化。
3 个赞
有的,28.1 版本引入了的 undo-redo
,快捷键是 C-? 。undo
的快捷键是 C-/ 和 C-x u
3 个赞
怎么保存历史记录呢?undo-tree可以记录到临时文件中,重启 Emacs 也还可以 undo redo.有没有其他的包能实现这个的?
1 个赞
可惜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还是要用默认操作比较符合传统。
我是用evil,把vundo绑定到u键上。有点不习惯。