ヘルプは:help session_file
で閲覧できます。
セッションの作成
mksession
コマンドでセッションを作成できます。
:mksession~/.vim/session/session_name.vim
ディレクトリ・ファイル名は自由です。
指定したディレクトリが存在しない場合はエラーになるので注意。その場合はmkdir
コマンドなどで事前にディレクトリを作成しておきます(:mkdir ~/.vim/session
)。
セッションがすでに存在していた場合はエラにーなります。
:mksession~/.vim/session/session.vim
E189:"/Users/user/~/.vim/session/session.vim" exists (add !to override)
エラーを出さずに上書きしたい場合は、コマンドに!
をつけます。
:mksession!~/.vim/session/session_name.vim
セッションの復元
復元するときは、source
で保存時に指定したパスを指定します。
:source ~/.vim/session/session_name.vim
指定されたファイルが存在しない場合はエラーになります。
E484: Can't open file~/.vim/session/session_name.vim
セッションの削除
delete()
で削除するだけです。指定されたファイルが存在しなかった場合にエラーは出ませんでした。
call delete(expand('~/.vim/session/session_name.vim'))
expand()
で特殊な文字列(上記の場合は~
)を展開する必要があります。
自分の設定
自分はこのように設定し、セッション機能を使っています。git stash
を意識。
plugin/session.vim
if exists('g:loaded_session')finishendifletg:loaded_session=1
command!-nargs=1 ApplySession call session#apply_session(<f-args>)
command!-nargs=1 DropSession call session#drop_session(<f-args>)
command!-nargs=1 PropSession call session#prop_session(<f-args>)
command!-nargs=1 SaveSession call session#save_session(<f-args>)
autoload/session.vim
lets:sessiondir= expand('~/.cache/nvim/session')if!isdirectory(s:sessiondir)call mkdir(s:sessiondir,'p')endiffunction!s:get_session(name)returns:sessiondir.'/'.a:name.'.vim'endfunctionfunction! session#apply_session(name)
execute 'silent source's:get_session(a:name)endfunctionfunction! session#drop_session(name)call delete(s:get_session(a:name))endfunctionfunction! session#prop_session(name)call session#apply_session(a:name)call session#drop_session(a:name)endfunctionfunction! session#save_session(name)
execute 'silent mksession!'s:get_session(a:name)endfunction
参考記事
ありがとうございます。