2017年11月24日金曜日

Vim/Neovimの設定で注意したい事まとめ

Vim/Neovimの設定を見直していて、結構地雷を踏んでいた事に気が付きました。 踏む地雷は人それぞれとも思うのですが、自分自身が再び地雷を踏まないように、 ハマった事のある~/.vimrcや~/.config/nvim/init.vimの設定の地雷をまとめてみました。

set paste
コピペが大好きな私は常にset pasteモードになっていればさぞ便利だろうと考えていた時期もありました。 しかしこの設定を行うと、deoplete.nvimのような補完プラグインの動作が変わる他、 tcommentのような自動入力系のプラグイン、それらに関連するような設定が機能しなくなります。 これに気付かずにかなり長い時間を無駄にした事があるので、要注意設定の1つ。

set t_Co=256
vimの色調を256色に設定するオプションです。 vimをターミナルで実行する場合、ターミナルのTERM変数からterm変数→t_Co変数を決定する仕組みになっているようです。 本来であれば ~/.bashrc などで export TERM='xterm-256color' を設定すればこの設定は必要ないはずだけど、 わざとターミナルの色調を落としているような場合は設定する必要がある。


set mouse=a
2019-12-22: 昔バグることが多かった設定でしたが、最近は問題がなくなったので、記述を削除しました。 最近はハマるポイントも減ってきて、完成度が高まってます。


set foldmethod=syntax
プログラミング言語のsyntaxを利用してコードを折り畳んでくれる便利機能ですが、これを設定すると全体の動作が非常に重く、もっさりになります。 様々なページで解決策を紹介されていますが、以下のような設定が私のおすすめです。
" ---------- もっさり対策
" ----- 共通
call dein#add('Konfekt/FastFold')
let g:fastfold_savehook = 1
let g:fastfold_fold_command_suffixes =  ['x','X','a','A','o','O','c','C']
let g:fastfold_fold_movement_commands = [']z', '[z', 'zj', 'zk']

" 再描画の方法を変更して高速化
set ttyfast  " これは要確認かも
set lazyredraw

" 挿入モード時にsyntaxを解除して高速化
augroup foldmethod-syntax
  autocmd! 
  autocmd InsertEnter * if &l:foldmethod ==# 'syntax'
  \                   |   setlocal foldmethod=manual
  \                   | endif
  autocmd InsertLeave * if &l:foldmethod ==# 'manual'
  \                   |   setlocal foldmethod=syntax
  \                   | endif
augroup END

" syntaxを探索する行数/列数を限定する事で高速化
set synmaxcol=256
syntax sync minlines=256

" ----- vim-ruby/vim-ruby
autocmd FileType ruby setlocal foldmethod=syntax
autocmd FileType ruby setlocal foldlevel=0
autocmd FileType ruby setlocal foldnestmax=1
" foldmethod=syntaxの後に記述する必要あり
let g:ruby_fold = 1
let g:ruby_foldable_groups = 'def'  " 処理を減らして軽く
プログラミング言語毎にも色々設定しないといけないので面倒ですが、このような設定をするとかなりストレスが軽減されるはずです。 これでも耐えられない場合は、foldmethodを他の方式に変えたほうが良いと思います。

call dein#add('lambdalisue/vim-pyenv')
Vim/NeovimでのPython利用が一般的になってきてから、Pythonの指定が結構重要になってきています。 Pythonはpyenvで管理している人が多いと思いますが、pyenvに頼りきった環境ではPythonのパスをプラグインが見つけられない事があります。 私がこの問題に直面したのはValloric/YouCompleteMeで、インストールは正しいのに以下のエラーが止まりませんでした。
The ycmd server SHUT DOWN (restart with ':YcmRestartServer'). YCM core library not detected; you need to compile YCM before using it. Follow the instructions in the documentation.
ようはインストールしたはずのものがpyenv上にあるため見つからないという状況になっていました。 これはlambdalisue/vim-pyenvを入れる事で解決できましたが、プラグインのバグではないので気付くのに結構時間が掛かりました。 anyanvの利用時にはこのような問題が発生し得る事を覚えておくとトラブルシューティングが楽になるかも。


Neovimはバージョンにも注意 (2018/06)

設定とは関係ありませんが、0.2.1〜0.2.2をインストールすると文字化けで編集が困難になりました。 エディタが死ぬと辛いので、このバグが起きない0.2.0を野良ビルドして入れたほうが良いかも。 ちなみに0.3.0ではこのバグは直っていました。

他にも何かハマりそうなポイントが見つかったら追加していこうと思います。

0 件のコメント: