vim mshsession colorsheme issue

0

Eu posso ver que quando eu uso o mksession, ele grava o arquivo para salvar a sessão. O arquivo parece ok e a sessão está carregando ok. Mas isso muda meu colorsheme quando eu carrego a sessão com so . Depois que a sessão é aberta, o esquema de cores é outro. O que pode ser? Por que não consigo restaurar minha sessão?

    
por itun 09.02.2012 / 15:27

1 resposta

1

@itun O comportamento padrão das sessões do VIM é que ele não salva o esquema de cores. Embora eu tenha certeza de que há uma boa razão para fazer isso, não sei o que é isso.

Eu também corri para a mesma situação, e escrevi algumas funções VIM e um comando VIM para obter o comportamento que você está falando (realmente só precisa salvar o: colorscheme colors_name).


" ===========================================================================
function! Mksession(...) " {{{
" Intercept the mksession built-in, so that we can append the current
" colorscheme to the setup as well.
" ---------------------------------------------------------------------------
"  call Dfunc("Mksession()")

" if argc() > 2 " echohl ErrorMsg " echo "Command takes only 2 arguments, extra arguments ignored!" " echohl None " endif

" call Decho("a:0=<".a:0.">") " call Decho("a:1=<".a:1.">") " call Decho("a:2=<".a:2.">") " If no overwrite flag is supplied, assume no overwrite if a:1 == "" let l:overwrite = 0 elseif a:1 == "!" let l:overwrite = 1 endif

" If no session name is supplied, default to Session.vim in the current working directory if !exists("a:2") || a:2 == "" " if !exists("l:sessionname") || l:sessionname == "" let l:sessionname = "Session.vim" else let l:sessionname = a:2 endif

" call Decho("sessionname=<".l:sessionname.">") " call Decho("overwrite=<".l:overwrite.">")

if l:overwrite == 0 exe "mksession ".l:sessionname else exe "mksession! ".l:sessionname endif silent exe '!echo colorscheme '.g:colors_name.' >> '.l:sessionname

" call Dret("Mksession") endfunction " Nodiff com! -nargs=+ -bang -complete=command Mks call Mksession("",) cmap mks Mks cmap mksession Mks " }}}

Isso criará um comando de usuário VIM para agrupar o código interno (: Mks) e também adicionará abreviações de modo de comando para expandir o comando interno para usar a nova versão do comando de usuário.

Espero que ajude.

    
por 04.04.2012 / 15:57

Tags