Hack #120: gVim でウィンドウの位置とサイズを記憶する
Posted at 2010/01/28ツイート
GUI アプリケーションではよく終了時にウィンドウの位置とサイズを記憶し、次回起動時に復元するものを見かけます。Vim でも設定次第で同様のことが可能です。
設定
.gvimrc に以下のように書きます。
let g:save_window_file = expand('~/.vimwinpos')
augroup SaveWindow
autocmd!
autocmd VimLeavePre * call s:save_window()
function! s:save_window()
let options = [
\ 'set columns=' . &columns,
\ 'set lines=' . &lines,
\ 'winpos ' . getwinposx() . ' ' . getwinposy(),
\ ]
call writefile(options, g:save_window_file)
endfunction
augroup END
if filereadable(g:save_window_file)
execute 'source' g:save_window_file
endif
解説
g:save_window_file
この変数で指定するファイルにウィンドウの位置やサイズを保存します。expand()
は ~ を $HOME に展開するのに必要で、その必要がない場合はなくても問題ありません。
設定の書き出し
augroup SaveWindow 〜 augroup END で、Vim の終了時に発生するイベントを登録しています。
ここでは Vim の終了時に s:save_window()
と言う関数を呼ぶようにしています。そしてこの関数のなかで、g:save_window_file
にウィンドウの位置とサイズの情報を Vim スクリプトの形式で書き出しています。
設定の読み出し
最後の if でウィンドウ情報ファイルが存在するかをチェックし、存在した場合はそのファイルを :source
で読み込みます。情報ファイルは Vim スクリプトとして書き出されているので、:source
するだけで位置とサイズが復元されます。
もどる
blog comments powered by Disqus