Hack #5: Vim のオプションの値
Posted at 2009/05/03ツイート
- オプションの形式
-
Vim には非常に多くのオプションがあり、その値を変更することで Vim の挙動を変更することができます。オプションは
:set
コマンドを使うことで設定、及び設定値の確認が可能です。オプションは取る値の形式によって boolean、number、string の 3 つに分類できます。 - 全ての形式で共通の操作
-
- オプションの値を表示するには、
-
:set {option}?
- とします。ここで {option} にはオプション名が入ります。また、詳細な情報を表示するためのコマンド
:verbose
と組み合わせて -
:verbose set {option}?
- とすることができます。こうすると、このオプションが最後にどのファイルによって設定されたのかが表示されます。オプションの値が意図せず変更されてしまった場合に、変更した箇所を特定するのに便利です。
- オプションの値を初期値に戻すには
-
:set {option}&
- とします。ただし、
'compatible'
オプションの値、すなわち、Vim が Vi 互換モードで動いている場合とそうでない場合とでは、オプションの初期値が異なります。明示的に Vi もしくは Vim の初期値に設定するには以下のようにします。 -
:set {option}&vi
:set {option}&vim :set
コマンドは、スペースで区切ることで複数のオプションを 1 度に設定、もしくは表示することができます。以下のようにすることで、設定と表示を同時に行うこともできます。:set number! number?
- オプションの設定方法
-
- boolean
- on か off の値を取るオプションです。
'number'
や'ignorecase'
などがこの形式です。- on にするには
-
:set {option}
- off にするには
-
:set no{option}
- とします。また、値を交互に切り替える(トグルする)には、
-
:set {option}!
- もしくは
-
:set inv{option}
- とします。
- number
- 整数値を取るオプションです。
'textwidth'
や'history'
などがこの形式です。-
:set {option}={value}
- で値を設定します。このとき、=の前後に空白を入れてはいけません。オプションによっては設定できる値に制限があるものもあります。
- また、
-
:set {option}+={value}
:set {option}^={value}
:set {option}-={value} - とすることでそれぞれオプション値を加算、乗算、減算することができます。
-
- string
-
文字列を取るオプションです。string 形式のオプションはいくつかのパターンに分けられます。
この分類は筆者独自のもので help に直接書いてあるわけではありませんが、これらのうちのいずれかのタイプに当てはまります。
- 任意の文字列
- 基本的に好きな文字列を設定できます。
- 例:
'statusline'
'filetype'
- アルファベットのフラグ
- アルファベットの各文字に意味を持たせて、それらをフラグとして組み合わせて設定します。
- 例:
'cpoptions'
'guioptions'
- カンマ区切りのリスト
- 複数の値をカンマ区切りで指定するパターンです。値自体にカンマを含めたい場合は、バックスラッシュでエスケープします。
- 例:
'runtimepath'
'complete'
- 定められたいずれかの値
- 値として入る文字列の候補が決まっていて、それら以外の文字列はエラーになるか無視されます。
- 例:
'background'
'ambiwidth'
-
- 値を設定するには、number 形式のオプションと同じように
-
:set {option}={value}
- とします。
-
:set {option}+={value}
:set {option}^={value}
:set {option}-={value} - も使用できますが意味が異なり、それぞれ、末尾に文字列を追加、先頭に文字列を追加、指定文字列が存在した場合にその文字列を削除、となります。この挙動は、値としてアルファベットのフラグを設定するオプションで便利です。
-
また、カンマ区切りのリストを指定するオプションの場合、自動的に項目単位で追加や削除が行われ、カンマは必要に応じて追加、削除されます。ただし、複数の値を同時に削除しようとするとうまくいかないので注意してください。これは指定された値を1つの値と認識するからです。以下の例は、
'complete'
内にu,i が連続で入っていない限りうまく動きません。 -
:set complete-=u,i
- string 形式のオプションには一部制限のあるものを除き基本的に任意の文字列を設定できますが、’ ‘(半角スペース) ‘|’ ‘”‘ の 3 文字は別の意味を持つので、バックスラッシュでエスケープする必要があります。
もどる
blog comments powered by Disqus