我试图设置一个系统,我可以建立一个"检查点"在我的Vim代码内容中,当我通过按键盘命令跳回到该状态时。如果有人曾经玩过模拟器,那么这实际上就是一个保存状态。如果我可以跳回状态并将我的缓冲区,文件和确切的文件内容(即使它们与磁盘上的文件的内容不同)回到它们所在的位置,那将是理想的。
此功能类似于撤消,但是当vim关闭时,状态历史记录可以保留。
答案 0 :(得分:3)
从7.3版开始,Vim有持久性撤销。您可以通过
启用此功能:set undofile
有关详细信息,请参阅:help undo-persistence
。
"检查点标识符"可以通过:undolist
命令或
:echo undotree().seq_cur
然后,您可以通过:[N]undo
或:earlier
/ :later
命令返回到该状态[N]。或者使用undotree.vim - Display your undo history in a graph或Gundo - Visualize your undo tree这样的插件,为撤消历史记录提供更舒适的浏览器。
请注意,此状态仍然只是每个缓冲区,Vim只有不相关的会话功能,可以对文件集进行分组编辑,但那些不会自动存储您的检查点。
答案 1 :(得分:1)
我们知道你想要什么,但你并没有真正解释为什么你想要它:你想解决什么问题?会话之间的持久性?不知道如何使用undo?
如果您希望会话之间保持持久性,可以使用screen
或tmux
。它们是终端多路复用器,允许您(除其他事项外)将当前会话置于保持状态,并在几天后从不同的主机或其他任何地方恢复:
$ tmux
$ vim -O foo.js bar.js
C-b d
(time passes, work is done elsewhere…)
$ tmux attach
$ screen
$ vim -O foo.js bar.js
C-a d
(time passes, work is done elsewhere…)
$ screen -r
您还可以使用Vim的会话管理:
:mksession
(time passes, work is done elsewhere…)
:source Session.vim
(time passes, work is done elsewhere…)
:q
(time passes, work is done elsewhere…)
$ vim -S
请参阅:help :mksession
。