neovimのCursorの色が変わらないと思ったらターミナルのカラースキームのせいだった話

に公開

タイトルの通りです。
vimで現在の文字位置の背景色を変えるためにhighlightコマンドでCursorの背景色を変更しようとしましたが、 変更できませんでした。

原因はターミナルの背景色でした。

経緯

解決策が気になる方は飛ばしてください。
vimで現在の文字位置の背景色を変えるコマンドと言えば、higlightコマンドがあります。

現在の文字をハイライトするためにはCursorのハイライトグループの背景色を変えればよいと思い、以下のように変更しました。

highlight Cursor guibg=#ff0000 guifg=#ffffff ctermbg=red ctermfg=white

init.luaの場合は以下です。

vim.cmd("highlight Cursor guibg=#ff0000 guifg=#ffffff ctermbg=red ctermfg=white")

そして、コマンドモードで背景色を確認します。

:hi Cursor

無事、反映されていそうです。
hi Cursor result

しかし、実際にはCursorの背景色は赤にならず、目立ちにくい色のままです。

difficult to see

ターミナルのカラースキームの変更

結論、weztermの色の背景色の設定が原因でした。

config.color_scheme = 'neobones_light'

これをコメントアウトするとハイライトが乗るようになりました。
よく見たら、現在のカーソル位置とターミナルのカーソル位置の色が同じです。

before

before cursor in term 01

difficult to see

after

after cursor in term 01

after cursor in editor 02

代替案

ただ、vim上で解決したい気持ちもあります。
代替案として、ハイライトを現在の行と列の両方につけると、交差する部分がハイライトになります。

set cursorLine
set cursorcolumn

init.luaの場合は以下です。

vim.cmd("set cursorLine")
vim.cmd("set cursorcolumn")

参考

GitHubで編集を提案

Discussion