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

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

$
0
0

Vim Advent Calendar 2018 14日目 代打記事です。

みなさん、vimにセッション機能があるのはご存知でしょうか?
便利そうなので使ってみようと思っていますが、せっかくなのでvimscriptの勉強も兼ねてコマンド作ってみました。

fzf.vimを使うとこんな感じになります。
image.png

以下のコードをvimrcに貼ればそのまま使えるとおもいます。

セッションファイル保存先

~/.vim/sessions/配下にセッションファイルを保存します。
ディレクトリがなければ作るようにしています。

" session pathlets:session_path= expand('~/.vim/sessions')if!isdirectory(s:session_path)call mkdir(s:session_path,"p")endif

セッションの保存

:SaveSession test1.vimという感じで、セッションファイル名を指定して保存します。
同じファイル名を指定すると上書きされるのでご注意。

" save session
command!-nargs=1 SaveSession calls:saveSession(<f-args>)function!s:saveSession(file)
    execute 'silent mksession!'s:session_path.'/'.a:fileendfunction

セッションの復元

:LoadSession ~/.vim/sessions/test1.vimという感じで、セッションファイルのパスを指定して読み込みます。

" load session
command!-nargs=1 LoadSession calls:loadSession(<f-args>)function!s:loadSession(file)
    execute 'silent source'a:fileendfunction

fzf.vim版はこちらです。

command! FloadSession call fzf#run({\'source': split(expand('~/.vim/sessions/*'),"\n"),\'sink':function('s:loadSession'),\'options':'-m -x +s',\'down':'40%'})

セッションの削除

:DeleteSession ~/.vim/sessions/test1.vimという感じで、削除します。

" delete session
command!-nargs=1 DeleteSession calls:deleteSession(<f-args>)function!s:deleteSession(file)call delete(expand(a:file))endfunction

fzf.vim版はこちらです。

command! FdeleteSession call fzf#run({\'source': split(expand('~/.vim/sessions/*'),"\n"),\'sink':function('s:deleteSession'),\'options':'-m -x +s',\'down':'40%'})

キーマッピング

こんな感じでマッピングしたら楽です。

nnoremap <Leader>se:SaveSession 
nnoremap <Leader>lse :FloadSession<CR>

参考記事

https://thinca.hatenablog.com/entry/20100201/1265009821
https://qiita.com/shinshin86/items/6e6cbdb77cb59b87d21f
http://nanasi.jp/articles/code/io/file-path.html

最後に

初めてvimscript書いたので、おかしなところがありましたら教えて頂けると助かります。
ちなみに、vimのセッションプラグインはありました。

使ってないのですが、良さげなので興味ある方はどうぞー

https://github.com/Shougo/unite-session
https://github.com/xolox/vim-session


Viewing all articles
Browse latest Browse all 5608

Trending Articles