この記事は Vim 8.0 Advent Calendarの 8 日目の記事です。
今回は新しく Vim に追加された defaults.vim という機構について解説します。
背景
Vim には今でも多くの新機能が追加され便利になっていっていますが、一方で互換性も重視しています。
中には、シンタックスハイライトなど明らかに便利であるにも関わらず、デフォルトでは有効になっていない機能があります。
新しく Vim を使い始めるユーザーにとって、互換性が理由で便利な機能がすぐに使えないことはあまり嬉しくはないでしょう。
そこで追加されたのが defaults.vim です。あくまで Vim 自体のデフォルト値は変えずに、ユーザーに便利な設定を提供します。
defaults.vim の読み込み
ユーザーの vimrc
ファイルが存在しない場合、$VIMRUNTIME/defaults.vim
ファイルは自動で読み込まれます。
読み込みたくない場合は、vimrc を読み込まない場合と同様に vim -u NONE
や vim -u NORC
などを指定して Vim を起動します。
また、システム管理者が defaults.vim
を読み込ませたくない場合、システムワイドの vimrc にて let g:skip_defaults_vim = 1
を行うことで defaults.vim
の設定は適用されなくなります。
なお、この defaults.vim
の追加によって、Vim は通常の起動でコンパチブルモードで起動することがなくなりました。このことは非互換の変更として help にも記載されています。
defaults.vim の内容
例えば以下のような設定があります。
- Vi 互換モードをオフにする (
set nocompatible
) - filetype の検出やプラグインなどを有効にする
- シンタックスハイライトを有効にする
'nrformats'
オプションの値からoctal
を取り除く- 間違えて
<C-u>
したときに undo できるようにする :DiffOrig
Ex コマンドの定義 (:help :DiffOrig
)
詳細は実際にファイルの中身を見てみてください。:e $VIMRUNTIME/defaults.vim
で開けます。
defaults.vim から始める vimrc
defaults.vim
は最初に使い始める vimrc の叩き台としても機能します。
新しく自分用の vimrc を書き始めたいと思ったとき、defaults.vim
の内容を継承したい場合は、defaults.vim
ファイルを vimrc
ファイルにコピーするか、もしくは vimrc
の先頭に以下のように書きます。
source $VIMRUNTIME/defaults.vim
ここから、自分の気に入らない部分をちょっとずつ手を加えていくとよいでしょう。
逆に言うと、これらを行わずにユーザーの vimrc
ファイルを作成すると、defaults.vim
が読み込まれなくなることから、挙動が変わってしまうことに注意してください。