[Vim Protips] Save session – 儲存是為了走得更長遠

Posted on

我的 Vim 有個功能,是某次在觀摩別人的 vimrc 找到的:

按下指定的快捷鍵,就能把當下的 session 存下來。

重新開啟 Vim 之後,只要載入這個 session 就可以回復原本開啟的檔案們,甚至連 layout 都可以還原。

config 的設定如下:

nnoremap <F2> :mksession! ~/.vim_manual_session.vim <CR>
nnoremap <F3> :source ~/.vim_manual_session.vim <CR>

快捷鍵我習慣用 F2, F3,前者用來儲存,後者用來讀取。

後面的 ~/.vim_manual_session.vim 則是用來記錄 session 的檔案,所以如果有需求的話,可以寫寫 vim script 讓他變成 ~/.vim_manual_session_1.vim~/.vim_manual_session_2.vim 之類有 ID 的形式。

有些人可能會注意到「欸?有 manual?那是不是有 auto?」。

嗯沒錯,auto 的設定也蠻簡單的:

" key binding
nnoremap <F4> :source ~/.vim_auto_session.vim <CR>

" auto script
autocmd VimLeave * mksession! ~/.vim_auto_session.vim
" autocmd VimEnter * source ~/.vim_auto_session.vim

前半部是設定 F4 為讀取自動儲存的快捷鍵,後半部則有兩個 script:

  • 前者是「在離開 Vim 時,自動幫我產生 ~/.vim_auto_session.vim 進行 session 存檔。」
  • 後者則是「在進入 Vim 時,自動幫我讀取 ~/.vim_auto_session.vim 這個檔案,回復上次離開前的狀態。」

我自己是不太喜歡自動回復,感覺太自動了。但作為不小心誤關 Vim 的保險,自動在離開時儲存倒是可以開著。

這些功能我在爬文的時候也有看到有人做成 plugin,但我沒有試過,如果有興趣的可以嘗試看看: autosess: auto save/load sessions

其他連結