とくに vim で不満があるわけではない。ただなんとなく Neovim へ移行しようと考え始めた。 以前にも Neovim へ移行しようとしたとき・・・それは Neovim なら VSCode のように AI にコード支援してもらえる(vim だとそれができないのか?などは不明)らしいので・・・ しかし、そのときは nvim をターミナルで起動して色の問題でつまずき放置していた。
そもそもその後 Claude Code に移行したので VSCode でコード支援してもらうこともなくなった。
原因は macOS ターミナルが 256色しか対応していないけど、 True Color がどうの、という話だったが、その時点であきらめた。 コード書きたいのであってエディタの設定で頭を悩ましたくはない。
今回は Claude Opus 4.8 に聞いたらすぐ解決したので、メモを残す。
version 0.12 以後では パッケージマネージャを自分で入れる必要がないらしい。 手前の環境を確認したところ 0.11 だったので、まずはアップグレードする。
brew update
brew upgrade neovim
バージョンを確認:
$ nvim --version
NVIM v0.12.3
Build type: Release
LuaJIT 2.1.1781602682
0.12 以降のバージョンが入った。
なお v0.12 であらかじめ入っているパッケージマネージャは vim.pack らしい。 よく聞くのは lazy.nvim だが、 vim.pack の方は 意図的にミニマル な作りになっているらしく、 こっちの方が自分向きだと思う。 なんかいい感じにやってくれるけど、なんでうまくいったかわからない、というのは気持ち悪い。
~/.config/nvim/init.lua に設定を書く:
vim.opt.termguicolors = false
-- Basic settings
vim.opt.number = true -- Show line numbers
vim.opt.relativenumber = true -- show relative line numbers
vim.opt.tabstop = 4 -- 4 spaces for tabs
vim.opt.shiftwidth = 4 -- 4 spaces for indent
vim.opt.expandtab = true -- Use spaces instead of tabs
vim.opt.smartindent = true -- Smart indenting
vim.opt.wrap = false -- Disable line wrapping
vim.opt.swapfile = false -- disable swap files.
vim.opt.backup = false -- disable backup files.
vim.opt.undofile = true -- Enables persistent undo
vim.opt.incsearch = true -- Incremental search
-- vim.opt.termguicolors = true -- enables truecolor support.
vim.opt.scrolloff = 8 -- minimal number of screen lines to keep above and below the cursor.
vim.opt.signcolumn = "yes" -- always show signcolumn.
-- vim.opt.colorcolumn = "80" -- vertical line at 80 characters.
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- プラグインを宣言(無ければ自動で取得される)
vim.pack.add({
{ src = "https://github.com/mason-org/mason.nvim" },
{ src = "https://github.com/mason-org/mason-lspconfig.nvim" },
{ src = "https://github.com/neovim/nvim-lspconfig" },
{ src = "https://github.com/AlexandrosAlexiou/kotlin.nvim" },
{ src = "https://github.com/stevearc/oil.nvim" },
{ src = "https://github.com/folke/trouble.nvim" },
})
require("mason").setup()
require("kotlin").setup({})
macOS のターミナルと nvim で色の問題が生じるのはこの設定らしい:
vim.opt.termguicolors = false -- true にすると問題が生じる
false に設定しておけばとりあえず問題ないことが判明。 そもそも、過去につまずいたときに書いた -- Basic settigns あたりの設定は、既存の ~/.vimrc を Gemini に見せて教えてもらったものを何も確認せずにコピペして使っていた。 その中にこの設定があり true にしていたのが問題なだけであった。
この辺りの設定は Kotlin の LSP の設定:
{ src = "https://github.com/AlexandrosAlexiou/kotlin.nvim" },
{ src = "https://github.com/stevearc/oil.nvim" },
{ src = "https://github.com/folke/trouble.nvim" },
これで kt や kts の拡張子のときにいい感じにシンタックスハイライトしてくれるようになった。
Neovim:

Vim:

Neovim の方がデフォルト状態のカラーリングがいい感じ。
まあ、markdown で日本語を書くときは emacs を普段使うからあまり関係ないけど。