見出し画像

vimでカラースキームファイルを切り替えるとE185が表示される問題

序文

E185のエラーに2時間ぐらいハマったので、原因まではわかってないけど解決した方法を共有しておきます。

解決方法としては、「.vimrcファイル」上で「syntax enable」の記述を「colorscheme」よりも前にするです。もしかしたら上記はvim界隈では常識なのでWebに情報が転がってないのかもしれないですが、情報が少なくて困りました。

本文

icebergは素晴らしいテーマなんですが、私的にはVisualモードの選択範囲が薄すぎたので、色を「236」→「237」に変更して、ファイル名も「customized_iceberg.vim」に変更しました。

それに合わせる形で「.vimrcファイル」も以下の様に変更

" 見た目系
" テーマ適用
colorscheme customized_iceberg
" シンタックスハイライトの有効化
syntax enable
" 行番号を表示
set number

したところ、vim起動時に以下のエラーが表示される様になってしまいました。

% vim .vimrc
/usr/local/Cellar/vim/8.2.0400/share/vim/vim82/syntax/synload.vim の処理中にエラーが検出されました:
行   19:
E185: カラースキーム 'iceberg' が見つかりません
続けるにはENTERを押すかコマンドを入力してください

起動した後は問題なく表示されるんですが、エラーが出るのは気持ちが悪い。という事で解決方法を検索しました。ちなみに以下がエラーが出ているファイルの19行目辺り。

17 " Set the default highlighting colors.  Use a color scheme if specified.
18 if exists("colors_name")
19  exe "colors " . colors_name
20 else
21  runtime! syntax/syncolor.vim
22 endif

エラーを無視する記述を入れれば良いやん?とか、使ってるプラグラインで情報がキャッシュされてるからそれを再作成するんやとか。色々情報はありましたがどれも私が求めている答えではなく。最後に行き着いたのが以下のGoogle Groupでのやりとりです。

この人もプラグインは使ってるんだけど、「.vimrcファイル」で「syntax」の記述を変更すると解決したらしい。確かに、エラーは「syntax/synload.vimファイル」で起こっているので、起動時に読み込まれる「.vimrcファイル」の記述順は大事なのかもしれない。この人の正常に動いた「.vimrcファイル」をgithubでみると「syntax」は「colorscheme」よりも上に記載があるので、私のファイルも併せてみました。

" 見た目系
" シンタックスハイライトの有効化
syntax enable
" テーマ適用
colorscheme customized_iceberg
" 行番号を表示
set number

そして、エラーは解決しましたとさ。

原因

原因はわからん。すっごい適当に言うと起動時に「colorscheme」が読み込まれると、「synload.vim」が読み込まれる、ただし「synload.vim」が読み込む環境変数「colors_name」はどっかにキャッシュされていて、古い情報のまま更新されないからエラーが出ている。「syntax」を先に書く事で環境変数「colors_name」が更新されてエラーが出なくなった。とかな気がする。

今後やりたい事

(ターミナル)
・複数画面対応
(vim)
・プラグイン導入
・ステータスラインのカスタマイズ
・補完系のプラグインの導入

今回更新分


この記事が気に入ったらサポートをしてみませんか?