【一人 vimrc advent calendar 2017】:set でオプションの値を設定する方法いろいろ【17日目】

一人 vimrc advent calendar 2017 17日目の記事になります。
今回は :set にまつわるお話。

:set でオプションの値を設定する方法いろいろ

さて、通常 Vim のオプションは :set コマンドを使用して任意のオプションに対して設定を行います。

" オプションに対して値を設定したり
set history=3000

" オプションを有効にしたり
set incsearch

" no を付けることでオプションを無効にしたり
set noexpandtab

また、以下のようにオプションを扱うこともできます。

" ? でオプションの値を表示する
set history?

" 末尾に ! を付けることで設定をトグルする
set number!
" inv{option} でもOK
" set invnumber

" オプションを既定値に戻す
set undolevels&

" 全てのオプションを既定値にする
set all&

" ターミナルオプション以外の全てのオプションを表示する
set all

上記のような設定はコマンドラインから設定して使うことが多いと思います。
ちなみに = の横にはスペースを入れることはできません。

" 以下の設定は無効
set history = 1000

vimrc を使い始めた頃は結構ハマりました。

変数の値をオプションに設定する

次のようにオプションに対して任意の変数の値を設定することはできません。

let s:backupdir = "~.cache/vimbackup"
" Error
set backupdir=s:backupdir

このような場合は let &{option} とすることで任意のオプションに対して変数の値を設定することができます。

let s:backupdir = "~.cache/vimbackup"
let &backupdir  = s:backupdir

また、&{option} でそのオプションの値を取得することもできます。

" 変数に代入したり
let s:backupdir = &backupdir
" 出力したり
echo &backupdir

こんな感じで動的にオプションの値を変更したい場合などに利用することが出来ると思います。

まとめ

  • :set ではオプションの値を設定する以外の使い道もある
  • :set {option}?コマンドラインでオプションの値を確認する時に便利
  • :set hoge = foo のように = の横にスペースを入れることはできない


このようにいろいろなオプションの設定の仕方を覚えておくと意外なところで利用できるかもしれません。