Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vimのセッション機能について

$
0
0

ヘルプは: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

参考記事

ありがとうございます。

Vimのセッション機能を使う - Qiita


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>