• 20-utility-config
  • autosession.nvim

autosession.nvim

私が作ったプラグインなので、贔屓目です。 autosession.nvim

Vim では、今開いているプロセスを閉じるとウィンドウの場所や開いているバッファなどの情報は破棄されてしまいます。 しかし、例えばあるプロジェクト内でコーディングしていた場合、次に nvim を開いたときには前の続きから始めたいものです。

そこで、Nvim を閉じたときに自動でウィンドウやバッファの内容、更には Undotree やレジスタの内容までもを全部保存して、次回同じディレクトリで Nvim を開始したときには、すべての情報が復元されるようなプラグインを作りました。

感覚としては、VSCode のようこそ画面の「最近」からセッションを復元できる機能にかなり似せています。

How to Use

セッションを保存したい場合は :AutoSessionSave というコマンドを実行します。(コマンドはタブで補完が効きます。) このコマンドを実行するとカレントディレクトリに .vim/session.vim というファイルが作成されます。

次回このフォルダで nvim と打った場合にこのファイルの内容をもとに立ち上がった直後にセッションの復元を行ないます。(しない設定もできる)

また、autosave_on_quit = true ですでに .vim/session.vim がある場合に :AutoSessionSave と打たずとも nvim を閉じる際に自動的にセッションの状態を保存してくれる設定もできます。

autosession.nvim

Use With Startify

Vim-startify という VSCode でいうようこそ画面のような、過去に開いてたファイルやセッションを覚えて一覧にしてくれるプラグインがあります。セットアップ説明

:AutoSessionGlobal というコマンドを実行するとこの Startify に現在のセッションをディレクトリ名をセッション名として追加することができます。

また、Startify は nvim <filename>nvim . などと開くファイル・フォルダを指定せず、nvim と起動したときだけ開くようになっていて、restore_on_setup = true とすることで、.vim/session.vim が存在するときだけ Startify で自動的に現在のディレクトリを選択したことにすることができます。

vim-startify

Setup

20-utility-config/autosession.lua
require("autosession").setup({
  restore_on_setup = true,
  autosave_on_quit = true,
  force_autosave = true,
  sessionfile_name = ".vim/session.vim",
})
 
vim.cmd([[
command! CL AutoSessionAuto <bar> :qa
command! A :qa
]])

上の設定では、:CL というコマンドで、どんなに大量のウィンドウやタブを開いていても全部の位置を記憶して nvim を閉じることができます。(autosave_on_quit = true の場合は :qa でも可)

Gitignore the Local Files

こういうプロジェクト単位の設定ファイルを作ったはいいものの、このままでは Git でレポジトリを管理している場合はこのファイルが add されてしまいます。

そこで、Git でグローバルに無視してもらうように設定します。Git のグローバルな設定は、グローバルなイグノアファイルを作って、それを global config で指定します。

~/.config/git/config
[core]
  excludeFile = ~/.config/git/ignore
~/.config/git/ignore
.vim/
Last updated on September 25, 2022