如何让gvim从最新的关闭文件开始?

时间:2013-12-19 09:59:48

标签: vim

我用Google搜索了一个解决方案(c.f. http://vim.wikia.com/wiki/Open_the_last_edited_file):

" Go to last file(s) if invoked without arguments.
autocmd VimLeave * nested if (!isdirectory($HOME . "/.vim")) |
    \ call mkdir($HOME . "/.vim") |
    \ endif |
    \ execute "mksession! " . $HOME . "/.vim/Session.vim"

autocmd VimEnter * nested if argc() == 0 && filereadable($HOME . "/.vim/Session.vim") |
    \ execute "source " . $HOME . "/.vim/Session.vim"

但似乎有一些冲突(在vim7.4中):

processing vim/vimfiles/ftpugins/latex-suite/folding.vim with error
E227: mapping Tex_RefreshFolds has exists

问题是什么以及如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

默认情况下,Vim会话还存储所有当前定义的映射。在您的情况下,该映射会干扰Latex套件中的<unique> - 约束映射。

通常,您不需要保留映射;它们来自插件,并在下一个Vim启动时自动重新定义(仅手动输入:map将丢失)。通过

删除此行为
:set sessionoptions-=options

~/.vimrc中(它还会减少会话文件的大小并加快加载速度)。

答案 1 :(得分:1)

如果错误抱怨相同的现有映射(可能是从会话中恢复),则该错误不会造成伤害。如果你无法解决根本原因,你可以(作为最后的手段)通过将:silent!添加到原始autocmd来使错误(以及任何其他错误)沉默:

...
\ execute "silent! source " . $HOME . "/.vim/Session.vim"