🎨
Neovimで最後に選択したカラースキームを次回起動時に復元する方法
はじめに
Neovimで気分や作業内容に応じてカラースキームを変更することがあります。しかし、デフォルトでは次回起動時に設定ファイルで指定したカラースキームに戻ってしまいます。
本記事では、最後に選択したカラースキームを自動的に保存し、次回起動時に復元する方法を紹介します。
実装方法
1. カラースキーム変更時の自動保存を設定
カラースキームが変更されたときに自動的に保存する autocmd を設定します。
この設定は、init.lua や lua/config/autocmds.lua などの適切な場所に配置してください。
-- カラースキーム変更時に自動保存
vim.api.nvim_create_autocmd('ColorScheme', {
desc = 'Save colorscheme selection for next session',
group = vim.api.nvim_create_augroup('colorscheme-persist', { clear = true }),
callback = function()
local colorscheme = vim.g.colors_name
if colorscheme then
local cache_dir = vim.fn.stdpath 'cache'
local colorscheme_file = cache_dir .. '/colorscheme.txt'
local file = io.open(colorscheme_file, 'w')
if file then
file:write(colorscheme)
file:close()
end
end
end,
})
2. 起動時にカラースキームを復元
起動時に保存されたカラースキームを読み込む処理を追加します。
-- 保存されたカラースキームを読み込む
local function load_colorscheme()
local cache_dir = vim.fn.stdpath 'cache'
local colorscheme_file = cache_dir .. '/colorscheme.txt'
local file = io.open(colorscheme_file, 'r')
if file then
local saved_colorscheme = file:read '*a'
file:close()
-- 改行を除去
saved_colorscheme = saved_colorscheme:gsub('\n', '')
-- カラースキームを適用(エラーハンドリング付き)
local ok = pcall(vim.cmd.colorscheme, saved_colorscheme)
if not ok then
-- 失敗したらデフォルトのカラースキームを使用
vim.cmd.colorscheme 'default'
end
else
-- ファイルがなければデフォルトを使用
vim.cmd.colorscheme 'default'
end
end
-- Neovim起動時に実行
load_colorscheme()
仕組みの解説
保存処理
-
ColorSchemeイベントが発生したとき(カラースキームが変更されたとき)にコールバックが実行される -
vim.g.colors_nameから現在のカラースキーム名を取得 -
vim.fn.stdpath('cache')でキャッシュディレクトリのパスを取得 -
colorscheme.txtファイルにカラースキーム名を書き込み
読み込み処理
- Neovim起動時に
load_colorscheme()関数が実行される - キャッシュディレクトリから
colorscheme.txtを読み込み - ファイルが存在すれば保存されたカラースキームを適用
- ファイルが存在しない、または読み込みに失敗した場合はデフォルトのカラースキームを適用
カラースキームの切り替え方法
Neovimにはデフォルトでいくつかのカラースキームが含まれています。
コマンドで切り替え:
:colorscheme blue
:colorscheme darkblue
:colorscheme desert
:colorscheme habamax
:colorscheme lunaperche
:colorscheme slate
Telescopeがインストールされている場合は、より便利に切り替えられる:
:Telescope colorscheme
変更したカラースキームは自動的に保存され、次回起動時に復元されます。
まとめ
この方法を使うことで、Neovimで最後に選択したカラースキームを次回起動時に自動的に復元できます。
ポイント:
-
ColorSchemeイベントで自動保存 - キャッシュディレクトリにテキストファイルで保存
- 起動時に保存されたカラースキームを読み込み
- エラーハンドリングでフォールバック設定
これにより、気分に応じてカラースキームを変更して、次回起動時にそのカラースキームが維持されるようになります。
Discussion