保存和/或自动保存vim会话的正确方法是什么?

5
您可以使用以下代码创建一个会话:
:mksession [sessionName.vim]

但是,如果您稍后修改了该会话(即添加/删除缓冲区),则必须手动再次保存会话,但这样做会生成以下错误:

E189: "Session.vim" exists (add ! to override)

这通常是使用“另存为”而不是“保存”时出现的错误。所以我有两个问题:

  1. 这里没有“保存”功能吗?
  2. 有没有一种方法可以自动保存会话文件中的所有更改?

注意:我知道可以使用mksession!sessionName.vim来覆盖现有的会话文件。

1个回答

12
  1. 据我所知,mksession! 确实是唯一可行的方法。
  2. 你可以很容易地通过在 vimrc 中添加一行代码来实现:
    au VimLeavePre * if v:this_session != '' | exec "mks! " . v:this_session | endif

当然,也有插件可以帮助你保存/加载并自动化保存会话。尝试在http://vim.org上搜索“session”。


1
如果我的vim博士仍然是最新的,我认为该行代码的意思是:如果当前会话不为空(即存在会话),则覆盖当前会话。 - puk
是的。它会在 vim 退出之前执行,因此您的会话将更新到最新状态。这就是您想要的行为,对吗? - tungd
我刚从我的 .vimrc 文件中删除了这个。如果由于某种原因 vim 无法加载缓冲区,当您退出时它将保存更改到您的会话(显然这是您不想要的)。 - puk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接