Software Design 2020年8月号を見ると Vim と Visual Studio Code の比較記事が載ってたので購入した。そこで今更ながら itchyny/lightline.vimについて知ったのでインストールしてみた。
普通ならそれで終わる話だが、私の場合、上手く行かない…。以下は全て Vim — KaoriYa1でのGVimでの話。
NeoSolarizedの罠
まず色が付かない。ハッハッハ、 README.mdに
If the statusline is not coloured like
と丁寧にあるだろ、ちゃんと読め。と言われるだろうが、システム変数にTERM=xterm-256color
追加して
if !has('gui_running')
set t_Co=256
endif
をやっても駄目である。あれこれやった結果。colorscheme NeoSolarized
だとそうなってしまう。colorscheme solarized
だと色が付く。WindowsだけでUbuntuのNeovimだと起きない。
‘colorscheme’: ‘solarized_dark’の罠
良し!色が付いた。じゃあ、今自分が使ってるのは、colorscheme solarized
の dark だからstatusline
も solarized dark にしよう。
let g:lightline = {
\ 'colorscheme': 'solarized dark',
\ }
lightline.vim: Could not load colorscheme solarized dark.
ははん、solarized_dark
とアンダースコアなんだな。
lightline.vim: Could not load colorscheme solarized_dark.
ああ、どうして!
dark
は不要で、&background
の値で自動で切り替えてくれるようになったのだった…
Fix solarized themes colors by ericbn · Pull Request #175 · itchyny/lightline.vim · GitHub
_gvimrcという罠
じゃあ、
let g:lightline = {
\ 'colorscheme': 'solarized',
\ }
で設定すれば良いのか!と _gvimrc に記述するも、statusline はデフォルトのままである。
のとおりcolorscheme solarized
の前でg:lightline
を定義しても、駄目なのである。
結果、 _vimrc でやらないと機能しない。なので _vimrc でg:lightline
を定義する。すると色が変わった!lightのままで…あれ?
GVIMでカラースキーム「solarized」のdarkが反映されませんでした · Issue #82 · itchyny/lightline.vim · GitHub
という問題が挙がっているが、結局これは
solarized_darkを使って下さい。
ということで終わっている。
順番としては
- _vimrc
- lightline.vim\autoload\lightline\colorscheme\solarized.vim
- _gvimrc
で読み込まれている。
厄介なことに _vimrc でset background=dark
しても solarized.vim での lightline#colorscheme#background()
は light のままなのである。
if lightline#colorscheme#background() ==# 'light'
let [ s:base03, s:base3 ] = [ s:base3, s:base03 ]
let [ s:base02, s:base2 ] = [ s:base2, s:base02 ]
let [ s:base01, s:base1 ] = [ s:base1, s:base01 ]
let [ s:base00, s:base0 ] = [ s:base0, s:base00 ]
endif
を削除すれば目的は逹せられるが、せめて _vimrc _gvimrc 内の編集だけで片付けたい。なので、
- _vimrc では
g:lightline
を定義しない。 - _gvimrc で
g:lightline
を定義する。 - _gvimrc で
call lightline#init()
する。
let g:lightline = {
\ 'colorscheme': 'solarized',
\ }
set background=dark
colorscheme solarized
call lightline#init()
という力技で成し遂げた。これだと、 _gvimrc で定義したとおり動いてくれる。しかし、一度でも _vimrc でlet g:lightline
すると、 _gvimrc でcall lightline#init()
しても、再設定してくれない。
こんなに頑張らんでも
- GitHub - powerline/powerline: Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome and Qtile.
- GitHub - vim-airline/vim-airline: lean & mean status/tabline for vim that’s light as air
使えばいいじゃんと思わなくもないけど…しかし気になったのは、WindowsでVimを使う人はかなり少なく、殆どのVimmerはMacVimなりNeovim使ってるのだろうか。
-
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jan 6 2020 01:10:51)
MS-Windows 64 ビット GUI/コンソール 版
適用済パッチ: 1-87 ↩︎