我想知道有没有办法在vim中做同样的事情?
#1 楼
Vim可以做到这一点,尽管可能有些笨拙并需要进行一些设置。缺少的位是交换文件session
和:preserve
的&
标志。交换文件用于在Vim或系统崩溃时进行恢复。它们使您能够恢复所有未保存的更改(有一些限制,请参阅
cpoptions
)。但是,当Vim正常退出时,即使缓冲区有未保存的更改,它也会删除正在使用的所有交换文件。:he swap-file
和:preserve
的cpoptions
就是其中的地方。&
强制Vim写入所有缓冲区。立即切换到其交换文件(而不是4秒或200个字符之后的标准,或者您选择将其设置为任何标准)。执行:preserve
会告诉Vim在正常退出时不要删除用:set cpoptions+=&
保存的交换文件。,不幸的是,Vim不会在从交换文件中恢复时自动清除交换文件,因此您很快就可以得到一个看起来像这样的目录这:
.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt
您可以手动删除较旧的文件,但是Vim仅在有
:preserve
文件放置新交换文件的地方自动提供恢复。 *.swp
命令将强制Vim查找要从中恢复的交换文件。通过使用自动命令,您可以自动进行保存(可能与
:recover
事件一起)和恢复(可能与QuitPre
或BufRead
一起)。 Recover.vim是一个插件,可以作为友好的替代品来管理恢复。它似乎还可以处理交换文件。我不确定如何处理带有BufReadPost
但没有.swo
文件的目录。在这种情况下,您可能仍需要使用.swp
。vim-obsession是另一个声称可以简化会话处理的插件。
#2 楼
是。它称为“会话”,您可以在以下位置阅读所有内容::help session
评论
我知道会话。但是似乎并不相同-它保存所有打开的缓冲区和选项卡(以及设置),但是如果其中一个缓冲区有一些更改,则必须在退出前将它们写入磁盘。在Sublime文本中,您无需在退出时保存打开的文件-Sublime将所有更改保存在单独的位置,并在重新打开时将其恢复。因此原始文件在磁盘上没有被修改,但是更改也不会丢失
–懒惰
2015年12月10日14:03
是的,那将是主要区别。不知道是否可以不借助tmux / screen / detach以任何方式实现它。
– romainl
2015年12月10日下午14:07
评论
:xa全部退出(保存所有更改并关闭Vim)这将写入文件,但不会保存其他任何内容。我认为OP希望既保存文件又不编写文件,并保存所有打开的选项卡或缓冲区的状态
是的,后来我从他的评论中了解了这一点。