dein.vimでのプラグイン管理でColorschemeの設定でハマったときのちょっとしたメモ。
Vim(Neovim)の設定を変更したあとの起動時に毎回Colorschemeの読み込みでhookエラーが出ていた。
Vimの背景色もNONE
に設定してiTerm2で設定しているアルファが適用されるようにしている。
気がついたら出るようになってたので、最初はまったく心当たりがなく「なんのこっちゃ???」と思った。
しかし、設定を変更する度にエラーが出たりするのはなんだか気持ちが悪いなぁと思ったので、見直してみる。
設定変更前
" init.vim " dein Scripts =================================================== let s:config_dir = expand('$XDG_CONFIG_HOME/nvim') set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim if dein#load_state('~/.cache/dein') call dein#begin('~/.cache/dein') call dein#add('~/.cache/dein/repos/github.com/Shougo/dein.vim') call dein#load_toml(s:config_dir . '/dein.toml', {'lazy': 0}) call dein#load_toml(s:config_dir . '/dein_lazy.toml', {'lazy': 1}) call dein#end() call dein#save_state() endif if dein#check_install() call dein#install() endif
# dein.toml [[plugins]] repo = 'cocopon/iceberg.vim' hook_add = ''' set termguicolors autocmd VimEnter * nested colorscheme iceberg autocmd colorscheme * highlight Normal ctermbg=NONE guibg=NONE autocmd colorscheme * highlight NonText ctermbg=NONE guibg=NONE autocmd colorscheme * highlight Folded ctermbg=NONE guibg=NONE autocmd colorscheme * highlight EndOfBuffer ctermbg=NONE guibg=NONE syntax on '''
結論から言うと、設定を書く順番に問題があったっぽい。
- dein.vimの公式ドキュメントのQAに「colorschemeはdein#end()の後ろに書いてね」と書いてある
- dein.vim Docs
- ので、
hook_add
の中にVimEnter
(Vimの起動作業完了後)にColorschemeを読み込みようにしてみたけど、起動後に読み込んでも反映されない。(次回起動したときは反映されるけど) - VimEnter
- もしかしたら
hook_source
ワンチャンあるのかな…
- Vimの背景透過設定(
autocmd colorscheme * highlight...
のあたり)はColorschemeより前にロードして、Colorschemeがロード時にNONE
として上書きするようにしないとだめっぽい。(言われてみて「そりゃそうか」ってなった)
設定変更後
" init.vim " Default setting ================================================ filetype on filetype plugin on filetype indent on ... autocmd colorscheme * highlight Normal ctermbg=NONE guibg=NONE autocmd colorscheme * highlight NonText ctermbg=NONE guibg=NONE autocmd colorscheme * highlight Folded ctermbg=NONE guibg=NONE autocmd colorscheme * highlight EndOfBuffer ctermbg=NONE guibg=NONE ... " dein Scripts =================================================== let s:config_dir = expand('$XDG_CONFIG_HOME/nvim') set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim if dein#load_state('~/.cache/dein') call dein#begin('~/.cache/dein') call dein#add('~/.cache/dein/repos/github.com/Shougo/dein.vim') call dein#load_toml(s:config_dir . '/dein.toml', {'lazy': 0}) call dein#load_toml(s:config_dir . '/dein_lazy.toml', {'lazy': 1}) call dein#end() call dein#save_state() endif if dein#check_install() call dein#install() endif syntax enable colorscheme iceberg
# dein.toml [[plugins]] repo = 'cocopon/iceberg.vim'
Colorschemeに関連する設定があっちこっちに散らばっている印象がする。
dein-hooks
の使い方やVimscriptをもうちょっと習熟すればワンチャンあるかなって思う。
Vimの背景透過設定はColorschemeを変えても使うものなので、「これはこれでいいか」と思い直した。
またそのうち盆栽業の時間を見つけて整理したい。(盆栽業、心が落ち着く作業なのよ)