@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.