読者です 読者をやめる 読者になる 読者になる

座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

vimrcに書いた「set history=50」が無視される問題

vimで入力コマンドの履歴数を増やすために、vimrcに set history=50 と書いていて も、なぜか無視されて 20 になってしまうことがある。

経験的に? vimrcの最後のほうに移したり、gvimであればgvimrcに書いておけば問題なく なることが多かったので、特に気にせずそうしていたが、設定ファイルを整理していて その不自然さが気になってきたので調べてみた。

vim-jpのissuesの議論のなかに回答 があった。

:set nocompatible すると、'history' が Vim の規定値である 20 に設定されるため、 設定した瞬間にコマンドラインの履歴が 20 まで削られます。

なるほど、確かに僕はfudistさんのサイト で配布されている設定ファイルの下の方にプラグイン関連の設定を追記していて、その なかにset nocompatible が含まれていた。

"----------------------------------------
" NeoBundle の設定 (NeoBundle以外の設定をここへ書かないこと)
"----------------------------------------
" neobundle
set nocompatible               " Be iMproved
filetype off                   " Required!

if has('vim_starting')
    set runtimepath+=$MY_VIMRUNTIME/bundle/neobundle.vim/
endif

call neobundle#rc(expand($MY_VIMRUNTIME . '/bundle/'))

filetype plugin indent on     " Required!

" Installation check.
if neobundle#exists_not_installed_bundles()
    echomsg 'Not installed bundles : ' .
                \ string(neobundle#get_not_installed_bundle_names())
    echomsg 'Please execute ":NeoBundleInstall" command.'
    "finish
endif

neobundle.vimを使うために、コピペしてきたコードのなかに含まれている。

上記のコードをvimrcのなかの上のほうへ移動して (set history=50 がある行よりも 上へ) 解決した。ただ、set nocompatible の影響範囲は今もよくわかっていないので、 今後も同じような問題にぶつかることがあるかもしれない。

広告を非表示にする