2016-06-23 14 views
5

Ich benutze die folgende funktion von go away and come back script zu speichern und laden sitzungen, wenn ich beenden und starten vim. Es speichert im Grunde alle meine Einstellungen, Dateien in Puffern usw. in session.vim Datei in dem Verzeichnis, in dem ich Vim geöffnet habe.make sitzungseinstellungen speichern funktion schön mit ultisnips

function! MakeSession() 
    let b:sessiondir = $HOME . "/.vim/sessions" . getcwd() 
    if (filewritable(b:sessiondir) != 2) 
    exe 'silent !mkdir -p ' b:sessiondir 
    redraw! 
    endif 
    let b:filename = b:sessiondir . '/session.vim' 
    exe "mksession! " . b:filename 
endfunction 

function! LoadSession() 
    let b:sessiondir = $HOME . "/.vim/sessions" . getcwd() 
    let b:sessionfile = b:sessiondir . "/session.vim" 
    if (filereadable(b:sessionfile)) 
    exe 'source ' b:sessionfile 
    else 
    echo "No session loaded." 
    endif 
endfunction 
au VimEnter * nested :call LoadSession() 
au VimLeave * :call MakeSession() 

Kürzlich habe ich ultisnips Plugin hinzugefügt. Jetzt

"Snippet engine 
Plugin 'SirVer/ultisnips' 
"Snippets are separated from the engine. Add this if you want them: 
Plugin 'honza/vim-snippets' 

wenn session.vim erstellt wird und ich öffne vim danach, bekomme ich diesen Fehler Spur. Dies geschieht in insert Modus, wenn ich versuche, auch zu bearbeiten.

".vim/vimrc" 287L, 9566C Error detected while processing /Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim: line 15: Traceback (most recent call last):

Error detected while processing /Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim: line 15: File "", line 1, in Press ENTER or type command to continue Error detected while processing /Users/sudobangbang/.vim/bundle/ultisnips/autoload/UltiSnips.vim: line 15: ImportError: No module named UltiSnips

Error detected while processing function UltiSnips#FileTypeChanged: line 1: Traceback (most recent call last): Error detected while processing function UltiSnips#FileTypeChanged: line 1: NameError: name 'UltiSnips_Manager' is not defined

Error detected while processing function UltiSnips#TrackChange: line 1: Traceback (most recent call last):

Wenn ich Funktionen zum Laden Sitzungen entfernen, funktioniert es gut. Auch hier sind alle Linien in session.vim, die Ultisnips drin hat.

inoremap <silent> <C-Tab> ^V^R=UltiSnips#ListSnippets()^V^M 
xnoremap <silent> ^V :call UltiSnips#SaveLastVisualSelection()^V^Mgvs 
snoremap <silent> ^V ^V^[:call UltiSnips#ExpandSnippet()^V^M 
snoremap <silent> <C-Tab> ^V^[:call UltiSnips#ListSnippets()^V^M 


set runtimepath=~/.vim,~/.vim/bundle/Vundle.vim,~/.vim/bundle/syntastic,~/.vim/bundle/nerdtree,~/.vim/bundle/vim-colorschemes,~/.vim/bundle/YouCompleteMe,~/.vim/bundle/supertab,~/.vim/bundle/ultisnips ,~/.vim/bundle/vim-snippets,~/.vim/bundle/ctrlp.vim,~/.vim/bundle/vim-go,~/.vim/bundle/vim-commentary,~/.vim/bundle/vim-surround,~/.vim/bundle/vim-fugitive,~/.vim/bundle/vim-unimpaired,~/.vim/bundle/v im-repeat,~/.vim/bundle/vim-airline,~/.vim/bundle/vim-airline-themes,~/.vim/bundle/gundo.vim,~/.vim/bundle/emmet-vim,~/.vim/bundle/html5.vim,~/.vim/bundle/vim-css-color,~/.vim/bundle/python-mode,~/.vi m/bundle/vim-flake8,~/.vim/bundle/vim-ruby,~/.vim/bundle/vim-endwise,~/.vim/bundle/vim-rails,~/.vim/bundle/vim-bundler,~/.vim/bundle/vim-rake,~/.vim/bundle/vim-ruby-refactoring,~/.vim/bundle/apidock.v im,~/.vim/bundle/blockle.vim,~/.vim/bundle/vim-rspec,~/.vim/bundle/javascript-libraries-syntax.vim,~/.vim/bundle/tern_for_vim,~/.vim/bundle/vim-javascript,/usr/local/share/vim/vimfiles,/usr/local/shar e/vim/vim74,/usr/local/share/vim/vimfil 

Wie kann ich meine Session-Funktion, so dass vim Lasten ultisnips richtig ändern?

vim --version 

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 4 2016 11:48:12)
MacOS X (unix) version
Included patches: 1-1864
Compiled by Homebrew

+1

nicht sicher, dass dies ausreichen würde, aber Versuchen Sie, Sitzungen zu laden, nachdem Ihre Plugins initialisiert wurden. Abhängig von Ihrem Plugin-Manager, kann dies leicht sein (wie in, einfach den Aufruf von 'LoadSession()' an das Ende Ihrer vimrc), schwer oder unmöglich. :) –

+0

Gut zu denken, ich werde es versuchen –

+0

Ich habe ähnliche Fehler in Windows GVim beim Laden der Sitzung über die Befehlszeile mit 'gvim -S ' – icc97

Antwort

3

ich ein Update gemacht, aber während einige Funktionen verzichten zu müssen.

entfernte ich diese Zeile aus session loading

au VimEnter * nested :call LoadSession() 

und einen Schlüssel-Mapping manuell die Sitzung

map <leader>l :call LoadSession()<CR> 

Hypothese in @Sato Katsuras Kommentar laden zu scheinen gültig zu sein.
Jetzt recherchiere ich, ob ich zum automatisierten Teil gehen kann, damit diese Funktion aufgerufen wird, wenn alle Plugins geladen sind.

0

Ich weiß nicht, wie viel eine Antwort das ist, aber vielleicht eine Erklärung.

Vom vim-session plugin README

Vim's :mksession command isn't really compatible with plug-ins that create buffers with generated content and because of this the vim-session plug-in includes specific workarounds for a couple of popular plug-ins:

wurde ich an der vim-Sitzung Plugin von diesem allgemeineren SO question on plugin issues with sessions hingewiesen.

Ich bin jetzt eigentlich ziemlich sicher, dass ich ein Update haben, wenn Sie Tim Popes verwenden obsession.vim Plugin, dann ist die Session.vim-Datei, die entweder in der üblichen Weise werden durch -S Session.vim oder source Session.vim und UltiSnips funktioniert wieder geladen erstellt wird.

Im readme gibt es diese eine Zeile, die den Unterschied erklären könnte (ich das Bit in eckigen Klammern hinzugefügt, wie es ein wenig aus dem Zusammenhang gerissen ist hier):

  • [When saving the session] Don't capture options and maps. Options are sometimes mutilated and maps just interfere with updating plugins.