2017-11-16 9 views

答えて

3

builtin sessions(おそらくvim-session plugin)を使用できます。

Vimセッションには、編集内容に関するすべての情報が含まれています。

これには、ファイルリスト、ウィンドウレイアウト、グローバル変数、 オプションなどの情報が含まれます。 ( によって「sessionoptions」オプションを制御して覚えているまさに。)

コマンド

:mksession mysession.vim 

は、という名前のファイルに現在のセッションを保存します。あなたは、セッションを読み込むことができますVimを起動する次の時間:

vim -S mysession.vim 

または内部vimの

:source mysession.vim 

あなたはVimLeaveのオートコマンドでセーブセッションを自動化し、VimEnterでセッションをリロードするが、ときに、セッションを復元当接して注意することができますvimは、例えばgitから呼び出されます。ここで

+2

、https://github.com/tpope/vim-obsessionもVIM-セッションに非常に実行可能な代替案であります。 –

+0

また、シェルのrcファイルに次のようなものを追加して、コマンドラインから(Borisの答えのように)呼び出すときに引数が渡されないときにセッションを自動ロードすることができます: 'vim() { if [$# gt; vim -O $ @ elif [-f "Session.vim"];その後、 のvim -S Session.vim他 vimの Fiの } 'それはSO上のコメントに来るとき –

+0

えー、私はN00Bよ...改行がコメントで尊敬されていない...もっと屋が知っています。 –

2

は私の設定から抽出/ロード自動保存セッションの基本的な設定です:

let s:session_loaded = 1 

augroup autosession 
    " load last session on start 
    " Note: without 'nested' filetypes are not restored. 
    autocmd VimEnter * nested call s:session_vim_enter() 
    autocmd VimLeavePre * call s:session_vim_leave() 
augroup END 

function! s:session_vim_enter() 
    if bufnr('$') == 1 && bufname('%') == '' && !&mod && getline(1, '$') == [''] 
     execute 'silent source ~/.vim/lastsession.vim' 
    else 
     let s:session_loaded = 0 
    endif 
endfunction 

function! s:session_vim_leave() 
    if s:session_loaded == 1 
    let sessionoptions = &sessionoptions 
    try 
     set sessionoptions-=options 
     set sessionoptions+=tabpages 
     execute 'mksession! ~/.vim/lastsession.vim' 
    finally 
     let &sessionoptions = sessionoptions 
    endtry 
    endif 
endfunction 

あなたは、引数なしでvimを実行する場合は、迅速な編集を行うにはvim somefile.txtを行うので、もしそれが唯一、セッションを復元します最後のセッションには触れません。

ボーナス(これはあまりにもファイル内のカーソル位置を復元します):さまざまな精神で

" When editing a file, always jump to the last known cursor position. 
" Don't do it when the position is invalid or when inside an event 
" handler. 
autocmd MyAutoCmd BufReadPost * 
    \ if line("'\"") > 0 | 
    \ if line("'\"") <= line("$") | 
    \  exe("norm '\"") | 
    \ else | 
    \  exe "norm $" | 
    \ endif| 
    \ endif 
関連する問題