让(Mac)Vim在关闭后重新打开已经打开的文件

9

使用案例:

您在 MacVim 窗口中显示了 2-3 个文件。您按下 Ctrl+Q,MacVim 将关闭。当您重新启动 MacVim 时,它将打开并显示您关闭 MacVim 时的相同文件。

如何实现?

-- 答案

我在我的 .vmirc 中添加了以下内容:

  "save and close all files and save global session
nnoremap <leader>q :mksession! ~/.vim/Session.vim<CR>:wqa<CR>
  "close all files without saving and save global session
nnoremap <leader>www :mksession! ~/.vim/Session.vim<CR>:qa!<CR>

function! RestoreSession()
  if argc() == 0 "vim called without arguments
    execute 'source ~/.vim/Session.vim'
  end
endfunction
autocmd VimEnter * call RestoreSession()

通过这个,我几乎得到了我想要的完美效果,唯一的小问题是我仍然需要按下 command-q,但那是 MacOs 的问题,而不是 vim 的问题。

3个回答

14

安装这个插件:https://github.com/xolox/vim-session

并在您的.vimrc中添加以下两行:

let g:session_autosave = 'yes'
let g:session_autoload = 'yes'
现在,如果你关闭你的MacVim/GVim,它会自动保存并加载会话。

很棒的解决方案。谢谢你的建议! - dwlz
这个工作很顺利,但请注意它无法恢复未保存/未命名的缓冲区。 - undefined

9

我建议您阅读有关会话的内容:help session,这应该可以解答您的问题。甚至还有很好的脚本来处理会话。


谢谢mb14,我在跟随你的引导后成功地设计出了我需要的东西。 - gws
@gws 你能写出你的解决方案吗?谢谢。 - J4cK
@Trickster,这在答案底部有描述。我已经停止使用 MacVim,转而使用终端 vim,但当时该解决方案运行良好。 - gws

3

我建议你使用session.vim来进行Vim的扩展会话管理,因为这个插件非常好用。每次关闭或新建会话时,你都可以自动保存当前会话,并在之后打开Vim并加载该会话。


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