2012-02-14 10 views
10

vim od dzielenia i ładowania każdego okna za każdym razem jest trochę uciążliwe, uratowałem moją sesję używając:podświetlanie składni nie działa po przywróceniu poprzedniej sesji

mksession ~/session1.vim 

i przywrócił go za pomocą:

vim -S session1.vim 

lub

source session1.vim 

przywraca poprzednią sesję idealnie, ale nie wykazują żadnych Synta x wyróżnianie w ogóle.

Znalazłem podobne pytanie tutaj: No syntax highlighting after session restore in terminal ale nie pomagało.

Czy ktoś ma jakiś pomysł?

+0

Potrzebujesz więcej danych: Jakie rodzaje plików ty przeładunkowy? Czy podświetlanie działa w ogóle dla dowolnych typów plików? Czy twój vimrc ma jakieś komendy związane z składnią? itp. –

+0

są to pliki C++, a moim środowiskiem jest Ubuntu. Właściwie używam tych samych profili (ten sam vimrc, itp.) Dla mojego komputera z Debianem, ale dziwne jest to, że nie działa on tylko na moim komputerze z Ubuntu. – devEvan

Odpowiedz

17

Miałem ten sam problem; jeśli zapisałem sesje bez opcji w opcjach sesji, po ponownym załadowaniu Vima, bufory zostały przeładowane, ale bez podświetlania składni.

Rozwiązaniem jest użycie autocmd z zagnieżdżonym przy ponownym ładowaniu.

Wikia posiada obszerny artykuł about loading and saving sessions. Opcja "zagnieżdżona" jest wymieniona na dole.

używam zmodyfikowanej wersji this StackOverflow answer, tutaj jest:

fu! SaveSess() 
    execute 'mksession! ' . getcwd() . '/.session.vim' 
endfunction 

fu! RestoreSess() 
    if filereadable(getcwd() . '/.session.vim') 
    execute 'so ' . getcwd() . '/.session.vim' 
    if bufexists(1) 
     for l in range(1, bufnr('$')) 
     if bufwinnr(l) == -1 
      exec 'sbuffer ' . l 
     endif 
     endfor 
    endif 
    endif 
endfunction 

autocmd VimLeave * call SaveSess() 
autocmd VimEnter * nested call RestoreSess() 

set sessionoptions-=options " Don't save options 
+1

Nie jestem do końca pewien, dlaczego ta odpowiedź nie zawiera już ponad 1k upvotes. Wspaniała robota. –

+0

genialny! Więc qa automatycznie przechowuje sesję, a vim w tym katalogu automatycznie ją przywraca! Jest tylko jeden "błąd". Kiedy 'qa', a następnie' vim' konkretny plik (i), uruchamia plik (i), które chcę vimować z sesją. Byłoby lepiej, gdyby przywracał sesję tylko wtedy, gdy nie określono plików! – Paschalis

+1

Aby to zrobić, upewnij się, że zagnieździłeś 'RestoreSess' w ten sposób: ' if argc() == 0'' .... 'endif' – Paschalis

Powiązane problemy