我可以看到,当我使用 mksession 时,它会写入文件以保存会话。文件看起来没问题,会话加载正常。但是当我使用 加载会话时,它会改变我的配色方案so
。打开会话后,配色方案是另一种。这可能是什么?为什么我无法恢复我的会话?
答案1
@itun VIM 会话的默认行为是不保存配色方案。虽然我确信这样做有充分的理由,但我不确定是什么。
我也遇到过同样的情况,并编写了几个 VIM 函数和一个 VIM 命令来获得您所谈论的行为(实际上只需要保存: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
" }}}
这将创建一个 VIM 用户命令来包装内置命令(:Mks ),并且还将添加命令模式缩写来扩展内置命令以使用新的用户命令版本。
希望有所帮助。