session.vimを使う

Intro

session.vim : Extended session management for Vim
http://www.vim.org/scripts/script.php?script_id=3150

Sessionを保存、起動時にSessionを読み込むことが出来るプラグインの設定
(要は前回の終了時に戻したり、好きな状態に戻せるということ)

[gvim起動時にSessionで復元した画面]

* どうでもいいことだけど、gvimのiconは気分転換に化け猫屋の素材に変えているので違うiconになってます。

Contents

1. PluginをDownloadしてくる
2. 各自のruntimepathの通った場所に放り込む(一般的には、runtimeフォルダ以下?かな)

[g:session_directory]を設定しない場合のデフォルト値は下記のとおり

  • win32 or win64
    • ~\vimfiles\sessions
  • 上記以外
    • ~/.vim/sessions
vimrcで環境設定(iicebar version)

(2010/11/07 AM5:49)動作が気に入らなかったので、終了時の動作を変更できるようにした。

" ↓新規変数を追加
let g:session_directory = "Sessionの保存先" " 設定するかどうかは任意
let g:session_winsize_not_remember = 1 "Windowサイズを覚えない:1 覚える:0
let g:session_vimstartup_columns = 100 "列
let g:session_vimstartup_lines = 50 "行
function! ExitVimFuncSession()
	if g:session_winsize_not_remember == 1
		" 前回終了時のWindowsサイズではなく、幅、高さを固定値で起動する
		execute "set columns=" . expand(g:session_vimstartup_columns)
		execute "set lines="   . expand(g:session_vimstartup_lines)
	endif
	SaveSession
endfunction
command! ExitVimFuncSession call ExitVimFuncSession()

" 引数を指定しなかった時のみ、Sessionを有効にする
if argc() == 0
	" 起動時にSessionを読み込む
	let g:session_autoload = 1
	" Sessionファイル名を聞かず勝手に読み書きする
	let g:session_autosave = 1
	augroup MySession
		" Vim終了時にSassionを保存する
		au VimLeave * ExitVimFuncSession
	augroup END
else
	" 明示的に無効にする
	let g:session_autoload = 0
	let g:session_autosave = 0
endif

これだけで、前回終了時の状態を簡単に復元できる。
また、上記設定だとdefault.vimという名前でSessionが保存される。1つ目のvim起動時はSessionが読み込まれて、2つ目のvim起動時ファイル無しでも読み込まれない。…あれ?矛盾してる。実は既に実装されてて↑の記述で要らないのがあったかもしれない、ちょっと見ておこう…。(2010/11/07 PM17:00)追記

Comment

  • 実は触り始めてまだ30分だけど、良さそうだと思ったのでついカッとなって紹介した。
    (これ書いて修正してるうちに数時間ほど使用してた。)
  • 間違えてる箇所があればご指摘ください。