neovim: カラースキームを矢継ぎ早に試す方法(:colorschemeでTab補完を繰り返す) by Claude + ChatGPT

Q1. Neovim の init.lua で背景色を設定するには?

背景色の設定には、以下のような方法があります。

背景テーマ(dark / light)の指定

vim.o.background = "dark"  -- または "light"

背景色を直接指定する方法

vim.api.nvim_set_hl(0, "Normal", { bg = "#1e1e2e" })

カラースキーム適用後に背景色を変更

vim.cmd.colorscheme("tokyonight")
vim.api.nvim_set_hl(0, "Normal", { bg = "#1a1b26" })

すべての背景を透明にしたい場合

for _, group in ipairs({ "Normal", "NormalNC", "NormalFloat", "EndOfBuffer" }) do
  vim.api.nvim_set_hl(0, group, { bg = "none" })
end

Q2. Neovim にインストールされているカラースキームの一覧を見るには?

次のいずれかの方法で確認できます。

  • コマンドラインで :colorscheme と入力し、Tab キーを押します。
  • 以下のコマンドでも確認できます。
:echo getcompletion('', 'color')

Lua で書く場合は次のようになります。

print(vim.inspect(vim.fn.getcompletion('', 'color')))

Q3. カラースキームを次々と試すには?

方法1: コマンドライン補完で試す

:colorscheme <Tab>

Tab キーを押すことで順番に切り替わります。

方法2: Lua のループで順番に切り替える

for _, cs in ipairs(vim.fn.getcompletion('', 'color')) do
  vim.cmd.colorscheme(cs)
  vim.fn.input("Next? (Enter)")
end

Enter を押すたびに次のカラースキームに切り替わります。

方法3: Telescope を使う

Telescope.nvim を導入している場合は以下のようにして一覧から選べます。

vim.keymap.set('n', '<leader>cs', ':Telescope colorscheme<CR>')

方法4: ランダムで切り替える関数

function RandomColorscheme()
  local schemes = vim.fn.getcompletion('', 'color')
  local choice = schemes[math.random(#schemes)]
  vim.cmd.colorscheme(choice)
  print("Colorscheme: " .. choice)
end

vim.api.nvim_set_keymap('n', '<leader>rc', ':lua RandomColorscheme()<CR>', { noremap = true, silent = true })

Q4. 人気のカラースキームにはどのようなものがありますか?

以下のようなものがあります(プラグインとして導入する必要があります)。

  • gruvbox
  • tokyonight
  • catppuccin
  • onedark
  • nord
  • rose-pine
  • solarized

たとえば tokyonight を導入する場合は次のように記述します。

{
  "folke/tokyonight.nvim",
  lazy = false,
  priority = 1000,
  config = function()
    vim.cmd("colorscheme tokyonight")
  end
}

(2025年7月12日)