Vim/Neovimにスタート画面を追加する(vim-startify / snacks.nvim)
Vim/Neovimを何もファイル指定せずに起動すると、無題のバッファが開くだけで、作業を始めるには自分でファイルを探す一手間がかかります。前回開いていたファイルやセッションを開くことのほうが圧倒的に多いなら、起動直後にその候補を一覧表示してくれるスタート画面プラグインを入れておくと、この一手間が省けます。
目次(9項目)
Vim向け:vim-startify
クラシックなVimで長く使われているスタート画面プラグインです。
Plug 'mhinz/vim-startify'
導入するだけで、最近開いたファイルやブックマークが番号付きで一覧表示され、数字キーひとつで開けます。よく使う機能は次のとおりです。
| キー | 動作 |
|---|---|
| 数字 | 表示されている行のファイルを開く |
| e | 空のバッファを開く |
| s/v/t | 選択したファイルを分割/垂直分割/タブで開く |
| q | スタート画面を閉じる |
作業中にもう一度スタート画面を見たくなったら:Startifyで呼び出せます。セッション管理コマンド(:SSave/:SLoad)も備えており、プロジェクトごとの作業状態を保存・復元するのにも使えます。
1つ注意点があります。このリポジトリは更新が止まっていて、確認した時点での最終コミットは2023年9月でした。Vim script製で外部に依存していないぶん、動かなくなる可能性は低いのですが、新しい機能が足されることも期待できません。今から入れるなら「枯れたものを使う」という判断で選ぶことになります。
Neovim向け:snacks.nvimのダッシュボード
Neovimでlazy.nvimベースの構成を組んでいる場合、snacks.nvimのダッシュボード機能を使うのが今の主流になっています。
-- lazy.nvimでの例
{
'folke/snacks.nvim',
opts = {
dashboard = { enabled = true },
},
},
最近使ったファイル・プロジェクト一覧・セッション復元などをセクションとして自由に組み合わせられる、宣言的な設定が特徴です。telescope.nvimやoil.nvimのような、すでに導入済みのプラグインとの連携もしやすくなっています。同系統の選択肢としてalpha-nvimやdashboard-nvimもあり、いずれも活発に使われています。
ヘッダーをカスタマイズする
両プラグインとも、起動画面の上部に表示するテキスト(ヘッダー)をカスタマイズできます。vim-startifyの場合は配列で1行ずつ指定します。
let g:startify_custom_header = [
\ '============================',
\ ' Vim - Vi IMproved',
\ '============================',
\]
アスキーアートを入れているユーザーも多く、自分だけのスタート画面を作る楽しみもあります。
起動を遅くしたくない場合
スタート画面プラグインは起動時に一覧を構築するため、ファイル履歴が膨大になると起動がわずかに遅くなることがあります。表示件数を制限する設定(vim-startifyならg:startify_files_number)を絞っておくと、快適さを保ちながら使えます。
Neovim環境をlazy.nvim構成に移行したタイミングでvim-startifyからsnacks.nvimのダッシュボードに切り替えました。最近使ったファイルとプロジェクト一覧が同じ画面に並ぶようになり、起動直後にどのプロジェクトへ戻るかを選ぶ動作が以前よりスムーズになりました。
スタート画面が出ない条件
導入したのに表示されない、という相談で多いのは、起動の仕方が条件を満たしていない場合です。これらのプラグインは「引数なしで起動し、バッファが空のとき」だけスタート画面を出します。
ファイル名を指定して起動したときや、パイプで標準入力を受け取ったとき、git commit からエディタとして呼ばれたときは出ません。仕様どおりの動きなので、設定を疑う前に起動の仕方を確かめてください。
もう1つ、セッション復元のプラグインと併用しているとそちらが先にバッファを開いてしまい、スタート画面の条件から外れることがあります。どちらを優先するかを決めて、片方の自動起動を切るのが確実です。
履歴が出ないとき
最近使ったファイルの一覧は、Vimが持っている oldfiles から作られています。ここが空だと、スタート画面にも何も並びません。
:oldfiles " 履歴を確認する
:set viminfo? " Vim:履歴の保存設定
:set shada? " Neovim:同上
履歴の保存を無効にしていたり、保存先のディレクトリが無かったりすると空のままです。共有サーバーで viminfo を切っている場合もあるので、まずここを確かめます。履歴からファイルを開く方法はoldfilesの記事にまとめています。
そもそも要るかを考える
スタート画面の主な役目は、最近のファイルとセッションへの入口です。曖昧検索のプラグインを入れているなら、起動直後にそのキーを押すほうが速いことも多くあります。
プラグインを増やさずに済ませたいなら、:e#(直前のファイル)や '0(前回終了時のカーソル位置)を覚えておくだけでも足ります。起動時間を1ミリ秒でも削りたい人にとっては、この選択のほうが目的に合います。
まとめ
起動直後の「ファイルを探す一手間」は、スタート画面プラグインで解消できます。クラシックなVimならvim-startify、Neovimのモダンな構成ならsnacks.nvimのダッシュボードが現在の定番選択肢になっています。起動時に開くファイルを絞り込みたいなら引数リスト、前回の画面配置ごと戻したいならセッションのほうが目的に合います。