2012-02-14 10 views
10

desde la división y la carga de cada uno ventanas cada vez que son un poco molestos, ahorré mi sesión usando:resaltado de sintaxis no funciona después de restaurar una sesión anterior vim

mksession ~/session1.vim 

y la restituyó usando:

vim -S session1.vim 

o

source session1.vim 

restaura la sesión previa a la perfección, pero no muestra ninguna Synta x destacando en absoluto.

He encontrado una pregunta similar aquí: No syntax highlighting after session restore in terminal pero no ayuda mucho.

¿alguien tiene alguna idea?

+0

Necesita más datos: ¿Qué tipos de archivos se le vuelve a cargar? ¿El resaltado funciona para cualquier tipo de archivo? ¿Tu vimrc tiene algún comando relacionado con la sintaxis? etc. –

+0

son archivos C++, y mi entorno es Ubuntu. De hecho, estoy usando los mismos perfiles (mismo vimrc, etc.) para mi máquina Debian, pero lo extraño es que no está funcionando solo en mi máquina Ubuntu. – devEvan

Respuesta

17

Tuve el mismo problema; si guardaba sesiones sin 'opciones' en sessionoptions, cuando volví a cargar Vim, los búferes se volvieron a cargar, pero sin resaltar la sintaxis.

La solución es utilizar un autocmd anidado al volver a cargar.

Wikia tiene un extenso artículo about loading and saving sessions. La opción 'anidado' se menciona en la parte inferior.

utilizar una versión modificada del this StackOverflow answer, aquí está:

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

Entonces, no estoy seguro de por qué esta respuesta ya no tiene más de 1 k de votos ganadores. Excelente trabajo. –

+0

¡genial! Entonces, qa almacena automáticamente la sesión, ¡y vim en ese directorio la restaura automáticamente! Solo hay un 'error'. Cuando 'qa' y luego' vim' un archivo (s) en particular, confunde el/los archivo (s) que quiero compartir con la sesión. ¡Sería mejor si restaura la sesión solo cuando no se especifican archivos! – Paschalis

+1

Para hacer lo anterior, asegúrese de anidar el cuerpo de 'RestoreSess' con esto: ' if argc() == 0' .... 'endif' – Paschalis

Cuestiones relacionadas