PC再起動したいけど今開いてるファイルをまた開き直すのめんどくさい…
や
今日の作業は終わったからvim閉じたいけど次作業する時今の状態復元したいからvim閉じれない…
vimmerなら一度は思った事があるはずです。
この記事を読めばそんなことにもう悩まされることはありません!ウヒョー
まずどういう事が出来るようになるのか、gifで見てみましょう
何が行われてるかというと
- 1分間に1回、状態を自動保存
-
:qa
等でvimを辞める時、状態を自動保存 - プロジェクトのルートディレクトリで引数なしでvimを起動すると自動的に状態を復元
が行われてます。
状態
はvimのsessionという機能で保存してます。
sessionは標準のvimで:mksession
で作成出来るのですが、今回はその:mksession
をラップしたプラグインを使用して実現しています。
設定方法
プラグインインストール
NeoBundle 'xolox/vim-session', {
\ 'depends' : 'xolox/vim-misc',
\ }
プラグインの設定
" 現在のディレクトリ直下の .vimsessions/ を取得
let s:local_session_directory = xolox#misc#path#merge(getcwd(), '.vimsessions')
" 存在すれば
if isdirectory(s:local_session_directory)
" session保存ディレクトリをそのディレクトリの設定
let g:session_directory = s:local_session_directory
" vimを辞める時に自動保存
let g:session_autosave = 'yes'
" 引数なしでvimを起動した時にsession保存ディレクトリのdefault.vimを開く
let g:session_autoload = 'yes'
" 1分間に1回自動保存
let g:session_autosave_periodic = 1
else
let g:session_autosave = 'no'
let g:session_autoload = 'no'
endif
unlet s:local_session_directory
この設定によって
vimを起動したディレクトリ直下に.vimsessionsディレクトリがあればそれをsession保存ディレクトリとして設定する
↓
.vimsessionsディレクトリのdefault.vimが開かれる
という流れが実現します
自動保存/復元するディレクトリの設定
$ cd /path/to/projects/root/directory/
$ mkdir .vimsessions
$ vim
vim起動後、:SaveSession
を実行すれば、.vimsessions/にdefault.vimが作成され、自動保存/復元が可能になります!
おまけ
詳しい情報は以下のIssuesを見れば分かります