🎲
mini.nvimで起動のたびに異なるbase16 colorschemeを使用する
先日の記事で、mini.nvimを使用したbase16 colorschemeの生成法を紹介しました。
また、既に多くのbase16 colorschemeが公開されています。
好みの配色がいっぱいあって選べない…!という方もいるのではないでしょうか。
頑張って咲いたcolorschemeはどれもきれいだから仕方ないね。
筆者は一つを選ぶのが難しかったので、いくつか好みのものをピックアップして、それをランダムで使用しています。
以下のコードを設定ファイルに記載(または、適当なファイルに保存して:luafile
でロード)してください。
-- define base16 colorscheme palettes
local palettes = {
-- from https://base16-project.github.io/base16-gallery/
ayu_mirage = {
base00 = "#171B24", base01 = "#1F2430",
base02 = "#242936", base03 = "#707A8C",
base04 = "#8A9199", base05 = "#CCCAC2",
base06 = "#D9D7CE", base07 = "#F3F4F5",
base08 = "#F28779", base09 = "#FFAD66",
base0A = "#FFD173", base0B = "#D5FF80",
base0C = "#95E6CB", base0D = "#5CCFE6",
base0E = "#D4BFFF", base0F = "#F29E74",
},
catppuccin = {
base00 = "#1E1E28", base01 = "#1A1826",
base02 = "#302D41", base03 = "#575268",
base04 = "#6E6C7C", base05 = "#D7DAE0",
base06 = "#F5E0DC", base07 = "#C9CBFF",
base08 = "#F28FAD", base09 = "#F8BD96",
base0A = "#FAE3B0", base0B = "#ABE9B3",
base0C = "#B5E8E0", base0D = "#96CDFB",
base0E = "#DDB6F2", base0F = "#F2CDCD",
},
-- from mini.nvim (:h mini.nvim-color-schemes)
minischeme = require('mini.base16').mini_palette('#112641', '#e2e98f', 75),
minicyan = require('mini.base16').mini_palette('#0A2A2A', '#D0D0D0', 50),
-- user original
kawarimidoll = require('mini.base16').mini_palette('#1f1d24', '#8fecd9', 75),
}
local scheme_names = vim.tbl_keys(palettes)
-- :MiniScheme [scheme_name]
-- use colorscheme at random when command argument is empty
vim.api.nvim_create_user_command(
'MiniScheme',
function(opts)
local key = opts.fargs[1]
if vim.tbl_contains(scheme_names, key) then
vim.g.scheme_name = key
else
math.randomseed(os.time())
vim.g.scheme_name = scheme_names[math.random(#scheme_names)]
end
require('mini.base16').setup({
palette = palettes[vim.g.scheme_name],
use_cterm = true,
})
end,
{
nargs = '?',
complete = function() return scheme_names end
}
)
-- run :MiniScheme by VimEnter event
vim.api.nvim_create_autocmd({ 'VimEnter' }, {
pattern = '*',
command = 'MiniScheme',
once = true
})
表示したい配色情報を保存するpalettes
テーブルと、それを画面に反映するMiniScheme
コマンドを定義しています。
現在表示しているcolorschemeの名前はグローバル変数g:scheme_name
に保存されます。
補完も出るよ
MiniScheme
は引数無しで呼び出すとpalettes
からランダムで選択するようになっています。
これをVimEnter
イベントで無引数で呼び出すことにより、起動のたびに「好みの配色のどれか」が表示されます。
良さそうな配色を見つけたらpalettes
に随時追加していくことが可能です。
(あまり増やしすぎると各配色が選択される確率が低くなってしまいますが…。)
いろんな配色を使いたい方はお試しください。
Discussion