vimでウィンドウやタブの状態を自動保存/復元する方法

  • 74
    Like
  • 0
    Comment
More than 1 year has passed since last update.

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を見れば分かります