Vim Advent Calendar 2013:コマンドラインウィンドウで表示される履歴の行数を減らす

この記事は Vim Advent Calendar 2013 72日目の記事になります。


わたしも history の値は大きいので気をつけたいですね。
さて、history の値を大きくしている場合、他にも問題が出てきます。
それはコマンドラインウィンドウの行数です。
コマンドラインウィンドウでは history に設定された数の履歴がバッファに書き込まれます。
この時に途中でシンタックスが正しくないコマンドの履歴が書き込まれている場合、以降のハイライトが崩れてしまいます。
history の値が大きい場合このシンタックスが正しくない履歴がずーっと残っていて困ることが割りとあります。
また、neocomplete.vim で補完を行う際もバッファの量が大きいと補完に時間がかかってしまうという問題もあります。
今回はこの辺を解消してみようと思います。

[解決]

わたしはコマンドラインで補完するときに便利なので history の値を大きくしています。
しかし、コマンドラインウィンドウでは全ての履歴が表示されている必要はありません。
そこで次のようにしてコマンドラインウィンドウを開いた時に自動的にバッファに書き込まれている履歴を削除するようにしてみました。

augroup cmdwin
    autocmd!
    " コマンドラインウィンドウの末尾の20行を除いて全て削除する
    autocmd CmdwinEnter * :silent! 1,$-20 delete _ | call cursor("$", 1)
augroup END


上記のように設定しておけば最後の20個の履歴のみがコマンドラインウィンドウに表示されます。
(最初はもうちょっとごちゃごちゃしていたんですが id:thinca さんにスッキリとした書き方を教えてもらいました。