options.txt For Vim バージョン 9.1. Last change: 2024 Nov 06
VIMリファレンスマニュアル by Bram Moolenaar
オプション options
1. オプションの設定 set-option
2. オプションの自動設定 auto-setting
3. オプションの要約 option-summary
オプションの概要については、quickref.txt option-list を参照。
Vimには、特別な働きをさせるための多くの内部変数とスイッチがある。それらのオプ
ションには3種類ある。
boolean toggle
切替 boolean オプション オンかオフかのどちらかの値をとる
数値 number オプション 数値の値を取る
文字列 string オプション 文字列の値を取る
{訳注: このヘルプの中で多く出てくる語句で、分かりにくいものを説明する。
- ローカルな:
あるバッファまたはウィンドウにのみ適用されるような、という意味。
- ローカルオプション:
あるバッファまたはウィンドウ内の設定のみを変え、その他のバッファまたは
ウィンドウの設定に影響しないようなオプション。
- ウィンドウについてローカルな:
あるウィンドウにのみ適用されるような、という意味。バッファについてロー
カルな、も同様な意味を持つ。
- グローバルな:
Vim全体に適用されるような、または、Vim全体で共通の値を使うような、とい
う意味。
上の4項目については option-summary も参照。
- non-printable, unprintable:
文字が画面に表示可能なフォントに対応していないこと。具体的には <CTRL>
などを押しながら入力した文字や <ESC> が例である。主に制御に利用される。
訳語で、さらに相応しいものがあればご提案を下さい。}
==============================================================================
1. オプションの設定 set-option E764
:se :set
:se[t][!] 既定値と違う値のオプションを全て表示する。
[!] がある場合、それぞれのオプションは独立した行に表示
される。
:se[t][!] all ターミナルオプション以外の全てのオプションを表示する。
[!] がある場合、それぞれのオプションは独立した行に表示
される。
:se[t] termcap ターミナルオプションを全て表示する。Note GUIバージョン
では、キーコードは表示されないので注意。なぜなら、キー
コードは内部的に生成され、変更が不可能だからだ。それに、
GUIバージョンでターミナルコードを変更するのは便利とは
言えない...
オプションの形式は t_AB である。terminal-options を
参照。
:se[t]! termcap 同様だが、複数列を使用しない。
E518 E519
:se[t] {option}? {option} の値を表示する。
:se[t] {option} 切替オプション: セット、すなわちオンに切り替える。
数値オプション: 値を表示する。
文字列オプション: 値を表示する。
:se[t] no{option} 切替オプション: リセット、すなわちオフに切り替える。
:set-! :set-inv
:se[t] {option}! または
:se[t] inv{option} 切替オプション: オンとオフを切り替える。
:set-default :set-& :set-&vi :set-&vim
:se[t] {option}& オプションを既定値に設定する。オプション 'compatible'
のその時点の値によって違うかもしれない。
:se[t] {option}&vi オプションをViの既定値に設定する。
:se[t] {option}&vim オプションをVimの既定値に設定する。
:se[t] all& 全てのオプションを既定値に設定する。ただし以下のオプ
ションについては変更しない。
t_ で始まる端末用のオプション全部
'columns'
'cryptmethod'
'encoding'
'key'
'lines'
'term'
'ttymouse'
'ttytype'
警告: これにはたくさんの副作用があるだろう。
:set-args :set= E487 E521
:se[t] {option}={value} または
:se[t] {option}:{value}
数値および文字列オプションの値を {value} に設定する。
数値オプションの値は、10進数、(0x を頭に付けて) 16進数、
または ('0' か '0o' を頭に付けて) 8進数で指定できる。
オプション 'wildchar' で指定された文字 (既定では
<Tab>、オプション 'compatible' がオンならば CTRL-E)
を打ち込むと、古い値を挿入できる。固定された構文と名前
を持つ多くの文字列オプションは、既知の値の補完もサポー
トしている。cmdline-completion と
complete-set-option を参照。
{option} と '=' の間には空白を入れることができる。それ
らは無視される。'=' と {value} の間に空白を入れてはい
けない。
{value} 内での空白や '\' の使用に関しては、
option-backslash を参照 {訳注: 文書先頭も参照}。
:se[t] {option}+={value} :set+=
数値オプションに対しては {value} だけその値を増す。文
字列オプションに対しては後ろに {value} を追加する。オ
プションがコンマ区切りのリストのときは、値が空でない限
り、元の値と {value} の間にコンマが付け加えられる。
オプションがフラグのリストであるときは、冗長なフラグは
取り除かれる。すでに入っているフラグを加えようとしたと
きは、そのオプションの値は変わらない。
上の :set-args も参照。
:se[t] {option}^={value} :set^=
数値オプションに対してはその値を {value} 倍する。文字
列オプションに対しては前に {value} を追加する。オプショ
ンがコンマ区切りのリストのときは、{value} と元の値の間
にコンマが付け加えられる。
上の :set-args も参照。
:se[t] {option}-={value} :set-=
数値オプションに対しては {value} だけその値を減らす。
文字列オプションに対しては {value} を (それが含まれて
いたら) 取り除く。
そのとき {value} が含まれていなくても、警告やエラーは
出ない。オプションがコンマ区切りのリストであり、取り除
くオプションが唯一の値でない限り、間のコンマも削除され
る。
オプションがフラグのリストであるときは、{value} は値の
中に現れるままに、正確に指定しなければならない。問題が
起こるのを避けるために、フラグを取り除くときは1個ずつ
指定すること。
コンマで区切られたリストやフラグのリストにある個々の値
は、'wildchar' をタイプすることで挿入できる。
complete-set-option を参照のこと。
上の :set-args も参照。
1回のコマンド ":set" に対し、複数の {option} を引数に指定できる。例:
以降は無視される。
:set-verbose
オプション 'verbose' の値が非0 なら、オプションの値を表示するとき、同時に、そ
のオプションが最後に設定されたのはどこであったかも分かる。例:
Last set from modeline line 1
cindent
Last set from /usr/local/share/vim/vim60/ftplugin/c.vim line 30
これは特定のオプション名が指定されたときのみ機能する。コマンド ":set all" や、
引数のないコマンド ":verbose" ではメッセージが現れない。
オプションが手動で設定されていると、メッセージ "Last set" は現れない。
オプションが関数やユーザーコマンド、自動コマンド autocommand の実行中に設定さ
れたときは、それらが定義されているスクリプト名が報告される。
Note 'compatible' を設定すると副作用として他のオプションも設定されることがあ
る。
以下のような特殊なメッセージがある:
Last set from modeline line 1
モードライン modeline の中でオプションが設定された。
Last set from --cmd argument
コマンドライン引数 --cmd または + によりオプションが設定され
た。
Last set from -c argument
コマンドライン引数 -c, +, -S, -q によりオプションが設定
された。
Last set from environment variable
環境変数、$VIMINIT、$GVIMINIT、$EXINIT によりオプションが設定
された。
Last set from error handler
オプションを評価中にエラーが発生し、クリアされた。
{+eval 機能付きでコンパイルされたときのみ有効}
:set-termcap E522
Termcap オプションを設定するには、{option} に "t_xx" の形式を使ってもよい。こ
れは termcap による値を上書きする。これはマッピングの中で利用することもできる。
"xx" の部分が特別な文字を含むときは、<t_xx> の形式を使うこと:
を出力するなら、次のようにすること:
マッピングの利点は、どんなときにも機能することである。
キーコードを定義することができる。例:
プを定義できる:
キーコードが設定されていない場合、それは存在しないのと同じである。その値を取得
しようとするとエラーになる:
セキュリティ上の理由から、t_xx 形式のオプションを modeline または sandbox
内で設定することはできない。
コマンド ":set" によるリスト表示の外見は、Viとは違う。長い文字列オプションはリ
ストの終わりに現れる。オプションの数も極めて多い。コマンド "set all" による表
示は、画面に収まらないだろう。そうしたとき、Vimは「継続」プロンプト
more-prompt を出す。
option-backslash
文字列オプションの値に空白を含めるには、空白の前に '\' を置く必要がある。値に
'\' を含めるには、2個繰り返す。結果的には、オプションの値の中の '\' の数は半分
になる (端数は切り捨て)。
オプション 'path', 'cdpath', および 'tags' では、オプションがコンマかスペース
で区切られるバージョン 3.0 との互換性のために、スペースの前にバックスラッシュ
を 3 つ置く必要がある。
'backupdir' や 'tags' のようなコンマで区切られたオプションでは、コンマを 2 つ
のバックスラッシュでエスケープする必要があるが、'makeprg' のようなコンマで区切
られていないオプションでは必要ない。
:let や literal-string を使ってオプションを設定する場合は、バックスラッシュ
を 1 つ少なくする必要がある。
例をいくつか挙げる:
文字 "|" によって、コマンド ":set" を後に続くコマンドと分けることができる。文
字列オプションの値に "|" を含めるには、代わりに "\|" を使うこと。次の例ではオ
プション 'titlestring' の値を "hi|there" に設定している:
"there" に設定している:
また、旧来のスクリプトではダブルクォート文字はコメントを開始する。オプションの
値に '"' を含めるには '\"' と書くこと。次の例は 'titlestring' を 'hi "there"'
に設定する:
Vim9 script ではもっとシンプルで、コメントは '#' 文字で始まり、かつ前に空白
文字があるときだけである。バックスラッシュが必要になる頻度は少なくなる:
Win32では、ファイル名の中の '\' は大抵は取り除かれない。正確に言うと、値にファ
イル名を取るオプション (環境変数が展開されるもの) では、通常のファイル名に使わ
れる文字の前の '\' は取り除かれない。しかし、特別な文字 (空白、'\' そのもの、
コンマ等) の前の '\' は、上で説明した通りの働きをする。
オプションの値が "\\" で始まるときは、特別な状態になる:
'\' の数は半分になっている。つまり、'\' をそのまま保ちたいときでも、半分にした
いときでも、どちらがよいか指定できることが分かる。3番目の結果は、おそらく希望
通りのものではないだろう。このやり方は避けること。
add-option-flags remove-option-flags
E539 E550 E551 E552
値がフラグのリストからなるオプションもある。そういったオプションにフラグを追加
したいとき、既存の値を変更したくないならば、こうすること:
Note フラグは1個ずつ追加したり取り除いたりするよう注意。オプション
'guioptions' が "ab" という値であるとき、"set guioptions-=ba" は機能しない。な
ぜなら、"ba" という文字列は現れていないからである。
:set_env expand-env expand-environment-var
特定の文字列オプションでは環境変数が展開される。'$' とそれに続く環境変数名が、
その値に置き換えられる (その環境変数が存在するとき)。環境変数が存在しないとき、
'$' とそれに続く変数名は変更を受けない。識別子に使えない non-id 文字 (英字、数
字、'_' 以外) なら、どれでも環境変数名の後に続けることができる。識別子に使えな
い文字とそれに続く文字は、環境変数の値の後ろにそのまま追加される。例:
opt+=値" でオプションに文字列を追加したりするときには、環境変数の展開が行われ
てからそうした操作がなされる。
ローカルオプションの扱い local-options
Note: 以下は global-local オプションにも適用される。
いくつかのオプションは、1つのウィンドウや1つのバッファのみに適用される。それぞ
れのウィンドウやバッファは、そうしたオプションの独自のコピーを保持しているため、
独自の値を持つことができる。これにより、あるウィンドウ内では 'list' オプション
をオンにするが、他のウィンドウではオフにする、ということが可能になる。またオプ
ション 'shiftwidth' を、あるバッファ内では 3 にし、他では 4 にすることもできる。
以降では、特定の状況下でそれらのローカルオプションがどうなるかを説明する。実際
には、それらを全て知る必要はない。なぜなら、Vimはおそらくユーザーが予想する通
りにオプションの値を使うからである。残念ながら、ユーザーの予想通りに働くのは、
いくらか複雑なことである...
ウィンドウを分割すると、ローカルオプションは新しいウィンドウにコピーされて引き
継がれる。そのため、ウィンドウを分割した直後には、2つのウィンドウの内容は同じ
ように見える。
新しいバッファを編集するとき、そのバッファのローカルオプションは初期化されなけ
ればならない。その以前のカレントバッファのローカルオプションは、そのバッファの
みに適用すべきものかもしれないので、新しいバッファには適用されない。その代わり、
バッファについてローカルなオプションにはそれぞれグローバルな値があり、新しいバッ
ファにはそれが適用される。コマンド ":set" によって、ローカルな値とグローバルな
値の両方が変更される。コマンド "setlocal" はローカルな値のみを変更するので、そ
れで指定した値は新しいバッファには適用されない。
すでに編集されているバッファを編集するときは、最後に閉じられたウィンドウ内のロ
ーカルオプションが再び使われる。このバッファがこのウィンドウ内ですでに編集され
ていたなら、そのときの値が再び用いられる。そうでなければ、そのバッファが最後に
編集されて閉じられたウィンドウ内の値が用いられる。
特定のバッファの種類についてウィンドウ内のローカルオプションを設定することも可
能である。同じウィンドウ内で別のバッファを編集するときは、ウィンドウについてロー
カルなオプションを使い続けたくはないだろう。そのためVimはウィンドウについてロー
カルなオプションのグローバルな値を記憶しており、別のバッファの編集時にはそれを
用いる。ウィンドウはそれぞれ、それらの値の独自のコピーを持っている。そのため、
それらのオプションはウィンドウについてはローカルであるが、そのウィンドウ内の全
てのバッファについてグローバルである。それらを用いて、次のようなことが可能であ
る:
":set list" により、グローバルな値もオンになったからである。
":set nolist" がグローバルな値をオフにしたが、コマンド ":setlocal list" はバッ
ファ "一つ目" についてローカルな値をオンにしただけで、":e 二つ目" ではグローバ
ルな値が適用されるからである。 Note 次にこうすると:
ウィンドウについてローカルなオプションはバッファ毎に記憶される。バッファがロー
ドされていなくても同様に記憶されている。ただし、バッファが破棄 (:bwipe) され
たときは設定は消える。
特別なローカルウィンドウオプション local-noglobal
以下のローカルウィンドウオプションは、新しいウィンドウが作成されたときにコピー
されないため、若干異なる動作をする:
オプション 理由
'previewwindow' 1つしか存在できない
'scroll' 既存のウィンドウに固有のもの
'winfixbuf' 既存のウィンドウに固有のもの
'winfixheight' 既存のウィンドウに固有のもの
'winfixwidth' 既存のウィンドウに固有のもの
特別なローカルバッファオプション
以下のローカルバッファオプションは、新しいバッファが作成されるときにコピーされ
ないため、若干異なる動作をする:
オプション 理由
'filetype' 自動コマンドによって明示的に設定される
'syntax' 自動コマンドによって明示的に設定される
'bufhidden' special-buffers である
'buftype' special-buffers である
'readonly' 自動的に検出される
'modified' 自動的に検出される
:setl :setlocal
:setl[ocal][!] ... コマンド ":set" と似ているが、カレントバッファ/ウィン
ドウについてローカルな値のみを設定する。全てのオプショ
ンがローカルな値を持つわけではない。オプションがローカ
ルな値を持たないときは、グローバルな値が設定される。
引数が "all" のとき: 全てのローカルオプションのローカ
ルな値を表示する。
引数がないとき: 全てのローカルオプションのローカルな値
で、既定値と異なるものを表示する。
特定のローカルオプションを表示するときは、ローカルな値
も表示する。グローバルまたはローカルな切替オプションに
対しては、グローバルな値が表示される場合には、オプショ
ン名の前に "--" が表示される。
グローバルオプションに対しては、グローバルな値が表示さ
れる (しかし、これは将来変更されるかもしれない)。
:se[t] {option}< {option} の実効値をそのグローバル値に設定する。
文字列の global-local オプションの場合、ローカル値は
削除され、グローバル値が使用されるようになる。
他のすべてのオプションの場合、グローバル値がローカル値
にコピーされる。
:setl[ocal] {option}< {option} の実効値をそのグローバル値に設定する。
数値および真偽値の global-local オプションの場合、
ローカル値が削除され、グローバル値が使用される。
文字列の global-local オプションを含む他のすべてのオ
プションでは、グローバル値がローカル値にコピーされる。
Note global-local オプションの挙動は、文字列ベースのオプションと数値ベースの
オプションでは若干異なることに注意。
:setg :setglobal
:setg[lobal][!] ... コマンド ":set" と似ているが、ローカルオプションのグロー
バルな値のみを設定し、ローカルな値は変更しない。
オプションの値を表示するときは、グローバルな値が表示さ
れる。
引数が "all" のとき: 全てのローカルオプションのグロー
バルな値を表示する。
引数がないとき: 全てのローカルオプションのグローバルな
値で、既定値と異なるものを表示する。
バッファ/ウィンドウについてローカルなオプションに対して:
コマンド グローバルな値 ローカルな値 条件
:set option=value set set
:setlocal option=value - set
:setglobal option=value set -
:set option? - display ローカル値設定あり
:set option? display - ローカル値設定なし
:setlocal option? - display
:setglobal option? display -
ローカルな値を持つグローバルオプション global-local
オプションがグローバルであるというのは、一つの値を全てのバッファとウィンドウに
用いるような場合である。いくつかのグローバルオプションでは、ローカルな別の値を
持てると便利である。ローカルな値は、コマンド ":setlocal" で設定できる。すると
コマンド ":setlocal" を実行したバッファとウィンドウではローカルな値が用いられ
るが、他のバッファでは引き続きグローバルな値が用いられる。
例えば、あなたは2つのウィンドウを開き、両方でC言語のソースファイルを編集してい
るとする。グローバルなオプション 'makeprg' は両方に適用される。そこでウィンド
ウの片方で
オプション 'makeprg' を設定する必要はない。
しかし、新しいウィンドウでPerlのソースファイルの編集を始めると、'makeprg' に別
の値を設定したくなる。しかしCソースに適用された値を変えたくはない。そんなとき
には次のようにする:
は、次のように "<" フラグを使う必要がある:
ルな値にコピーされるが、それはグローバルな値を使うようにするのとは少し違うこと
に注意 (これは後でグローバルな値が変更されたときに問題になる。{訳注: グローバ
ルな値が変更されても、"<" でコピーした値までは変更されない。あくまでもローカル
な値だから})。次を使うこともできる:
わち、次と同じことをする:
ある。そうなるとグローバルオプションに対する ":setlocal" の動作が変わるかもし
れない。
option-value-function
いくつかのオプション ('completefunc', 'findfunc', 'imactivatefunc',
'imstatusfunc', 'omnifunc', 'operatorfunc', 'quickfixtextfunc', 'tagfunc'
および 'thesaurusfunc') は関数名もしくは関数への参照もしくはラムダ関数を設定す
る。ラムダを使う場合は内部名へ変換される、例えば "<lambda>123"。
例:
スクリプトローカル関数を設定:
きる:
関数への参照の変数を用いて設定:
ラムダ式を用いて設定:
ラムダ式を含む変数を用いて設定:
Vim9 script において、コンパイル済み関数内では、ラムダを使うことができるが、ク
ロージャは動作しない。なぜなら、関数が定義された位置のコンテキストを持たずに呼
ばれることになるためである。
ファイルタイプの設定
:setf[iletype] [FALLBACK] {filetype} :setf :setfiletype
オプション 'filetype' に対して {filetype} を設定する。
ただし autocommand の中 (入れ子になっているときは、外
側も含めて) でまだ実行されていないときのみ有効である。
これは以下のコマンドの略である:
'filetype' が2度設定されて別の設定や構文ファイルが読み
込まれることがないようにしている。
任意の引数 FALLBACK が存在すると、後の :setfiletype コ
マンドは 'filetype' を上書きする。これはファイルタイプ
の決定を正確に推測するために使われる。did_filetype()
はこのコマンドの後では false を返すだろう。
option-window optwin
:bro[wse] se[t] :set-browse :browse-set :opt :options
:opt[ions] 全てのオプションを表示したり設定するためのウィンドウを
開く。
オプションは機能ごとにまとめられている。
ここではオプションの短い説明が読める。その上で <CR> を
打ち込むと、そのオプションについてのヘルプウィンドウが
開き、詳しい説明が読める。
表示されている値を修正した後に "set" 行の上で <CR> を
打ち込むと、新しい値を設定できる。ウィンドウやバッファ
固有のオプションについては、変更した値は最後に使用した
ウィンドウに適用される。そのウィンドウがヘルプウィンド
ウだったときは、変更した値はヘルプウィンドウの (オプショ
ンウィンドウを抜かして) 1つ下のウィンドウに適用される。
{+eval 機能付きでコンパイルされたときのみ有効}
$HOME
"~" は "$HOME" と同様に扱われるが、こちらは値の先頭にあるか、空白かコンマの後
にあるときのみ認識される。
Unix系のシステムでは "~user" も使える。これは "user" というユーザーのホームディ
レクトリに置き換えられる。例:
Unix系のシステムでは "${HOME}" という形式も使える。ここで {} の間には識別子に
使えない文字 {訳注: 上を参照} が入ってもよい。 Note これをコマンド "gf" のため
に使いたいなら、文字 '{' と '}' をオプション 'isfname' に追加する必要がある。
NOTE: 環境変数と "~/" の展開はコマンド ":set" のときのみ行われる。":let" でオ
プションに値を代入するときは展開されない。
$HOME-windows
MS-Windows では、$HOME 環境変数が定義されていない場合は Vim の起動時に
$HOMEDRIVE$HOMEPATH という値で定義される。
もしも $HOMEDRIVE が設定されていなければ $USERPROFILE が使われる。
この展開された値は環境変数にはエクスポートされない。これは外部コマンドを動作し
ているときに問題となる:
$HOME に空ではない何らかの文字列を設定すると、それはサブプロセスにエクスポート
されるだろう。
Note 展開されるオプションの値の長さ制限に注意。システムごとに異なるが、大抵は
256文字や1024文字等の長さである {訳注: これは半角の場合で、全角では半分}。
:fix :fixdel
:fix[del] ターミナルオプション 't_kD' {訳注: デリートキー} の値
を設定する。
't_kb' が のとき 't_kD' は
CTRL-? CTRL-H
CTRL-?以外 CTRL-?
(CTRL-? は8進数で 0o177、16進数で 0x7f)
ターミナルのデリートキーのキーコードが違っているが、バッ
クスペースのキーコードは正しいときは、次のコマンドをファ
イル .vimrc に加えればよい:
効である。
バックスペースのキーコードが違っていたら、以下のように
する:
(実際に「^」「V」などのキーを押さないこと)。"termname"
にはユーザーの使うターミナル名を当てはめる。
<Delete> キーが奇妙なキーコード列 (CTRL-? でも CTRL-H
でもない) を送るときは、コマンド ":fixdel" ではなく以
下の方法を使う:
(実際に「^」「V」などのキーを押さないこと)。"termname"
にはあなたの使うターミナルの種類を当てはめる。
Linux-backspace
Note Linuxについての注意: 既定ではバックスペースキーは
CTRL-? を送るが、これは違っている。これを修正するには、
ファイル rc.local に次の行を加える:
NetBSD-backspace
Note NetBSDについての注意: バックスペースキーが正しい
キーコードを送らないとき、これを試すこと:
==============================================================================
2. オプションの自動設定 auto-setting
コマンド ":set" によるオプションの設定の他に、3通りの方法で、1つまたは複数のファ
イルに自動的にオプションを設定できる。
1. Vimを起動したとき、様々な場所から初期化設定を読み込ませることができる。
initialization を参照。多くの設定は編集セッション全てに適用されるが、いく
つかはVimを起動したディレクトリによって異なる。初期化設定ファイルはコマンド
:mkvimrc, :mkview, :mksession で生成できる。
2. 新しいファイルの編集を始めたとき、自動的に実行されるコマンドがある。
これを使うと、特定のパターンにマッチするファイルに対してオプションを設定し
たり、様々なことが可能である。autocommand を参照。
3. 新しいファイルの編集を始めたときオプション 'modeline' がオンなら、ファイル
の先頭と末尾の数行ずつがモードラインとして読み込まれる。それをここで説明す
る。
modeline vim: vi: ex: E520
モードラインには2つの形式がある。1つ目の形式は次の通りである。
[text{white}]{vi:|vim:|ex:}[white]{options}
[text{white}] 空または、1個以上の余白 (<Space> または <Tab>) が続く
任意のテキスト; "ex:" は常に少なくとも1個の空白が必要
{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列
[white] 空白、なくても良い
{options} オプション設定が、空白か ':' で区切られて並んだもので、
':' の間の部分はコマンド ":set" の引数である(空でもよい)
例:
vi:noai:sw=3 ts=6
vim: tw=77
2つ目の形式は次の通りである (Viのバージョンによってはこの形式と互換性がある)。
[text{white}]{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
[text{white}] 空または、1個以上の余白 (<Space> または <Tab>) が続く
任意のテキスト; "ex:" は常に少なくとも1個の空白が必要
{vi:|vim:|Vim:|ex:} "vi:" か "vim:" か "Vim:" か "ex:" という文字列
[white] 空白、なくても良い
se[t] "set " または "se " という文字列 (終わりの空白に注意);
"Vim" が使われているときは "set" でなければならない
{options} オプション設定が空白で区切られて並んだもので、コマンド
":set" の引数である
: コロン
[text] 任意のテキスト、なくても良い
例:
/* vim: set ai tw=75: */
/* Vim: set ai tw=75: */
{vi:|vim:|Vim:|ex:} の前には空白が必要である。これが "lex:" 等の普通の言葉を誤
認する可能性を低めている。ただし例外があり、"vi:" と "vim:" は行頭に来てもよい
(バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モードラインとは見なさ
れない ("example:" の略かもしれないから)。
モードラインの中でモードラインを無効にした場合、後続のモードラインは無視され
る。これはファイルごとにモードラインをオフにできるようにするためである。これは
行がモードラインに見えるがそうでない時に便利である。例えば "vim:" のような文字
列を含む YAML ファイルは次のように始めるとよい
# vim: nomodeline
これはモードラインの誤検出を回避する。モードラインが無効化後も、同じ行の後続の
オプションがあれば依然として評価される(通常は何もないだろうが)。
modeline-local
オプションは ":setlocal" を使った時のように設定される。つまり設定した値は、そ
のバッファとそれを開いているウィンドウにのみ適用される。モードラインからグロー
バルオプションを設定することは不可能ではないが、普通そういうことはしない。2つ
のウィンドウを開いていて、それぞれのファイルが同じグローバルオプションを違う値
に設定しようとしたときは、後に開かれたウィンドウが優先される。
既に読み込まれているファイルを開くときは、モードラインからはウィンドウローカル
なオプションだけが設定される。つまり、ファイルを開いた後に手動でバッファローカ
ルなオプションを変更したら、そのバッファを別なウィンドウで開いてもそのオプショ
ンは変更されないが、ウィンドウローカルなオプションは変更される。
modeline-version
モードラインの内容が、Vimのバージョンによって使用可能だったり不可能だったりす
る場合には、"vim:" または "Vim:" のところでバージョンを指定できる。
vim{vers}: バージョン {vers} 以降 (そのバージョンを含む)
vim<{vers}: バージョン {vers} より前
vim={vers}: バージョン {vers} のみ
vim>{vers}: バージョン {vers} より後 (そのバージョンを含まない)
{vers} に 700 を指定するとVim 7.0を表す (メジャー・バージョンナンバーの100倍足
すマイナー・バージョンナンバー)。
例えば、Vim 7.0でのみモードラインを使うにはこうする:
/* vim700: set foldmethod=marker */
Vim 7.2より新しいバージョンでのみモードラインを使うにはこうする:
/* vim>702: set cole=2: */
"vim" と ":" の間に空白があってはならない。
モードラインを探す行数はオプション 'modelines' で設定できる。オプション
'modeline' がオフであるかオプション 'modelines' の値が 0 だと、モードラインを
探さない。
Note 1番目の形式では、行全体がオプション指定に使われることに注意。そのため次の
ようにすると、行末の "*/" のためにエラーメッセージが現れる。
/* vi:ts=4: */
その代わり、こうすればよい。
/* vi:set ts=4: */
エラーが発見されると、その行の残りは無視される。
コマンド "set" の引数に ':' を含めたいときは、その前に '\' を置くこと。':' の
前の '\' は取り除かれる。例:
/* vi:set fillchars=stl\:^,vert\:\|: */
これはオプション 'fillchars' を "stl:^,vert:\|" に変更する。':' の前に '\' が
置かれたとき、取り除かれるのは1個だけである。だからオプションの値に "\:" を含
めたいなら "\\:" を指定すること。
E992
安全上の理由から、コマンド "set" 以外は使用できない (誰かがテキストファイルで
「トロイの木馬」を作るかもしれないから)。また、すべてのオプションを設定できる
わけではない。一部のオプションではフラグが設定されているため、値が使用されると
sandbox が有効になる。'modelineexpr' が設定されている場合、一部のオプション
はモードラインからしか設定できない。(デフォルトはオフ)
しかしそれでもモードラインが問題を引き起こす可能性はわずかに残る。例えば、悪意
のある誰かが 'textwidth' を5にすると、ファイルの全ての行が予期せず折り返されて
しまう。そのため、信用できないファイルを編集する前にはモードラインを無効にする
こと。例えばmail ftpluginはそれを行っている。
ヒント: ファイルを読み込みときにオプション設定以外を行いたいなら、ファイル内の
特定の文字列を調べる autocommand を定義すればよい。例:
==============================================================================
3. オプションの要約 option-summary
以下のリストでは、全てのオプションが、正確な名前と (あれば) 略名で示されている。
どちらの形を使ってもよい。
この文書内では、切替オプションを「オンに」するというのは ":set オプション" を
実行することを表す。切り替えオプションを「オフに」するというのは
":set noオプション" を実行することを表す。
いくつかのオプションには、既定値が2種類あるものがある: 1つ目は "Vim default"
つまりVimの既定値で、オプション 'compatible' がオフになっているときに使われる。
2つ目は "Vi default" つまりViの既定値で、オプション 'compatible' がオンになっ
ているときに使われる。
ほとんどのオプションは全てのウィンドウやバッファで共通である。さてその中には、
テキストがウィンドウ内でどのように表示されるかを定めるものもある。そういったオ
プションは、ウィンドウごとに違う値にできる。例えばオプション 'list' は、あるウィ
ンドウ内でオンにしても、同じテキストを編集している別のウィンドウ内ではオフに
することができる。すると同時に違った表示方法が使える。また、ファイルごとに特定
の値にできるオプションもある。そういったオプションは、ファイルごとまたはバッファ
ごとに違う値にできる。例えばオプション 'textwidth' は、通常のテキストファイル
には78にし、Cプログラムのファイルには0にするようにできる。
グローバル:
一つのオプションが全てのバッファやウィンドウに対して適用される
ウィンドウについてローカル:
ウィンドウがそれぞれ、そのオプションのコピーを独自に持つ
バッファについてローカル:
バッファがそれぞれ、そのオプションのコピーを独自に持つ
{訳注: 上の項目については、文書先頭も参照}
新しいウィンドウを開くとき、ウィンドウ固有のオプションには、その前にアクティブ
だったウィンドウでの値がまず使われる。バッファ固有のオプションは、オプション
'cpoptions' のフラグ 's' とフラグ 'S' によって違ってくる。フラグ 's' が含まれ
ていると (既定ではこうなっている)、新しいバッファが最初にアクティブになったと
きに、その前にアクティブだったバッファでの値がコピーされる。フラグ 'S' が含ま
れていると、バッファがアクティブになる度に値がコピーされる。これはグローバルオ
プションであるようなものである。フラグ 's' もフラグ 'S' も含まれていないときは、
バッファが作られるときに、その前にアクティブだったバッファでの値がコピーされる。
隠しオプション hidden-options
全てのオプションが全てのバージョンでサポートされているわけではない。これは有効
にされている機能とシステムにもよる。これに関しての注意は以下の波括弧の中にある。
もしあるオプションがサポートされていなくても、そのオプションへの設定はエラーに
ならず成功する。これを隠しオプションと呼ぶ。しかし隠しオプションの値は保持され
ていないため、取得することはできない。
オプション "foo" が ":set" で設定できるかどうか判定するにはこのようにする:
れているかを判定するにはこのようにする:
E355
Q_op にはオプションの短い説明付きの表があり、そこからヘルプにジャンプできる。
'aleph' 'al' aleph Aleph
'aleph' 'al' 数値 (既定値はMS-Windowsでは128、それ以外では224)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
ヘブライ語アルファベットの最初の文字を表すASCIIコード。挿入モード(オプ
ション 'hkmap' がオンのとき) と コマンドラインモード (CTRL-_ を打ち込
んだとき) の両方において、ヘブライモードのキーボード配列をマッピングす
るルーチンは、[aleph..aleph+26] の範囲のヘブライ文字を出力する。
'aleph'=128 はPCコード、'aleph'=224 は ISO 8859-8 に使われる。
rileft.txt を参照。
'allowrevins' 'ari' 'noallowrevins' 'noari'
'allowrevins' 'ari' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
挿入モードとコマンドラインモードで CTRL-_ を使用可能にする。これは既定
ではオフになっている。ユーザーが間違って SHIFT-_ ではなく CTRL-_ を打
ち込み、右から左に書いていくモードに入って抜けられなくなる事態を防ぐた
めである。オプション 'revins' を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'altkeymap' 'akm' 'noaltkeymap' 'noakm'
'altkeymap' 'akm' 切替 (既定ではオフ)
グローバル
{+farsi 機能付きでコンパイルされたときのみ有効}
このオプションはペルシア語を使うためのもので、削除された。farsi.txt
を参照。
'ambiwidth' 'ambw'
'ambiwidth' 'ambw' 文字列 (既定では "single")
グローバル
'encoding' が "utf-8" などUnicodeエンコーディングのときのみ効果がある。
East Asian Width Class Ambiguous な文字(ユーロ、登録商標記号、著作権記
号、ギリシャ文字、キリル文字など)をどう扱うかを定める。
現在のところ、設定可能な値は次の2通りである:
"single": US-ASCIIの文字と同じ幅を使う。これはほとんどのユーザー
にとって期待どおりになる。
"double": ASCII文字の2倍の幅を使う。
E834 E835
"double" は 'listchars' や 'fillchars' に指定された文字が全角幅になっ
てしまう場合は使えない。このエラーはまた setcellwidths() を呼ぶことで
も発生するかもしれない。
この値は setcellwidths() で指定された文字では無視される。
これらの文字のグリフの幅を、旧い/伝統的なCJKエンコーディングで何オク
テットを占めるかだけによって決めているCJKフォントがたくさんある。その
エンコーディングではユーロ、登録商標記号、ギリシャ文字、キリル文字は2
オクテットで表現されるので、それらのフォントはこれらの文字に「wideな」
グリフを当てている。これはテキストファイルで表を作るための罫線文字にも
あてはまる。そのためGUI版のVimにCJKフォントを使うときや、CJKフォント
を使うターミナル(エミュレータ)の中でVimを実行するとき(またはオプション
"-cjkwidth" つきで起動されたxtermの中でVimを実行するとき)にはこのオプ
ションを "double" にして、Vimが認識する幅をフォントのグリフの幅に合わ
せなければならない。CJKのMS-WindowsでもシステムのロケールがCJKロケール
のどれかに設定されている場合は多分 "double" にしなければならないだろ
う。
Unicode Standard Annex #11 (http://www.unicode.org/reports/tr11)を参照。
Vim が +termresponse 機能付きでコンパイルされ、t_u7 にカーソル位置
取得のためのエスケープシーケンスが設定されているとき、このオプションの
値は Vim の起動時に自動的に設定される。レスポンスは v:termu7resp の
中に見つけることができる。
'antialias' 'anti' 'noantialias' 'noanti'
'antialias' 'anti' 切替 (既定ではオフ)
グローバル
{VimがmacOSでGUIを有効にしてコンパイルされたときのみ有
効}
このオプションはmacOS v10.2以降の上でGUI版のVimを使うときだけ効果があ
る。これがオンであるとなめらかな(アンチエイリアスされた)フォントが使わ
れる。このフォントはある種のディスプレイ上、あるサイズでは読み易くな
る。
'guifont' が既定値(空文字列)のときこのオプションを設定すると問題が発生
することがある。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'arabic' 'arab' 'noarabic' 'noarab'
'arabic' 'arab' 切替 (既定ではオフ)
ウィンドウについてローカル
{+arabic機能付きでコンパイルされたときのみ有効}
アラビア語のテキストを編集するときにこのオプションを設定することができ
る。
このオプションを設定すると次のことが行われる:
- 'termbidi' がオンでない限り、オプション 'rightleft' をオンにする。
- 'termbidi' がオンでない限り、オプション 'arabicshape' をオンにする。
- オプション 'keymap' を "arabic" に設定する。これによって挿入モードで
CTRL-^を押すと英語とアラビア語のキーマッピングがトグルする。
- オプション 'delcombine' をオンにする。
アラビア語のテキストを編集するには 'encoding' が "utf-8" でなければな
らないことに注意。
このオプションをオフにすると次のことが行われる:
- 'rightleft' をオンにする
- 'keymap' の使用を無効にする(その値は変更しない)
'arabicshape' と 'delcombine' はオフにならない(これらはグローバルオプ
ションである)。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
arabic.txtも参照。
'arabicshape' 'arshape'
'noarabicshape' 'noarshape'
'arabicshape' 'arshape' 切替 (既定ではオン)
グローバル
{+arabic 機能付きでコンパイルされたときのみ有効}
これがオンで 'termbidi' がオフになっているとアラビア語を表示するのに必
要な文字表示補正が行われる。本質的には字形作成(shaping)が有効になる。
この用語は次の事を含む広い用語である。
a) 単語の中の位置(初期、中間、最終、孤立)によって文字を変更/変形させ
る。
b) 文字合成機能の有効化
c) ある文字の組み合わせの有効化
これが無効になっていると、表示がそれぞれの文字の本来の孤立形になる。
アラビア語は他にも設定が必要な複雑な言語である。より詳しくは
arabic.txtを参照。
NOTE: このオプションは、'compatible' がオンになるとオンになるので注意。
'autochdir' 'acd' 'noautochdir' 'noacd'
'autochdir' 'acd' 切替 (既定ではオフ)
グローバル
{Vimのコンパイル時に有効にされたときのみ有効。使用で
きるかどうかは exists("+autochdir") で確認できる}
これがオンであるとファイルを開くとき、バッファを切り替えるとき、バッファ
を削除するとき、ウィンドウを開閉するときに毎回作業ディレクトリが変更さ
れる。開かれた/選択されたファイルを含んでいるディレクトリがカレント
ディレクトリになる。
無名バッファの場合、ディレクトリもないため、そのバッファに移動してもカ
レントディレクトリは変更されない。
Note: このオプションがオンになっていると動かないプラグインがある。
'autoindent' 'ai' 'noautoindent' 'noai'
'autoindent' 'ai' 切替 (既定ではオフ)
バッファについてローカル
新しい行を開始したとき (挿入モードで <CR> を打ち込むか、コマンド "o"
や "O" を使ったとき)、新しい行のインデントを現在行と同じくする。新しい
行で <BS> か CTRL-D 以外を打ち込まずに <Esc>、CTRL-O か <CR> を打ち込
むと、その行のインデントは削除される。'cpoptions' にフラグ 'I' が入っ
ていないかぎり、カーソルを他の行に移動させても同様である。
オプション 'autoindent' がオンのときは、テキストの整形処理 (コマンド
"gq" を使ったり、挿入モードで 1行の文字数がオプション 'textwidth' で指
定した数に届いたとき) には最初の行のインデントが使われる。
オプション 'smartindent' かオプション 'cindent' がオンのときは、インデ
ントの方法は違ってくる。
オプション 'autoindent' はオプション 'paste' がセットされたらリセット
され、オプション 'paste' がリセットされたら復元される。
'autoread' 'ar' 'noautoread' 'noar'
'autoread' 'ar' 切替 (既定ではオフ)
グローバル/バッファについてローカル global-local
ファイルがVimの内部では変更されてないが、Vimの外部で変更されたことが判
明したとき、自動的に読み直す。ファイルが削除されたときにはこれは行われ
ないので、削除される前のテキストが保持される。ファイルが再度現れた場
合、それを読み込む。timestamp
このオプションがローカルな値を持つとき、再びグローバルな値を使うように
するには次のようにする:
'autoshelldir' 'asd' 'noautoshelldir' 'noasd'
'autoshelldir' 'asd' 切替 (既定ではオフ)
グローバル
オンの時、Vim は端末ウィンドウで動いているシェルのディレクトリが変更さ
れる度に、現在のワーキングディレクトリを変更する。適切な設定がされる必
要があり、シェルが pwd を変更する度に OSC 7 エスケープシーケンスを出力
しないといけない。例として、Linuxなら、あなたのシェルが bash か zsh の
場合 profile で /etc/profile.d/vte.sh を読み込むことができる。
bash の場合は、これでうまくいくはずだ (bash init ファイルに記述する):
または、zsh init ファイルに記述する:
fish init ファイルに記述する:
別の方法は terminal-autoshelldir にある。
OSC シーケンスのパースに失敗したときは E1179 になる。
'autowrite' 'aw' 'noautowrite' 'noaw'
'autowrite' 'aw' 切替 (既定ではオフ)
グローバル
コマンド :next, :rewind, :last, :first, :previous, :stop,
:suspend, :tag, :!, :make, CTRL-], CTRL-^ を実行したときや、コ
マンド :buffer, CTRL-O, CTRL-I, '{A-Z0-9}, `{A-Z0-9} の移動先が別の
ファイルのとき、ファイルが変更されているなら書き込む。
バッファが書き込まれないのは隠れバッファになったときで、例えば
'bufhidden' が "hide" に設定されていて :next が使われたとき。
Note 'autowrite' が適用されないコマンドもあることに注意。それについて
はオプション 'autowriteall' を参照。
いくつかのバッファは書き込まれない。具体的には 'buftype' が "nowrite",
"nofile", "terminal" または "prompt" の時である。
使用上の注意: 保存したくないバッファに一時的な変更を加えた場合、このオ
プションを使用するとバッファが保存されてしまう可能性がある。":file
{name}" でバッファ名を変更すると、これを回避できる場合がある。
'autowriteall' 'awa' 'noautowriteall' 'noawa'
'autowriteall' 'awa' 切替 (既定ではオフ)
グローバル
オプション 'autowrite' と似ているが、さらにコマンド ":edit", ":enew",
":quit", ":qall", ":exit", ":xit", ":recover" を実行したときや、Vimの
ウィンドウを閉じるときも、ファイルが変更されているなら保存する。このオ
プションをオンにすると、同時に 'autowrite' もオンになったような動作に
なる {訳注: このオプションは 'autowrite' の適用されるコマンド全てに適
用されるので}。
'background' 'bg'
'background' 'bg' 文字列 (既定は "dark" または "light"、下記参照)
グローバル
値が "dark" のときは、Vimは暗い背景によく合う色を使おうとする。値が
"light" のときは、Vimは明るい背景によく合う色を使おうとする。その他の
値は無効である。
Vimは使われているターミナルの種類に従って既定の値を定めるが、常に正し
いとは限らない。
このオプションを変更しても背景色は変わらない。これはただVimに背景色が
どのようなものかを伝えるだけである。背景色の変更には :hi-normal を参
照。
オプション 'background' が変更されると、Vimは既定の色設定グループをそ
の値に合わせて調整する。しかし構文強調表示に使われる色設定は変化しな
い。 g:colors_name
カラースキームが読み込まれているとき (つまり変数 "g:colors_name" が設
定されているとき) 'background' を変更するとカラースキームが再び読み込
まれる。カラースキームが 'background' に対応していればこれは適用され
る。しかしカラースキームが 'background' 自体を設定しているときは効果が
ない。必要ならば変数 "g:colors_name" を消去すること。
'background' を次のようにして既定値に戻したとき、
しい値を推測できないかもしれない。
GUIがダークテーマをサポートしている場合、'guioptions' で "d" フラグを
使用できる。'go-d' を参照。
t_RB オプションが設定されると、Vim はターミナルから背景色をリクエスト
するために使われる。もしも返された RGB の値が dark/light であり、
'background' が dark/light でなかったなら、'background' が設定されて画
面が再描画される。これは副作用があるかもしれない。問題があると疑わしき
場合は、.vimrc の t_BG を空にしよう。t_RB へのレスポンスは
v:termrbgresp の中に見つけることができる。
GUIを開始したとき、'background' の既定値は "light" である。値がファイ
ル .gvimrc で定められておらず、Vimが背景色は実際は暗いと判断したときは、
'background' は "dark" になる。しかしこれは .gvimrc が読み込まれた「後」
に行われる (実際の背景色を知るためにウィンドウが開かれる必要があるか
ら)。これを避けるには、コマンド ":gui" を .gvimrc の中の 'background'
の値が使われる前に置いて (例えば ":syntax on" の前) GUIウィンドウを強
制的に開かせればよい。
MS-Windows では初期設定は "dark" である。
他のシステムでは 'term' が "linux"、"screen.linux"、"cygwin"、または
"putty" であるか、$COLORFGBG によって暗い背景が推奨されていれば初期設
定は "dark" になる。そうでなければ初期設定は "light" である。
:terminal コマンドと term_start() 関数は、ターミナルウィンドウが白
もしくは黒の背景でスタートするかどうかを決めるために 'background' の値
を使う。
通常、このオプションは .vimrc 内で設定される。おそらく、設定はターミナ
ルの名前に依存する。例:
定を使いたいなら、'background' を設定した「後」にコマンド ":highlight"
を置くこと。
このオプションはファイル "$VIMRUNTIME/syntax/syntax.vim" 内でも、構文
強調表示のための色を選択するのに使われる。このオプションを設定した後は
syntax.vim を再読み込みしないと結果が分からない。これにはコマンド
":syntax on" を実行すればよい。
'backspace' 'bs'
'backspace' 'bs' 文字列 (既定では ""、defaults.vim 内で
"indent,eol,start" にセットされる)
グローバル
挿入モードでの <BS>, <Del>, CTRL-W, CTRL-U の働きに影響する。値はキー
ワードのコンマ区切りのリストである。それぞれのキーワードがバックスペー
スの働く対象を定めている。
値 効果
indent autoindent を超えてバックスペースを働かせる
eol 改行を超えてバックスペースを働かせる (行を連結する)
start 挿入区間の始めでバックスペースを働かせるが CTRL-W と CTRL-U は
挿入区間の始めでいったん止まる
nostop start に似ているが CTRL-W と CTRL-U は挿入区間の始めで止まらな
い
値が空のときは、バックスペースの働きはVi互換になり、上記で述べている項
目の方法はどれも不可能となる。
バージョン 5.4 またはそれ以前との互換性を保つには次のようにする。
値 効果
0 ":set backspace=" と同じ (Vi互換)
1 ":set backspace=indent,eol" と同じ
2 ":set backspace=indent,eol,start" と同じ
3 ":set backspace=indent,eol,nostop" と同じ
<BS> や <Del> で望み通りの動作ができないときは :fixdel を参照。
NOTE: このオプションは、'compatible' がオンになると "" になるので注意。
'backup' 'bk' 'nobackup' 'nobk'
'backup' 'bk' 切替 (既定ではオフ)
グローバル
ファイルを上書きする前にバックアップを作る。書き込みが成功してもバック
アップはそのまま取っておく。バックアップを取っておきたくはないが、書き
込み中にはバックアップが欲しいときには、このオプションをオフにしてオプ
ション 'writebackup' をオンにすること (既定ではそうなっている)。全くバッ
クアップが要らないなら両方をオフにすること (ユーザーのファイルシステム
がほとんど満杯ならこうするとよい)。詳しくは backup-table を参照。
どちらにしてもオプション 'backupskip' のパターンがマッチすると、バック
アップは作られない。オプション 'patchmode' がオンのときは、バックアッ
プはリネームされてファイルの最も古いバージョンになることがある。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'backupcopy' 'bkc'
'backupcopy' 'bkc' 文字列 (UnixでのViの既定値: "yes"、それ以外: "auto")
グローバル/バッファについてローカル global-local
ファイルの書き込みをしてバックアップが作られるとき、その方法をこのオプ
ションで指定する。このオプションはコンマで区切られた単語のリストである。
主な値は次の通り:
"yes" 先にファイルのコピーを作ってバックアップにして、更新した内容は
元のファイルに上書きする
"no" 先に元のファイルをリネームしてバックアップにして、更新した内容
は新しいファイルに書き出す
"auto" どちらか適切な方を選ぶ
次の値を上のどれか1つと組み合わせることができる:
"breaksymlink" は書き込み時に常にシンボリックリンクを切る。
"breakhardlink" は書き込み時に常にハードリンクを切る。
{訳注:
$ ls -lF
total 2
-rw-r--r-- 1 ao ao 24 9 17 12:26 hontai
lrwxr-xr-x 1 ao ao 6 9 17 12:29 l@ -> hontai
となっているとき、ファイルlを編集して:wすると、
backupcopy=auto の場合:
-rw-r--r-- 1 ao ao 24 9 17 12:26 l~
lrwxr-xr-x 1 ao ao 6 9 17 12:29 l@ -> hontai
-rw-r--r-- 1 ao ao 27 9 17 12:31 hontai
backupcopy=auto,breaksymlink の場合:
-rw-r--r-- 1 ao ao 27 9 17 12:26 hontai
lrwxr-xr-x 1 ao ao 6 9 17 12:29 l~@ -> hontai
-rw-r--r-- 1 ao ao 30 9 17 12:32 l
という結果になる。}
ファイルのコピーを作ってから元のファイルを上書きする方法:
X ファイルのコピーに余計な時間がかかる。
O 編集したファイルが特別な属性を持っていたり、ファイルがハードリンクや
シンボリックリンクであったり、リソースフォークを持っているときでも、
全て元のまま保たれる。
X 編集したファイルがリンクのとき、バックアップの名前がリンク先の文書の
名前でなく、リンクの名前になってしまう。
ファイルをリネームしてから新しいファイルに書き出す方法:
O 高速である。
X 時々、元のファイルの属性の一部しか新しいファイルにコピーされないこと
がある。
X 編集したファイルがリンクのとき、新しいファイルはリンクにならない。
"auto" の値にすると折衷策を採る。Vimが副作用なしにそのファイルでリネー
ムの方法が使えると判断したとき (属性がコピーでき、ファイルがリンクでな
いとき) は、そちらが使われる。それでは問題がありそうなときはコピーの方
法が使われる。
"breaksymlink" と "breakhardlink" の値は "yes", "no", "auto" のどれと
も組み合わせることができる。これらが含まれていると、必ず "no" とまった
く同じようにシンボリックリンクやハードリンクを切るようになり、元のファ
イルがそのままバックアップになり、新しいファイルが作成される。これは例
えば全てのファイルがシンボリックリンクやハードリンクになっているソース
ツリーで便利である。変更がローカルのソースツリーに対してだけ行われ、元
のソースツリーには反映されない。
crontab
"no" と "auto" では問題が起きる場合がある。プログラムによっては、ファ
イルを開き、Vimを呼び出してそのファイルを編集させ、(ファイル区別プログ
ラムを使って) そのファイルが変更されたかどうかを調べるものがある。そう
したプログラムは新しく書き出されたファイルではなく、バックアップファイ
ルの方を調べてしまう。"crontab -e" は例であり、inotify のようないくつ
かの file-watcher デーモンも同様である。その場合は、このオプションを
切り替える必要があるだろう。
コピーの方法のときは、元のファイルの中身はいったん空になり、そこに新し
いテキストが書き込まれる。つまり、元のファイルの保護ビット、ファイル所
有者やシンボリックリンクは変更されない。しかし、バックアップファイルは
新しく作られることになり、ファイルを編集したユーザーの所有となる。また
バックアップファイルの属するグループは、元のファイルと同じグループにな
る。これが失敗すると、他の属性と同様に、そのグループの保護ビットが設定
される。
リネームのとき、逆の結果になる。バックアップファイルは元のファイルと同
じ属性を持ち、新しく書き出されたファイルは、ファイルを編集したユーザー
の所有となる。開いたファイルがハードリンクまたはシンボリックリンクだっ
た場合でも、新しく書き出されたファイルはリンクにならない!だから値が
"auto" のとき、ファイルがリンクならリネームを行わないのである。
新しく書き出されたファイルの所有者と属するグループは、元のファイルと同
じとして設定される。しかしシステムがこうすることを許可しないかもしれな
い。その場合、値が "auto" ならもうファイルのリネームをしようとはしな
い。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'backupdir' 'bdir'
'backupdir' 'bdir' 文字列 (Amigaでの既定値: ".,t:",
Win32での既定値: ".,$TEMP,c:/tmp,c:/temp"
Unixでの既定値: ".,~/tmp,~/")
グローバル
値は、バックアップファイル用ディレクトリの、コンマ区切りのリストである。
- バックアップファイルは、リスト内の、使用可能な最初のディレクトリの中
に作られる。Vim はそのディレクトリを作成しないので、存在していなけれ
ばならない。
- 値が空だと、バックアップファイルは作られない ('patchmode' は使えな
くなる!)。そのため書き込みが失敗するかもしれない。
- ディレクトリに "." を指定するのは、バックアップファイルを、編集され
たファイルと同じディレクトリに作るということである。
- ディレクトリが "./" (MS-Windowsでは ".\") で始まるのは、バックアップ
ファイルを作るディレクトリを、編集されたファイルとの相対的な位置で決
めるということである。最初の "." は編集されたファイルのパス名で置き
換えられる。(ディレクトリ名の内部の "." には特別な意味はない)
- コンマの後の空白は無視されるが、他の場所の空白はディレクトリ名の一部
と見なされる。ディレクトリ名の先頭に空白を使いたいなら、その空白の前
に '\' を置くこと。
- ディレクトリ名にコンマを使いたいなら、そのコンマの前に '\' を置くこ
と。
- ディレクトリ名は '/' で終わってもよい。
- UnixとWin32では、指定されたディレクトリ名の末尾がディレクトリの区切
り記号2個("//")で終わっていたら、バックアップファイルの名前はフルパ
スに従って付けられる。バックアップファイルのファイル名をフルパス形式
で表し、ディレクトリの区切り文字をパーセント記号 '%' で置き換えたも
のが使われる。こうするとバックアップファイル格納用ディレクトリの中で
もファイル名の一意性が保証される。
Win32では、"\\" で終わることも可能である。ただし、区切り文字のコンマ
の前では "\\" でなく "//" と書かなければならない。"\\" と書くと、コ
ンマがファイル名の一部と解釈されてしまうためである。したがって、'\\'
の代わりに '//' を使用することを勧める。
- 環境変数は展開される :set_env。
- 文字 '\' には注意。空白の前には1個置き、オプションの値に '\' 自身を
含めるなら2個置く (option-backslash を参照)。例:
- Vim version 3.0 との後方互換性のため、値の先頭の '>' は取り除かれる。
オプション 'backup' および 'writebackup' も参照。
Unixでユーザーのバックアップファイルを隠したいなら、次のようにしてみる
こと:
にディレクトリ ".backup" を作らなければならない。
リストにディレクトリを追加するときにはコマンド :set+=、リストからディ
レクトリを除くときにはコマンド :set-= を使うのがよい。こうすると将来
のバージョンで異なった既定値が使われるようになったときに、問題が起きる
のを防げる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'backupext' 'bex' E589
'backupext' 'bex' 文字列 (既定では "~", VMSでは "_")
グローバル
バックアップファイルの名前を作る際、元のファイル名の後ろに付け加える文
字列。既定では普段使いそうもないものに定めてあるが、これは既存のファイ
ルをバックアップファイルで上書きするのを避けるためである。".bak" を使
いたいかもしれないが、大事なファイルに ".bak" で終わるものがないか確か
めること。
通常のファイル名文字だけ使える。"/\*?[|<>" は不正である。
たくさんのバックアップを残しておきたいなら、自動コマンドBufWritePreを
使ってファイルを書き込む直前に 'backupext' にタイムスタンプを含めるよ
うに変更するとよい。
を設定すること。
'backupskip' 'bsk'
'backupskip' 'bsk' 文字列 (既定では "$TMPDIR/*,$TMP/*,$TEMP/*"
Unix: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*"
Mac: "/private/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*")
グローバル
ファイル名のパターンのリスト。書き込みをするファイルの名前にマッチする
パターンがこの中にあれば、そのファイルのバックアップは作られない。ファ
イル名を指定してもよいし、ファイルのフルパスを指定 {訳注: C:/temp/* 等
の方法。既定値ではこの方法で一時ファイル用のディレクトリを指定し、一時
ファイルのバックアップを作らないようにしている} してもよい。
パターンの指定方法は :autocmd と同じである。autocmd-patterns を参
照。特別な文字に注意するために option-backslash を参照。
環境変数の$TMPDIR, $TMP または $TEMP が定義されていないとき、それらは
既定値に使われない。"/tmp/*" はUnixでのみ使われる。
警告: バックアップファイルを作らないということは、すなわち、何らかの理
由で Vim がバッファを正しく保存できなかったときに、そのまま Vim を終了
してしまうと、あなたは元のファイルと新しく書いた内容の両方を失うという
ことを意味する。ファイルを失っても問題ないという場合のみバックアップを
無効化すること。
環境変数は展開されない。$HOMEを使いたい場合は、明示的に展開しなければ
ならない。例:
既定値は "crontab -e" が正常に機能するように定められている(元のファイ
ルをリネームすることによってバックアップを作ると、crontabは新しく作ら
れたファイルを参照しない)。'backupcopy' とcrontabも参照。
'balloondelay' 'bdlay'
'balloondelay' 'bdlay' 数値 (既定では 600)
グローバル
{+balloon_eval 機能付きでコンパイルされたときのみ有
効}
バルーン表示が出るまでの時間 (ミリ秒単位)。balloon-eval を参照。
'ballooneval' 'beval' 'noballooneval' 'nobeval'
'ballooneval' 'beval' 切替 (既定ではオフ)
グローバル
{+balloon_eval 機能付きでコンパイルされたときのみ有
効}
GUI 向けに balloon-eval 機能を働かせる。
'balloonevalterm' 'bevalterm' 'noballoonevalterm'
'nobevalterm'
'balloonevalterm' 'bevalterm' 切替 (既定ではオフ)
グローバル
{+balloon_eval_term 機能付きでコンパイルされたときの
み有効}
端末向けに balloon-eval 機能を働かせる。
'balloonexpr' 'bexpr'
'balloonexpr' 'bexpr' 文字列 (既定では "")
グローバル/バッファについてローカルglobal-local
{+balloon_eval機能付きでコンパイルされたときのみ有効}
バルーンウィンドウに表示するテキストの式。'ballooneval' か
'balloonevalterm' がオンのときのみ使われる。以下の変数を使用できる:
v:beval_bufnr バルーンを表示するバッファの番号
v:beval_winnr ウィンドウの番号
v:beval_winid ウィンドウの ID
v:beval_lnum 行番号
v:beval_col 桁番号(バイトインデックス)
v:beval_text マウスポインタの下、または後ろにある単語
プレーンテキストに限定されたバルーンを表示する代わりに、ポップアップ
ウィンドウの使用を検討してほしい。popup_beval_example を参照。ポップ
アップウィンドウでは、ハイライトを使用してボーダーを表示できる。
この式の評価には副作用があってはならない。
例:
balloon_show() も参照。バルーンの内容を非同期に取り込む場合に使うこ
とができる。その場合、'balloonexpr' を評価すると、空の文字列が返され
る。"0" のみのバルーンを取得した場合、おそらく関数から何も返されていな
い。
NOTE: バルーンはカーソルがテキスト文字の上にあるときだけ表示される。
'balloonexpr' を評価した結果が空でないなら、Vimは外部デバッガ(Netbeans
またはSun Workshop)にメッセージを送ろうとしない。
式が s: か <SID> で始まる場合、スクリプトID(local-function) に置き
換えられる。例:
価され、その結果スクリプトローカルな要素を使用できる。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'balloonexpr' を評価している間は、テキストの変更や他のウィンドウへの
ジャンプをすることは許されない。textlock を参照。
バルーンのテキスト中の改行が機能するかを調べるにはこれを使う:
価した結果がリストListになる場合は、そのリストの各要素を文字列とし、
それらの間に "\n" を置くのと同じことになる。
NOTE: このオプションは、'compatible' がオンになると "" になるので注意。
'belloff' 'bo'
'belloff' 'bo' 文字列 (既定では "")
グローバル
ベルを鳴らさないようにするイベントを指定する。これはコンマ区切りのアイ
テムのリストである。指定したアイテムにおいてベルは沈黙する。これは、挿
入モードにおいて特定のイベントで沈黙するように指定できることが最も有用
である。
'visualbell' を使うことでフラッシュにすることもできる。
アイテム 指定した時の意味
all 全てのイベント。
backspace <BS> か <Del> を打ち込んだ時、削除結果にエラーがある。
cursor Insert-mode でカーソルキーか <PageUp>/<PageDown> を使用
して移動することができない。
complete i_CTRL-X_CTRL-K か i_CTRL-X_CTRL-T を使用した時にエ
ラーが発生した。
copy i_CTRL-Y か i_CTRL-E を使用して挿入モードから文字がコ
ピーできない。
ctrlg 挿入モードで <C-G> の後に不明な文字。
error その他のエラーが発生した。(例えば、最終行で行連結を試みた)
(主に Normal-mode か Cmdline-mode で使用される)
esc Normal-mode で <Esc> を打ち込んだ。
ex Visual-mode で Q を打ち込んだ結果エラーが発生した。
hangul 無視される。
insertmode 'insertmode' で <Esc> を押した。
lang Lua/Mzscheme/TCL のためにビープモジュールを呼び出す。
mess g< で利用可能な出力がない。
showmatch 'showmatch' 機能でエラーが発生した。
operator 空の範囲エラー。cpo-E
register Insert-mode で <C-R> の後に不明なレジスタ。
shell シェルの出力からのベル。:!
spell スペルの提案でエラーが起こった。
term :terminal の出力からのベル。
wildmode cmdline-completion でより多くの一致が利用可能。
('wildmode' の設定に依存する)
これは挿入モードでベルを鳴らさなければならない場合に微調整するのに最も
有用である。ノーマルモードおよびexコマンドについては、ベルは多くの場合
エラーが発生したことを示すために鳴らされる。これは、"error" を追加する
ことで消すことができる。
'binary' 'bin' 'nobinary' 'nobin'
'binary' 'bin' 切替 (既定ではオフ)
バッファについてローカル
バイナリファイルを編集する前には、このオプションをオンにすべきである。
Vimの起動時に引数 -b を使ってもよい。オンのときは、いくつかのオプショ
ンの設定が変わる。
'textwidth' は 0 になる
'wrapmargin' は 0 になる
'modeline' は オフ になる
'expandtab' は オフ になる
またオプション 'fileformat' と 'fileformats' は無視され、読み込みと書
き込みは 'fileformat' が "unix" のときのようになる (1個の <NL> が改行
になる)。
さらにオプション 'fileencoding' と 'fileencodings' も無視され、ファイ
ルは変換なしに読み込まれるようになる。
NOTE: オプション 'bin' がオンのときに新しくファイルを読み込むと、
autocommand によって設定が再び変えられ (例えば 'textwidth')、編集時に
問題を起こす ことがあるので注意。ファイルを読み込んだ後に再び 'bin' を
オンにするとよい。
変更されるオプションの値は記憶されているので、オプション 'bin' がオフ
に戻るとそれらの値も復元される。それらの値はバッファごと独自に記憶され
る。
引数++binを使うと、'binary' をオンにしてファイルを開くことができる。
これを使うと ":set bin" としなくてすむ。":set bin" は編集する全てのバッ
ファに対して効果を持つ。
'bin' がオンならば、ファイルを書き込むときに最終行に <EOL> が付け加え
られるのは、元のファイルにすでに <EOL> があるときだけである (普通は、
最終行に <EOL> がないならVimはそれを付け加える。こうするとその分ファイ
ルが長くなる)。オプション 'endofline' を参照。
'bioskey' 'biosk' 'nobioskey' 'nobiosk'
'bioskey' 'biosk' 切替 (既定ではオン)
グローバル
{MS-DOS版のみ}
これはMS-DOSのためのものであったが、もうサポートされていない。
'bomb' 'nobomb'
'bomb' 切替 (既定ではオフ)
バッファについてローカル
ファイルを書き込むときに以下の条件が満たされれば、BOM (Byte Order Mark
{訳注: バイト順マーク。Unicodeを適切に扱うために使われるマーク}) がファ
イル先頭に付けられる。
- このオプションがオンである
- 'binary' がオフである
- 'fileencoding' が "utf-8", "ucs-2" または "ucs-4" である (リトルエン
ディアンとビッグエンディアンの違いは無視)
アプリケーションの中には、ファイルのエンコーディングを認識するために
BOM を使うものがある。MS-Windows で UCS-2 ファイルのためによく使われる。
しかし、アプリケーションによってはこれが問題になることもある。例えば
"cat file1 file2" とすると、file2の BOM がファイル途中に現れてしまう。
gcc は BOM を受け付けない。
ファイルを読み込むときに 'fileencodings' が "ucs-bom" で始まるならば、
BOM が存在するかどうかが調べられ、その結果に従って 'bomb' が設定される。
'binary' がオンでなければ BOM は編集時には取り除かれ、ユーザーの目には
触れない。'bomb' をオフにしたり 'binary' をオンにしたり
'fileencodings' を変えなければ、ファイルの書き込み時に再び BOM が復元
される。
'breakat' 'brk'
'breakat' 'brk' 文字列 (既定では " ^I!@*-+;:,./?")
グローバル
{+linebreak 機能付きでコンパイルされたときのみ有効}
オプション 'linebreak' がオンのとき、どの文字のところで行が折り返され
て表示されるかを、このオプションで指定する。これが機能するのはASCIIと
8bit文字('encoding' が8bitエンコーディングのとき)だけである。
'breakindent' 'bri' 'nobreakindent' 'nobri'
'breakindent' 'bri' 切替 (既定ではオフ)
ウィンドウについてローカル
{+linebreak 機能付きでコンパイルされたときのみ有効}
折り返された行を同じインデントで表示する (行の先頭にある空白の量と同じ
だけインデントされる)。つまりテキストブロックの水平位置が保持される。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'breakindentopt' 'briopt'
'breakindentopt' 'briopt' 文字列 (既定では空)
ウィンドウについてローカル
{+linebreak 機能付きでコンパイルされたときのみ有効}
'breakindent' の設定。次の項目を設定できる。それぞれの項目はコンマで区
切る:
min:{n} テキストの最小幅。'breakindent' が適用されたとき
にテキストがその幅よりも狭くならないようにする。こ
れは、ウィンドウの右端近くまでインデントされたテキ
ストが折り返されたときにたくさんの行に渡って表示さ
れるのを防ぐ。
(既定では 20)
shift:{n} 'breakindent' が適用されたときに、折り返された最初
の行を指定した量だけずらす。動的なフランス式の段落
インデント (負の値) や行の継続を強調 (正の値) した
りできる。
(既定では 0)
sbr 追加インデントの前に 'showbreak' を表示する。
(既定では off)
list:{n} 番号付きもしくは箇条書きリスト('formatlistpat' の
設定を使う)にマッチする行について追加のインデント
を加える。
(既定では 0)
list:-1 インデントに 'formatlistpat' のマッチの幅を使う。
column:{n} インデントの桁数 {n}。他のサブオプションを上書きす
る。Note: 'showbreak' の設定が追加インデントに足さ
れるかもしれない。
(既定では off)
'browsedir' 'bsdir'
'browsedir' 'bsdir' 文字列 (既定では "last")
グローバル
{Motif, GTK, Mac, Win32のGUI版のみ}
ファイルブラウザーの開始時、どのディレクトリを開くかを指定する。
last 前回にファイルブラウザーでファイルを開く・または保存し
たディレクトリ
buffer バッファで開いているファイルのディレクトリ
current カレントディレクトリ
{path} {path} で指定されたディレクトリ
'bufhidden' 'bh'
'bufhidden' 'bh' 文字列 (既定では "")
バッファについてローカル local-noglobal
バッファがウィンドウ内に表示されなくなったときの動作を指定する。
<empty> グローバルオプション 'hidden' に従う
hide 'hidden' がオフに設定されていても、バッファを隠す (解
放しない)。
unload 'hidden' がオンに設定されていても、バッファを解放する。
コマンド :hide もまたバッファを解放する。
delete 'hidden' がオンに設定されていても、バッファをバッファ
リストから削除する。:hide コマンドを使ったときは
:bdelete と同じようにバッファを削除する。
wipe 'hidden' がオンに設定されていても、バッファをバッファ
リストから完全に削除(wipe)する。:hide を使ったときは
:bwipeout と同じようにバッファを完全に削除する。
注意: "unload", "delete", "wipe" を設定すると、バッファの変更は警告無
しに失われる。また、これらの値はバッファを一時的に切り替えるような自動
コマンドを壊す可能性がある。
このオプションは 'buftype' や 'swapfile' と共に使われ、特殊な用途のバッ
ファを指定する。special-buffers を参照。
'buflisted' 'bl' 'nobuflisted' 'nobl' E85
'buflisted' 'bl' 切替 (既定ではオン)
バッファについてローカル
オンのときは、バッファはバッファリストに表示される。オフのときは、その
バッファはコマンド ":bnext" や ":ls" およびバッファメニュー等の対象に
ならない。
ファイル名やマークを思い出したりするためだけのバッファでは、このオプショ
ンはオフになる。バッファの編集を始めたときは、このオプションはオンにな
る。しかし ":buffer" でバッファに移動したときはオンにはならない。
'buftype' 'bt' E382
'buftype' 'bt' 文字列 (既定では "")
バッファについてローカル local-noglobal
このオプションはバッファの種類を指定する。
<empty> 普通のバッファ
nofile ファイルと関連がなく、書き込まれる予定のないバッファ
nowrite 書き込まれる予定のないバッファ
acwrite いつも自動コマンドBufWriteCmdで書き込まれる予定のバッ
ファ。
quickfix エラーリスト :cwindow またはlocationリスト :lwindow
を含んだquickfixバッファ。
help ヘルプバッファ (ユーザーが手動でこれに設定することはな
いはずである)
terminal terminal のためのバッファ (ユーザーが手動でこれを設
定することはないはずである)
prompt プラグインに使われることを意図した、最後の行だけを編集
できるバッファ、prompt-buffer を参照。
{+channel 機能付きでコンパイルされたときのみ有効}
popup ポップアップウィンドウで使われるバッファ
{+textprop 機能付きでコンパイルされたときのみ有効}
このオプションはオプション 'bufhidden' や 'swapfile' と共に使われ、特
殊な用途のバッファを指定する。special-buffers を参照。
ウィンドウのタイプを返す win_gettype() もまた参照。
このオプションの変更には十分注意すること。多くの副作用が起こるかもしれ
ない!
その作用の1つとして、Vim がファイルのタイムスタンプをチェックしなくな
るというのがあり、もしファイルが他のプログラムに変更されても認識されな
い。
"quickfix" バッファはエラーリストとロケーションリストにのみ使われる。
この値はコマンド:cwindow と:lwindowで設定され、ユーザーが変更するこ
とはないはずである。
"nofile" バッファと "nowrite" バッファは似ている。
両方とも、 バッファの内容はファイルに書き込まれない。":w" が使え
ない (":w 新ファイル名" は使える)。
両方とも、 バッファの内容が変更された 'modified' と認識されること
がない。Vimの終了時等、変更点が失われるときでも警告が
現れない。
両方とも、 スワップファイルはメモリを大量に消費したときのみ作られ
る ('swapfile' がオフだと、スワップファイルは作られな
い)。
nofile だけは、 バッファ名は固定され、ファイル名のようには扱われない。
:cd の結果としてバッファ名が変わることはない。
両方とも、 ":e bufname" を使い、すでに "bufname" を編集していたと
き、バッファは空になり:edit用の自動コマンドは通常通り
起動される。
E676
"acwrite" は "nofile" と同様にバッファ名がファイルと関係していないこと
を意味するが、"nofile" と違って保存される。すなわち、"nofile" と
"nowrite" とは違って ":w" ができ、変更されたバッファを保存せずに破棄す
ることはできない。これを保存するには、マッチする自動コマンド
BufWriteCmd, FileWriteCmd, FileAppendCmdがなければならない。
'casemap' 'cmp'
'casemap' 'cmp' 文字列 (既定では "internal,keepascii")
グローバル
大文字・小文字の変更について詳細を指定する。このオプションはコンマ区切
りで以下の単語を含む:
internal 内部の大文字・小文字対応関数を使う。現在のロケールに
よって対応が変更されない。これは 'encoding' がUnicode
エンコーディング, "latin1", "iso-8859-15" のときのみ問
題になる。"internal" が除かれるとシステムライブラリ関
数towupper()とtowlower()が利用可能ならば使われる。
keepascii ASCII文字(0x00から0x7f)についてはUS大文字小文字対応を
使う。現在のロケールは効果を持たない。
これはおそらくトルコ語でだけ問題になる。
'cdhome' 'cdh' 'nocdhome' 'nocdh'
'cdhome' 'cdh' 切替 (既定ではオフ)
グローバル
オンのときは、引数なしの :cd, :tcd, :lcd で Unix 風にカレントディ
レクトリを $HOME ディレクトリに変更する。
オフのときは、これらのコマンドはカレントディレクトリ名を表示するだけで
ある。
Unix においてはこのオプションは動作に影響を与えない。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
NOTE: このオプションは 'compatible' が設定されるとリセットされる。
'cdpath' 'cd' E344 E346
'cdpath' 'cd' 文字列 (既定では環境変数 $CDPATH または ",,")
グローバル
:cd、:tcd や :lcd を使ったときに検索されるディレクトリのリスト。
ただし検索されるディレクトリが "/", "./" や "../" で始まるときはこのオ
プションは使われない。
オプション 'cdpath' には、'path' と同様の指定方法を使う。
file-searching も参照。
既定値は環境変数 $CDPATH から取り込まれるが、カレントディレクトリを最
初に探すために "," が先頭に挿入される。
$CDPATH から取り込まれたものが望ましくないときは、値を上書きするために、
次のコマンドを適当に修正し、ユーザーのファイル vimrc に加えること:
内で設定することはできない。('cdpath' の値の一部は、ファイル名を展開す
るためにシェルに渡すことができる)。
'cedit'
'cedit' 文字列 (Viの既定値: "", Vimの既定値: CTRL-F)
グローバル
コマンドラインモードで、コマンドラインウィンドウを開くために使われる
キー。'compatible' がオフの場合、デフォルトは CTRL-F である。
表示不可文字なキーのみが許可される。
キーは単一文字で指定できるが、入力が困難である。推奨される方法は、
key-notation (例: <Up>、<C-F>) またはキャレット付きの文字 (例: ^F
は CTRL-F) を使用することだ。例:
cmdwin を参照。
NOTE: このオプションは 'compatible' がオフになるとVimの既定値に設定さ
れるので注意。
'charconvert' 'ccv' E202 E214 E513
'charconvert' 'ccv' 文字列 (既定では "")
グローバル
{+eval 機能付きでコンパイルされたときのみ有効}
文字エンコーディングの変換に使われる expression を定める。これは読み込
まれようとしているファイルや書き込みをしたファイルのエンコーディングが、
望むものと違うときに評価される。
オプション 'charconvert' の値は、内部関数 iconv() がサポートされ、それ
による変換が可能ならば使われることはない。ずっと高速なため、iconv() の
使用を推奨する。
'charconvert' は標準入力 (stdin --) から読み込むときには使われない。
なぜなら変換元のファイルが存在しないからだ。まずテキストの内容をファイ
ルに保存しなければいけない。
使われる expression は、成功時は0、false または空の文字列を返し、失敗
時は非0または true を返す必要がある。
expression が遭遇する可能性のあるエンコーディング名は、'encoding' に加
えて 'fileencodings', 'fileencoding' で使われているものに限られる。
"latin1", "unicode", "ucs-2", "ucs-4", "utf-8" の間の変換はVimの内部で
行われ、'charconvert' は使われない。'viminfo' の中にフラグ 'c' が含ま
れるならば、'charconvert' はファイル viminfo の変換にも使われる。また
Unicode の変換にも使われる。
例:
v:charconvert_from 現在のエンコーディング名
v:charconvert_to 希望するエンコーディング名
v:fname_in 入力ファイル名
v:fname_out 出力ファイル名
Note 変数 v:fname_in と v:fname_out とは、決して同じになってはいけない
ので注意。
Note v:charconvert_from と v:charconvert_to の値は 'encoding' と異なる
かもしれないので注意。Vim内部では UCS-2 または UCS-4 の代わりには
UTF-8 を使っている。
引数なしで関数呼び出しを使用する利点は、高速であることである。
expr-option-function を参照。
Vim は 'charconvert' を用いたエンコーディング変換では暗号化をしない。
変換後に暗号化をしたいなら、'charconvert' にそうさせる必要がある。
'charconvert' の式が s: か <SID> で始まる場合、スクリプトID
(local-function) に置き換えられる。例:
価され、その結果スクリプトローカルな要素を使用できる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'cindent' 'cin' 'nocindent' 'nocin'
'cindent' 'cin' 切替 (既定ではオフ)
バッファについてローカル
Cプログラムファイルの自動インデントを行う。挿入モードで再インデントを
引き起こす文字列を指定するにはオプション 'cinkeys' を、好みのインデン
トスタイルを設定するには 'cinoptions' を参照。
'indentexpr' の値が空でないなら、それは 'cindent' の設定を上書きする。
'lisp' がオフで、'indentexpr' と 'equalprg' の両方の値が空なら、"=" に
よるインデントはこのアルゴリズムを使い、外部プログラムを使わない。
C-indenting を参照。
'cindent' の動作が気に入らないならば、'smartindent' か 'indentexpr' を
試してみること。
このオプションは 'paste' がオンのときには使われない。
NOTE: このオプションは 'compatible' がオンになるとオフになるので注意。
'cinkeys' 'cink'
'cinkeys' 'cink' 文字列 (既定では "0{,0},0),0],:,0#,!^F,o,O,e")
バッファについてローカル
挿入モードで入力されたときに、現在行の再インデントを引き起こす文字のリ
スト。オプション 'cindent' がオンで、かつ 'indentexpr' が空の時のみ使
われる。
このオプションの設定方法については cinkeys-format を参照。
また C-indenting を参照。
'cinoptions' 'cino'
'cinoptions' 'cino' 文字列 (既定では "")
バッファについてローカル
このオプションは、'cindent' でのC言語ソース内の行の再インデント方法に
影響を与える。このオプションの値については cinoptions-values を、一
般的なC言語ソースのインデントの情報については C-indenting を参照。
'cinscopedecls' 'cinsd'
'cinscopedecls' 'cinsd' 文字列 (既定では "public,protected,private")
バッファについてローカル
cino-g によって解釈される C++ スコープ宣言のキーワード。例えば、Qt
フレームワークとともに動作するときの追加のスコープ宣言として "signals",
"public slots", "private slots" を定義すると便利になる:
'cinwords' 'cinw'
'cinwords' 'cinw' 文字列 (既定では "if,else,while,do,for,switch")
バッファについてローカル
オプション 'smartindent' か 'cindent' がオンのとき、ここに指定したキー
ワードの次の行は、さらにインデントされる。'cindent' がオンのときには、
適切な場所 ({} の内側) でのみ機能する。
NOTE 'ignorecase' は 'cinwords' の値には適用されないので注意。大文字か
小文字かを区別したくないなら、値に両方を指定すること。例: "if,If,IF"
'clipboard' 'cb'
'clipboard' 'cb' 文字列 (既定値はX-windowsでは
"autoselect,exclude:cons\|linux"
それ以外では "")
グローバル
{VimのGUIバージョンか +xterm_clipboard 機能付きでコ
ンパイルされたもののみ有効}
コンマ区切りのキーワードのリストを指定する。
Note: 要素の1つとして "exclude:" がある場合、要素を後ろに追加すること
はできない。従って += で後方への要素の追加ではなく ^= を使って前方への
追加をする。例:
認識されるのは、以下のキーワードである。
clipboard-unnamed
unnamed これが含まれると、コピー、削除、変更、ペーストなどの操
作で、普通なら無名レジスタが使われるところで、全てク
リップボードレジスタ '*' が使われるようになる。ただし
レジスタ名を明示的に指定した場合は、オプション
'clipboard' に "unnamed" が含まれているかいないかにか
かわらず、指定されたレジスタが使われる。またクリップ
ボードレジスタは、"* という記法を用いれば常にアクセス
できる。
gui-clipboard も参照。
clipboard-unnamedplus
unnamedplus "unnamed" と似ているがコピー、削除、変更、ペーストなど
の操作で、普通なら無名レジスタが使われるところで、ク
リップボードレジスタ '+' (quoteplus) が使われる。
"unnamed" も同時に指定した場合は、コピー操作 (削除、変
更、ペースト以外の操作) で、レジスタ '*' にもテキスト
がコピーされる。
+X11 機能が有効な場合のみ利用可能。
利用できるかどうかは次のコマンドで確認できる:
clipboard-autoselect
autoselect 'guioptions' のフラグ 'a' のように働く: これが含まれる
と、ビジュアルモードが開始されるたび、または ビジュア
ル選択範囲が変更されるたびに、Vimはウィンドウシステム
のグローバルなクリップボードのオーナーになろうとする
か、選択されたテキストをクリップボード用レジスタ "* を
使ってクリップボードにコピーしようとする。詳細は
'go-a' と quotestar を参照。GUI機能が有効のときは
'guioptions' のフラグ 'a' が使用され、無効のときはこ
の "autoselect" フラグが使用される。
また、モードレスなセレクションにも適用される。
clipboard-autoselectplus
autoselectplus "autoselect" と似ているが、* レジスタの代わりに + レジ
スタが使われる。'guioptions' の 'P' フラグと比較してみ
ること。
clipboard-autoselectml
autoselectml "autoselect" と似ているが、モードレスセレクションのみ
に適用される。'guioptions' のフラグ 'A' と比較してみる
こと。
clipboard-html
html クリップボードの内容が HTML であるとき、貼り付け時に使
われる。テキストをクリップボードにコピーするとき、
HTML としてマークアップする。Firefox で描画された HTML
をコピーして Vim で HTML ソースとして貼り付けるとき
や、Vim で HTML を選択して Firefox のリッチエディット
ボックスに貼り付けるときに使われる。
これを一時的にのみ使いたい場合は BufEnter 自動コマンド
を使うといいかもしれない。
GTK 2 以降のみ対応している。
clipboard-exclude
exclude:{pattern}
ターミナルの名前 'term' にマッチするパターンを定義す
る。パターンがマッチすると、Xサーバーとの通信がなされ
なくなる。
このオプションは以下の場合に便利である。
- Vimをコンソールで使用しているとき。
- アプリケーションを別のディスプレイで使うため、環境変
数 $DISPLAY が設定されているとき。
- コンソールではXサーバーと通信してほしくないが、ター
ミナルエミュレータ上では通信してほしいとき。
Xサーバーと全く通信しないようにするには、次のようにす
る:
Note Xサーバーと通信していないとき、ウィンドウタイトル
は復元されず、クリップボードにはアクセスできない。
'magic' の値は無視され、{pattern} は 'magic' がオンの
ときのように解釈される。オプション 'clipboard' の値の
残りは {pattern} として認識されるので、"exclude" は最
後に指定しなければならない。
'cmdheight' 'ch'
'cmdheight' 'ch' 数値 (既定では 1)
グローバル/タブページについてローカル
コマンドラインに使われる画面上の行数。この値を大きくすると、
hit-enter プロンプトを避けることができる。
各タブページが異なる値を持てるようにするために、このオプションの値はタ
ブページに保存される。
'cmdwinheight' 'cwh'
'cmdwinheight' 'cwh' 数値 (既定では 7)
グローバル
コマンドラインウィンドウに使われる画面上の行数。cmdwin を参照。
'colorcolumn' 'cc'
'colorcolumn' 'cc' 文字列 (既定では "")
ウィンドウについてローカル
{+syntax 機能付きでコンパイルされたときのみ有効}
'colorcolumn' はスクリーンの列をコンマ区切りで指定する。指定された列は
ColorColumn (hl-ColorColumn) で強調表示される。テキストを整列すると
きに便利である。スクリーンの表示は遅くなる。
列番号は絶対値で指定するか、番号に '+' か '-' を前置して 'textwidth'
からの相対値として指定する。
'textwidth' がゼロのときは '-' と '+' で指定されたアイテムは使用されな
い。最大で 256 個の列を強調表示できる。
'columns' 'co' E594
'columns' 'co' 数値 (既定では 80 またはターミナルの幅)
グローバル
画面上の列幅を設定する。普通このオプションはターミナルの初期化の時点で
設定され、手動で設定する必要はない。posix-screen-sizeも参照。
VimがGUI内やサイズ変更可能なウィンドウ内で実行されているときは、このオ
プションを変更するとウィンドウサイズも変更される。GUIでだけこのサイズ
を使用したい場合は、このコマンドをgvimrcに書くこと。
ユーザーがこのオプションを変更したのに、Vimがディスプレイの列幅の物理
的な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれ
がある。GUIでは常にその可能性があるので、Vimは桁数を画面に収まる値に制
限している。可能なウィンドウ幅の最大値を取得するには、次のコマンドを使
う:
{訳注: オプション 'lines' も参照}
'comments' 'com' E524 E525
'comments' 'com' 文字列 (既定では
"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-")
バッファについてローカル
コメント行の始まりとなる文字列の、コンマ区切りのリスト。
format-comments を参照。'\' を使って値にスペースを含める方法について
は、option-backslash を参照。
'commentstring' 'cms' E537
'commentstring' 'cms' 文字列 (既定では "/* %s */")
バッファについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
コメント用のテンプレート (雛形)。値内の "%s" はコメントテキストに置き
換えられ、可能な限りスペースでパディングされるべきである。現在のとこ
ろ、折り畳み用のマーカーを追加するために使用されている。fold-marker
を参照。また、一般的にコメントプラグインでも使用される (例:
comment-install)。
'compatible' 'cp' 'nocompatible' 'nocp'
'compatible' 'cp' 切替 (既定では オン、ファイルvimrcまたは gvimrc
が発見されたらオフ、defaults.vim 内でリセット)
グローバル
VimをなるべくVi互換にするか、便利な機能を使えるようにするかを決定する。
これは、特別な種類のオプションである。このオプションの値が変更される
と、それに伴って他のオプションも変更されるからだ。
NOTE: このオプションを変更すると、予期しない効果が数多く現れる。キー
マップの解釈は変わり、アンドゥも違った方法で行われる、等々。このオプ
ションをファイル vimrc 内で設定するなら、一番先頭に置くこと。
既定ではオンなので、その他のオプションにはViの既定値が使われる。この既
定値は、VimをViと全く同じように使うことを望み、オプション 'compatible'
について知りもしない、または知りたいとさえ思わない人たちのためのもので
ある。
Vimが立ち上がる間にファイル vimrc または gvimrc が見つかると、この
オプションはオフにされ、その他のオプションで変更されていないものは、
みなVimの既定値に設定される。要するに、Vimはファイル vimrc または
gvimrc が存在するならVimの既定値を、存在しないならViの既定値を使うの
だ (Note: システム全体用のvimrcやgvimrc、あるいは引数 -u で指定され
るファイルは関係ないことに注意)。compatible-default と
posix-compliance も参照。
このオプションは引数 "-C" でオンに、引数 "-N" でオフにできる。 -C と
-N を参照。
Viとの互換性をより細かく調整するには 'cpoptions' を参照すること。
このオプションがオンにされると、Vimができる限りVi互換となるように数多
くの他のオプションが設定される。このオプションがオフにされると、Vimが
より使いやすくなるように多くのオプションが設定される。下の表は影響を受
けるすべてのオプションを示す。
{?}列は、いつそのオプションが影響を受けるかを示す:
+ 'compatible' がオンになったときに、{設定値}に示した値が設定されるこ
とを意味する。
& 'compatible' がオンになったときに、{設定値}に示した値が設定され、か
つ、'compatible' がオフになったときにVimの既定値に設定されることを
意味する。
- 'compatible' がオンになったときには値は変更されないが、'compatible'
がオフになったときにはVimの既定値に設定されることを意味する。
{効果}列は、'compatible' がオンになったときの変更をまとめてある。
オプション ? 設定値 効果
'allowrevins' + オフ コマンド CTRL-_ なし
'antialias' + オフ アンチエイリアスフォントを使用しない
'arabic' + オフ アラビア語関連オプションをリセット
'arabicshape' + オン 文字表示補正を行う
'backspace' + "" 普通のバックスペース
'backup' + オフ バックアップファイルなし
'backupcopy' & Unix: "yes" バックアップファイルがコピーになる
他: "auto" バップアップはコピーまたはリネーム
'balloonexpr' + "" バルーンに表示するテキストの式
'breakindent' + オフ 折り返した行をインデントしない
'cedit' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'cdhome' + オフ 非 Unix で ":cd" でホームに変更しない
'cindent' + オフ C言語ファイルにインデントなし
'compatible' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'copyindent' + オフ インデント構造をコピーしない
'cpoptions' & (全フラグ) Vi互換のフラグ
'cscopepathcomp'+ 0 タグ一覧にディレクトリを表示しない
'cscoperelative'+ オフ 保存されているディレクトリをプリフィッ
クスとして使用しない
'cscopetag' + オフ ":tag" に cscope を使わない
'cscopetagorder'+ 0 cscopetagorder を参照
'cscopeverbose' + オフ cscopeverbose を参照
'delcombine' + オフ unicode: すべての合成文字を削除
'digraph' + オフ ダイグラフなし
'esckeys' & オフ 挿入モードで <Esc> で始まるキーなし
これは、modifyOtherKeys と
xterm-bracketed-paste も無効にする
'expandtab' + オフ タブはスペースに展開されない
'fileformats' & "" 自動ファイルタイプ決定なし
"dos,unix" (ただし MS-Windows 以外で)
'formatexpr' + "" 'formatprg' を自動整形に使う
'formatoptions' & "vt" Vi互換の文書整形
'gdefault' + オフ ":s" でフラグの既定値に 'g' なし
'history' & 0 コマンドラインの履歴なし
'hkmap' + オフ ヘブライ語用キーボードマップなし
'hkmapp' + オフ phoneticヘブライ語用キーボードマップなし
'hlsearch' + オフ 検索でマッチした文字列に強調なし
'incsearch' + オフ インクリメンタルサーチなし
'indentexpr' + "" expression によるインデントなし
'insertmode' + オフ 挿入モードでの開始なし
'iskeyword' & "@,48-57,_" キーワードはアルファベットと数字と '_'
'joinspaces' + オン ピリオドの後ろには空白を2個挿入
'modeline' & オフ モードラインなし
'more' & オフ リスト表示が止まらない
'mzquantum' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'numberwidth' & 8 行番号用の最小桁数
'preserveindent'+ オフ インデント変更時に現在のインデント構造
を保持しない
'revins' + オフ 右から左の挿入なし
'ruler' + オフ ルーラーなし
'scrolljump' + 1 ジャンプスクロールなし
'scrolloff' + 0 スクロールにオフセットなし
'shelltemp' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'shiftround' + オフ インデントは shiftwidth の整数倍でない
'shortmess' & "S" メッセージの短縮なし
'showcmd' & オフ コマンドの文字は表示されない
'showmode' & オフ 現在のモードは表示されない
'sidescrolloff' + 0 スクロール時、カーソルは画面端に移動
'smartcase' + オフ 大文字小文字の無視は自動にならない
'smartindent' + オフ 高度なインデントなし
'smarttab' + オフ 高度なタブ挿入なし
'softtabstop' + 0 タブは常に 'tabstop' を基準
'startofline' + オン いくつかのコマンドで行頭に移動する
'tagcase' & "followic" タグファイル検索時 'ignorecase' に従う
'tagrelative' & オフ タグファイル名は相対的でない
'termguicolors' + オフ highlight-(guifg|guibg) を使用しない
'textauto' & オフ 自動改行コード決定なし
'textwidth' + 0 自動行分割なし
'tildeop' + オフ チルダはオペレータではない
'ttimeout' + オフ ターミナルの時間切れなし
'undofile' + オフ アンドゥファイルを使用しない
'viminfo' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'virtualedit' + "" カーソルは文字の上にのみ置ける
'whichwrap' & "" 左から右への移動は行を超えない
'wildchar' & CTRL-E 現在の値が <Tab> のときのみ、コマンド
ライン補完に CTRL-E を使う
'writebackup' + オンかオフ +writebackup 機能に依る
'complete' 'cpt' E535
'complete' 'cpt' 文字列 (既定では: ".,w,b,u,t,i")
バッファについてローカル
コマンド CTRL-P や CTRL-N によるキーワード補完 ins-completion の動作
を指定する。このオプションは行全体の補完 i_CTRL-X_CTRL-L にも適用さ
れる。このオプションは補完の方法と、キーワード検索の対象となる場所を示
す、コンマ区切りのフラグのリストである。
. カレントバッファから検索 ('wrapscan' の値は無視)
w 別のウィンドウ内のバッファから検索
b バッファリスト内の、現在読み込まれている別のバッファから検索
u バッファリスト内の、現在読み込まれていない別のバッファから検索
U バッファリストにないバッファから検索
k 'dictionary' で指定されたファイルから検索
kspell 現在有効化されているスペルチェックを使う spell
k{dict} {dict} で与えられたファイルから検索。"k" を複数指定してもよい。
ファイル名はパターンでも指定できる。例:
s{tsr} {tsr} で与えられたファイルから検索。"s" を複数指定してもよい。
ファイル名はパターンでも指定できる。
i カレントファイルとインクルードされるファイルから検索
d カレントファイルとインクルードされるファイルから、定義された名
前またはマクロを検索 i_CTRL-X_CTRL-D
] タグ補完
t "]" と同じ
読み込まれていないバッファでは、何しろ読み込まれていないのだから、
:autocmd は実行されていない。そのため、ある種のファイルからは思いも
しないキーワードを補完してしまうことがある (gzip圧縮されたファイルな
ど)。読み込まれていないバッファは、行全体の補完には使われない。
既定では ".,w,b,u,t,i" となっていて、これは検索対象を次のように指定し
ている。
1. カレントバッファ
2. 別のウィンドウ内のバッファ
3. 他の読み込まれたバッファ
4. バッファリスト内の読み込まれていないバッファ
5. タグ
6. インクルードされるファイル
CTRL-N と CTRL-P は 'iskeyword' を利用した全てのファイル名展開で使用で
きる (つまり辞書 i_CTRL-X_CTRL-K、インクルードされるパターン
i_CTRL-X_CTRL-I、タグ i_CTRL-X_CTRL-] および通常の展開)。
'completefunc' 'cfu'
'completefunc' 'cfu' 文字列 (既定では空)
バッファについてローカル
{+eval 機能付きでコンパイルされたときのみ有効}
このオプションは入力モードのCTRL-X CTRL-U i_CTRL-X_CTRL-Uでの補完に
使われる関数を指定する。
その関数がどのように起動され、何を返すべきかについての説明は
complete-functions を参照。値として関数名、lambda、Funcref が使
える。詳細は option-value-function を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'completeitemalign' 'cia'
'completeitemalign' 'cia' 文字列 (既定では "abbr,kind,menu")
グローバル
コンマで区切られた complete-items のリストで、挿入モード補完中にポッ
プアップメニューの項目の配置と表示順序を制御する。サポートされている値
は、abbr、kind、および menu である。これらのオプションを使用すると、補
完項目がポップアップメニューに表示される方法をカスタマイズできる。
Note: どのような順序であっても、常にこれら 3 つの値を含んでいなければ
ならない。
'completeopt' 'cot'
'completeopt' 'cot' 文字列 (既定では "menu,preview")
グローバル/バッファについてローカル global-local
入力モードでの補完ins-completionについてのオプションのコンマ区切りの
リスト。サポートされている値は次の通り:
menu ポップアップメニューで補完候補を表示する。ポップアップメ
ニューは、候補が2個以上あり、十分な数の色が使用できるとき
だけ表示される。ins-completion-menuを参照。
menuone 候補が1つしかないときもポップアップメニューを使う。候補に
ついて付加的な情報があるときに便利である。例えば、それがど
のファイルに含まれているかなど。
longest 候補の文字列の最長の共通部分だけを挿入する。メニューが表示
されているならばCTRL-Lでさらに文字を挿入することができる。
大文字・小文字が同一視されるかどうかは補完の種類による。
バッファのテキストについてはオプション 'ignorecase' が適用
される。
preview 現在選択されている候補についての付加的な情報をプレビュー
ウィンドウに表示する。"menu" または "menuone" と組み合わせ
たときのみ有効。
popup 現在選択されている補完に関する追加情報をポップアップウィン
ドウに表示する。"menu" または "menuone" との組み合わせでの
み機能する。"preview" を無視する。
指定するプロパティについては 'completepopup' を参照。
{+textprop 機能付きでコンパイルされたときのみ有効}
popuphidden
"popup" と同様だが、最初はポップアップを非表示にする。
CompleteChanged 自動コマンドを使用して情報を取得し、ポッ
プアップがいっぱいになれば popup_show() を呼び出す。
complete-popuphidden の例を参照。
{+textprop 機能付きでコンパイルされたときのみ有効}
noinsert いかなるマッチしたテキストも、ユーザーがメニューから選択し
ない限り挿入しない。"menu" か "menuone" と組み合わせたとき
にだけ機能する。"longest" が指定された場合には、なんの影響
も発生しない。
noselect メニューからマッチを {訳注:自動では} 選択せず、ユーザーに
自分で選ぶことを強制する。"menu" か "menuone" と組み合わせ
たときにだけ機能する。
fuzzy 補完候補に対して fuzzy-matching を有効にする。これによ
り、より柔軟で直感的なマッチングが可能になり、文字をスキッ
プしたり、正確なシーケンスが入力されていなくてもマッチを見
つけることができる。
'completepopup' 'cpp'
'completepopup' 'cpp' 字列 (既定では空)
グローバル
{+textprop または +quickfix 機能付きでコンパイルさ
れたときのみ有効}
'completeopt' に "popup" が含まれている場合、このオプションは、作成時
に情報ポップアップのプロパティに使用される。すでに情報ポップアップウィ
ンドウが有る場合は閉じられ、再生成されるときにオプションの値が適用され
る。
また、popup_findinfo() を使用して、popup_setoptions() で既存の情報
ポップアップのプロパティを設定することもできる。complete-popup を参
照。
'completeslash' 'csl'
'completeslash' 'csl' 文字列 (既定では "")
バッファについてローカル
{Vimの MS-Windows 版でのみ有効}
このオプションを設定すると、補完のための 'shellslash' が無効になる:
- このオプションを "slash" に設定すると、挿入モードでのパス補完にスラッ
シュが使用される。これは、MS-Windowsで 'noshellslash' でHTMLタグや、
Makefile を編集するときに便利である。
- このオプションを "backslash" に設定すると、バックスラッシュが使用さ
れる。これは、MS-Windowsで 'shellslash' を設定してバッチファイルを編
集するときに便利である。
- このオプションが空の場合、'shellslash' と同じ文字が使用される。
挿入モードの補完には、バッファローカル値が使用される。コマンドラインの
補完には、グローバル値が使用される。
'concealcursor' 'cocu'
'concealcursor' 'cocu' 文字列 (既定では: "")
ウィンドウについてローカル
{+conceal 機能付きでコンパイルされたときのみ有効}
カーソル行のテキストを Conceal 表示するモードを設定する。現在のモード
がこのオプション値に含まれているなら他の行と同様に Conceal 表示され
る。
n ノーマルモード
v ビジュアルモード
i 挿入モード
c コマンドライン編集 ('incsearch' 用)
'v' はカーソル行だけでなくビジュアル選択された行全体に適用される。
便利な値は "nc" である。これはヘルプファイルで使われている。移動してい
るときはテキストは Conceal 表示されるが、テキストを入力したりビジュア
ル選択したりするときは実際のテキストが表示されるので、自分の操作を視覚
できる。
カーソルの位置は実際の表示とは異なる場合があるので注意すること。
例えば縦に移動することで列が変わることがある。
'conceallevel' 'cole'
'conceallevel' 'cole' 数値 (既定では 0)
ウィンドウについてローカル
{+conceal 機能付きでコンパイルされたときのみ有効}
"conceal" 構文属性 (:syn-conceal) のテキストをどのように表示するかを
設定する:
値 効果
0 テキストは通常通り表示される
1 各ブロックの Conceal されたテキストは一つの文字に置換
される。構文アイテムに代理文字 (:syn-cchar 参照) が
指定されていないときは 'listchars' の設定が使われる
(初期設定はスペース)。
文字はハイライトグループ "Conceal" を使って強調表示さ
れる。
2 Conceal されたテキストは構文アイテムに指定された代理文
字 (:syn-cchar) として表示される。それが指定されて
いないときは完全に非表示になる。
3 Conceal されたテキストは完全に非表示になる。
Note: テキストの編集やコピーの操作を妨げないようにするため、カーソル行
の Conceal テキストは非表示にならない。これは 'concealcursor' オプショ
ンで変更できる。
'confirm' 'cf' 'noconfirm' 'nocf'
'confirm' 'cf' 切替 (既定ではオフ)
グローバル
オプション 'confirm' がオンならば、バッファへの変更を保存していないと
実行に失敗する操作 (例えばコマンド ":q" と ":e") の際、ダイアログ
dialog を開いてファイルを保存するかどうか尋ねる。これがオンになって
いても、意図的に変更を廃棄したいなら ! を使える。
'confirm' がオフでも、コマンド :confirm で個別に確認を求めることがで
きる (これはキーマッピングで使うととても便利である)。
関数 confirm() と 'guioptions' のフラグ 'v' も参照。
'conskey' 'consk' 'noconskey' 'noconsk'
'conskey' 'consk' 切替 (既定ではオフ)
グローバル
これはMS-DOSのためのものであったが、もうサポートされていない。
'copyindent' 'ci' 'nocopyindent' 'noci'
'copyindent' 'ci' 切替 (既定ではオフ)
バッファについてローカル
新規行を自動インデントするとき、既存の行のインデント構造をコピーする。
普通、新しい行のインデントは 'expandtab' が有効になっていないかぎり
(この場合は全てスペースになる)、まずタブが使われ、足りない部分がスペー
スで埋められる。このオプションを有効にすると、既存の行のインデントにど
んな文字が使われていようとそれを新規行にコピーする。'expandtab' はこれ
らの文字には影響せず、タブはタブのままになる。新規行のインデントが既存
の行よりも深いならば、その差の部分は通常の方法で埋められる。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'preserveindent' も参照。
'cpoptions' 'cpo' cpo
'cpoptions' 'cpo' 文字列 (Vimの既定値: "aABceFsz",
Viの既定値: "#{|&/\." を除く全てのフラグ
$VIM_POSIX: 全てのフラグ)
グローバル
1文字のフラグの列で設定する。フラグが設定されると、対応する動作がVi互
換になる。大部分、またはある程度のVi互換が求められるときに使われる。
'cpoptions' は "compatible-options (互換オプション)" の意味である。
読みやすくするためにコンマを入れてもよい。
将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+="
と "-=" を使うこと add-option-flags。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
NOTE: Vim9 script では、vim9script を検出した時、値が保存され、
'cpoptions' に Vim のデフォルトが設定され、スクリプトの終了時に保存さ
れた値が復元される。'cpoptions' の値を変更した場合、保存した値へ復元さ
れるが、'cpoptions' が変更されたときに存在しないフラグを削除しても効果
がないことに注意すること。.vimrc ファイルでは値は復元されないので、
.vimrc ファイルで vim9script を使用すると、Vim のデフォルトを使用
することになる。
NOTE: Viの既定値が使われるようになっており、さらに環境変数$VIM_POSIXが
存在するとき、Vim起動時にこのオプションがPOSIXの既定値にセットされる
posix。これによってVimがPOSIX仕様に近い挙動をするようになる。
フラグ 動作
cpo-a
a これが含まれると、":read" にファイル名の引数を与えたと
き、そのファイルをカレントウィンドウの代替ファイルに設
定する。
cpo-A
A これが含まれると、":write" にファイル名の引数を与えた
とき、そのファイルをカレントウィンドウの代替ファイルに
設定する。
cpo-b
b ":map" 内の "\|" がコマンドの終端と見なされるようにな
る。'\' はキーマッピングの一部に、'|' の次のテキストは
次のコマンドと見なされる。'|' をキーマッピングに含める
には、'\' でなく CTRL-V を使うこと。キーマッピングや略
語やメニューや autocmd コマンドの全てに適用される。
map_bar も参照。
cpo-B
B '\' が、":menu" のメニューから実行される部分やキーマッ
ピングや略語やユーザーコマンドにおいて、特別な意味を持
たなくなる。'\' をCTRL-V のように使いたいのならこのフ
ラグを取り除くこと。
例えば、":map X \<Esc>" で X がマップされるのは、
'B' が含まれたとき: "\^[" (^[ は本当の <Esc>)
'B' が除かれたとき: "<Esc>" (5個の文字)
(どちらの場合も '<' が除かれているとする)
cpo-c
c {訳注: 検索でマッチする文字列があった後} カーソル位置
のマッチの終わり(ただし次行の開始位置を越えない)から次
の検索を行う。このフラグが含まれないと、次の検索はカー
ソル位置の1文字後から始まる。'c' が含まれると、"/abab"
で検索したとき "abababababab" には3回しかマッチしない
が、'c' が含まれないと5回マッチする。
cpo-C
C ":source" で読み込まれたファイルのうち、'\' で始まる行
を連結しない。line-continuation を参照。
cpo-d
d 'tags' 内で "./" という記法を使ったとき、タグファイル
はカレントファイルのディレクトリでなく、カレントディレ
クトリから探す。
cpo-D
D r, f や t のような、文字を引数に取る ノーマル
モードコマンドの後で、CTRL-K によるダイグラフの入力が
できなくなる。
cpo-e
e ":@r" でレジスタの内容を {訳注: Exコマンドとして} 実行
するとき、レジスタが行全体を保存したものでないときでも、
常に最終行に <CR> を付け加える。このフラグが含まれない
ときは、レジスタの内容が行全体を保存したものでなく、か
つ <CR> で終わらないならば、実行すると最終行はコマンド
ラインに表示され、<CR> を打ち込むまでは編集できる。
cpo-E
E 空の範囲に "y", "d", "c", "g~", "gu", "gU" などのコマ
ンドを使うとエラーになる。オペレータは作用する対象が最
低でも1文字ないと使えない。例: これが含まれると、最初
の桁で "y0" を行うとエラーになる。
cpo-f
f これが含まれると、カレントバッファにファイル名がまだ設
定されていないなら、":read" にファイル名の引数を与えた
とき、そのファイル名をカレントバッファのファイル名に設
定する。
cpo-F
F これが含まれると、カレントバッファにファイル名がまだ設
定されていないなら、":write" にファイル名の引数を与え
たとき、そのファイル名をカレントバッファのファイル名に
設定する。cpo-Pも参照。
cpo-g
g ":edit" を引数なしで使うと1行目に移動する。
cpo-H
H 空白のみを含む行の上で "I" を使ったとき、最後の空白の
前から挿入する。このフラグが含まれていないと、最後の空
白の後から挿入を開始する。
cpo-i
i これが含まれると、ファイルの読み込み中に中断が起きたと
き、ファイルは変更されたままになる。
cpo-I
I 'autoindent' によるインデントが挿入された直後にカーソ
ルを上下に移動したときインデントを削除しない。
cpo-j
j 行の連結時に追加する空白が、'.' の後のみ2個になり、'!'
や '?' の後は1個になる。'joinspaces' も参照。
cpo-J
J 文 sentence は '.', '!' または '?' の後に2個の空白を
伴わなければならない。<Tab> は空白とは見なされない。
cpo-k
k ":menu" で実行される部分や、キーマッピングや略語におい
て、直接入力されたキーコードを認識しない。例えば、
<Key> が ^[OA を送るなら (ここで ^[ は <Esc> )、
":map X ^[OA" で X がマップされるのは、
'k' が含まれたとき: "^[OA" (3個の文字)
'k' が除かれたとき: "<Key>" (1個のキーコード)
下の '<' も参照。
cpo-K
K キーマッピングの途中で、キーコードが完全に入力されるの
を待たない。<F1><F1> のマッピングは、2 番目の <F1> の
一部のみが読み込まれた場合、動作しなくなる。こうすると
<F1><Esc> と打ち込めばマッピングをキャンセルできる。
cpo-l
l 検索パターンの [] 範囲内で、'\' は文字通りに解釈され、
"\]", "\^", "\\" だけが特別な意味を持つ。/[] を参照。
'l' が含まれたとき:
"/[ \t]" がマッチするのは <Space>, '\' と 't'
'l' が除かれたとき:
"/[ \t]" がマッチするのは <Space> と <Tab>
cpo-\も参照。
cpo-L
L 'list' がオンのとき、'wrapmargin', 'textwidth',
'softtabstop' と仮想置換モード (gR を参照) で、<Tab>
の普通の数え方をせず、必ず 2 文字に数える。
cpo-m
m これが含まれると、対応する括弧の表示を0.5秒待つ。含ま
れていないと、対応する括弧の表示を0.5秒または次の文字
が打ち込まれるまで待つ。'showmatch' を参照。
cpo-M
M これが含まれていない場合、"%" での括弧の対応にバックス
ラッシュを考慮に入れる。すなわち "( \( )" や "\( ( \)"
で外側の括弧同士が対応するようになる。含まれている場
合、"%" はVi互換になり、バックスラッシュは無視される。
cpo-n
n これが含まれているときは折り返された行のテキストの表示
に 'number' と 'relativenumber' によって行番号表示され
ている列も使用される。
cpo-o
o 検索コマンドの行オフセットは、次回の検索には使われない。
cpo-O
O ファイルが上書きされたとき、編集を始めたときにはそのファ
イルが存在しなかった場合でも警告しない。これは別人に突
然作り出されたファイルに対する防御である。Viはこれに警
告を出さなかった。
cpo-p
p Vi互換のLisp用インデント。これが含まれないと、いくらか
良いアルゴリズムが使われる。
cpo-P
P これとフラグ 'F' が同時に含まれていると、コマンド
":write" で既存のファイルに追加するとき、カレントバッ
ファの名前がまだないならそのファイルの名前をカレント
バッファの名前にする。cpo-F
cpo-q
q 複数の行を連結するとき、2行を連結するときと同じ位置に
カーソルを置く。
cpo-r
r リドゥ (コマンド ".") で検索を繰り返すとき、実際には
"/" を使う。
cpo-R
R フィルタされた行のマークを除去する。このフラグが入って
いないと、:keepmarksを使ったときと同じようにフラグは
そのまま保たれる。
cpo-s
s バッファが初めてアクティブになる時点でバッファのオプショ
ンが設定される。これは Vim version 3.0 と同じ動作であ
る。そして既定ではこの動作を行う。これが含まれないと、
オプションはバッファが作られた時点で設定される。
cpo-S
S バッファのオプションを常にバッファに移動する時点で設定
する ('readonly', 'fileformat', 'filetype' と 'syntax'
以外)。これは (ほとんど) Vi互換の設定である。
オプションの値は元のカレントバッファでの値になる。ユー
ザーがオプションを変更し、その後で別のバッファに移ると、
その値はコピーされる。事実上、バッファオプションを全て
のバッファに対しグローバルにしている。
's' 'S' バッファのオプションをコピーするタイミング
オフ オフ バッファが作られた時点
オン オフ バッファが初めてアクティブになった時点 (既定)
なし オン バッファに移動するたび (Vi互換)
cpo-t
t タグコマンドの検索パターンが "n" による検索の繰り返し
にも使われる。これが含まれないと、検索パターンの履歴に
は加えられるが、最終検索パターンは変化しない。
cpo-u
u アンドゥがVi互換になる。undo-two-ways を参照。
cpo-v
v 挿入モードにおいて、バックスペースで消した文字を画面上
に表示したままにしておく。このフラグが入っていないと、
消された文字はすぐに画面から消える。このフラグが入って
いると、新しく入力された文字がバックスペースで消された
文字を上書きする。
cpo-w
w 空白の上で "cw" を使ったとき、1文字だけ変更して、次の
単語の始まりまでの空白は変更しない。
cpo-W
W 読み込み専用ファイルを上書きしない。これが含まれないと、
可能であれば ":w!" で読み込み専用ファイルも上書きでき
る。
cpo-x
x コマンドラインで <Esc> を打ち込むとコマンドを実行する。
Vimでの既定ではコマンドライン入力を中止して元のモード
に戻る。それは <Esc> は普通はコマンドの中止に使われる
からである。c_<Esc> を参照。
cpo-X
X "R" でカウントを指定したとき、置換されるテキストが一度
だけ削除される。カウントをつけた "." で "R" を繰り返し
たときも同じ。
cpo-y
y コピーコマンドを "." でリドゥできる。本当にこれを使い
たいのであれば、2度考えること。いくつかのプラグインを
壊すかもしれない。ほとんどの人が、"." が変更を繰り返す
ことを期待しているからである。
cpo-Z
Z オプション 'readonly' がオンになっているのに "w!" をし
たとき 'readonly' をオフにしない。
cpo-z
z "cw" および "d" コマンドの特殊ケース (cw および
d-special を参照)。
cpo-!
! フィルタコマンドをリドゥするとき、何であってもとにかく
最後に実行された外部コマンドを使う。これが含まれないと、
最後に実行された「フィルタ」コマンドが使われる。
cpo-$
$ 1行に対して変更をするとき、行を再描画せず、代わりに変
更されたテキストの最後に '$' を表示する。変更されたテ
キストはユーザーが新しいテキストを入力したときに上書き
される。その行はユーザーがカーソルを挿入点から動かすコ
マンドを入力したときに再描画される。
cpo-%
% "%" でVi互換の対応検索が行われる。
"#if", "#endif" などを認識しない。
"/*" と "*/" も認識しない。
単引用符 ''' または二重引用符 '"' の内部の括弧も数えら
れる。すると括弧を含む文字列が対応を乱すことになる。例
えば、"if (strcmp("foo(", s))" などでは最初の括弧と最
後の括弧はマッチしない。これが含まれないと、単引用符ま
たは二重引用符の内部の括弧は特別な扱いを受ける。引用符
の外部の括弧の対応を調べるときは、引用符の内部は一切無
視される。引用符の内部の括弧の対応を調べるときは、対応
する括弧を探す (存在すれば)。これはC言語プログラムでは
とても良く機能する。
このフラグはCインデントなど他の機能にも使われる。
cpo--
- これが含まれていると最初の行や最後の行を越えるような上
下移動コマンドは失敗する。含まれているとカーソルが最初
の行または最後の行に移動する(既にカーソルがその行にな
いかぎり)。
コマンド "-", "k", CTRL-P, "+", "j", CTRL-N, CTRL-J,
":1234" に適用される。
{訳注: 2行目で3kしたとき、これが含まれているならカーソ
ルは移動しない。含まれていないなら1行目へ移動する}
cpo-+
+ これが含まれていると、":write file" をしたとき、まだそ
のバッファが対応するファイルと異なっていても、そのバッ
ファのフラグ 'modified' がオフになる。
cpo-star
* ":*" を ":@" と同じように扱う。これが含まれないと、
":*" は ":'<,'>" の別名となり、ビジュアルエリアを選択
する。
cpo-<
< ":menu" で実行される部分や、キーマッピングや略語におい
て、<> 記法による特殊キーの認識を行わない。例えば、
":map X <Tab>" で X がマップされるのは、
'<' が含まれたとき: "<Tab>" (5個の文字)
'<' が除かれたとき: "^I" (^I は本当の <Tab>)
上の 'k' も参照。
cpo->
> レジスタにテキスト追加するとき、そのテキストの前に改行
文字をつける。
cpo-;
; , や ; で最後の t 検索を繰り返すとき、カーソルの
位置が検索文字の一つ手前であればカーソルを移動しない。
フラグが含まれていない場合は、カーソルはその文字を飛び
越えて次の場所にジャンプする。
次のものはPOSIXフラグである。起動時に$VIM_POSIXがセットされていない限
り、これらはViの既定値には含まれない。posix
フラグ 動作
cpo-#
# "D", "o", "O" に対するカウントは効果がない。
cpo-&
& ":preserve" が使われたとき通常終了時にバッファはまだ読
み込まれているが、スワップファイルを保存する。このフラ
グはVimの終了時に判定される。
cpo-\
\ 検索パターンの範囲[]の中のバックスラッシュが文字どおり
に解釈される。"\]" だけがエスケープになる。/[]を参照。
'\' が含まれていると "/[ \-]" は<Space>, '\', '-' に
マッチする。'\' が含まれていないと "/[ \-]" は<Space>,
'-' にマッチする。
cpo-lも参照。
cpo-/
/ コマンド:sの置換後文字列に "%" を指定したとき、前回の
置換後文字列を使う。:s%を参照。
cpo-{
{ コマンド{と}が行頭の文字 "{" にも止まる。
cpo-.
. カレントバッファが変更されているとき、"!" をつけないか
ぎりコマンド ":chdir" と ":cd" が失敗する。Vimは開いた
ファイルのフルパスを覚えているため、これを必要としな
い。
cpo-bar
| 環境変数$LINESと$COLUMNSの値をシステム固有の関数で得ら
れたターミナルサイズより優先させる。
'cryptmethod' 'cm'
'cryptmethod' 'cm' 文字列 (既定では "blowfish2")
グローバル/バッファについてローカル global-local
バッファをファイルに保存するときに使用される暗号化メソッドを設定する:
pkzip
zip PkZip 互換メソッド。弱い暗号化。
Vim 7.2 以前との後方互換。
後方互換性が必要な場合のみ使用すること。
blowfish
blowfish Blowfish メソッド。中強度の暗号化だが実装上の脆弱性が
ある。Vim 7.3 以降が必要。このメソッドで保存された
ファイルは Vim 7.2 以前のバージョンでは開くことができ
ない。ファイルには "seed" が付加されるのでファイルを書
き込むたびに暗号化されたバイト列は異なる。
廃れたので、今後は使用しないこと。
blowfish2
blowfish2 Blowfish メソッド。中強度の暗号化。Vim 7.4.401 以降が
必要。このメソッドで保存されたファイルは Vim 7.3 以前
のバージョンでは開くことができない。ファイルには
"seed" が付加されるのでファイルを書き込むたびに暗号化
されたバイト列は異なる。undo ファイルは (テキスト部分
だけではなく) 全体が暗号化される。
E1193 E1194 E1195 E1196 E1230
E1197 E1198 E1199 E1200 E1201
xchacha20 XChaCha20 暗号と Poly1305 メッセージ認証符号。中から強
強度の暗号化。
暗号処理は libsodium ライブラリによって提供され、Vim
が +sodium 付きでビルドされる必要がある。
ファイルにシード値とメッセージ認証符号(MAC)を加える。
暗号化されたファイルを読むには最低でも Vim 8.2.3022 が
必要になる。
スワップファイルの暗号化はサポートされないため、
xchacha20 暗号化が有効なときはスワップファイルは使われ
ない。
アンドゥファイルの暗号化はまだサポートされていないた
め、アンドゥファイルは現在は書き込まれない。
注意: この方法で書き込まれたファイルは、バイナリ形式が
後で変更された場合、同じバージョンの Vim で読み戻す必
要があるかもしれない。
廃れたので、今後は使用しないこと。
xchacha20v2 "xchacha20" と同じアルゴリズムで、暗号化ファイルととも
に鍵導出パラメータを正しく保存する。libsodium ライブラ
リのパラメータが変更された場合に、よりうまく動作するは
ずである。
まだ実験的: この方法で書かれたファイルは、後でバイナリ
フォーマットが変更された場合、同じバージョンの Vim で
読み返さなければならないかもしれない。
古いファイルを再度暗号化する時も "blowfish2" を使うべきである。
"xchacha20" メソッドはより優れた暗号化を提供するが、Vim のすべてのバー
ジョンで機能するわけではない。
暗号化されたファイルを読み込んだとき、'cryptmethod' は自動的にそのファ
イルに使用されている暗号メソッドに設定される。つまり、そのまま
'cryptmethod' を変更せずにファイルを保存すれば同じメソッドが使用され
る。
'cryptmethod' の設定を変更してもファイルは変更あり状態にはならない。設
定変更を有効にするにはファイルを保存する必要がある。もし他に変更がなけ
れば保存せずに終了したとしても警告は表示されない。 :X 参照。
グローバル設定を空文字に設定すると "blowfish2" が使用される。ローカル
設定を空文字に設定するとグローバル設定が使用される。
Vim の将来のバージョンに新しい暗号化メソッドが追加され、現在の Vim が
それを認識できないときは E821 エラーが表示される。
そのファイルは新しいバージョンの Vim で開く必要がある。
'cscopepathcomp' 'cspc'
'cscopepathcomp' 'cspc' 数値 (既定では 0)
グローバル
{+cscope 機能付きでコンパイルされたときのみ有効}
タグのリストの中でパスを {訳注: 上にさかのぼって} どこまで表示するかを
指定する。cscopepathcomp を参照。
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
'cscopeprg' 'csprg'
'cscopeprg' 'csprg' 文字列 (既定では "cscope")
グローバル
{+cscope 機能付きでコンパイルされたときのみ有効}
Cscope を実行するコマンド名を指定する。cscopeprg を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'cscopequickfix' 'csqf'
'cscopequickfix' 'csqf' 文字列 (既定では "")
グローバル
{+cscope または +quickfix 機能つきでコンパイルされ
たときのみ利用可能}
cscopeの結果を表示するのにQuickFixウィンドウを使うかどうかを指定する。
cscopequickfixを参照。
'cscoperelative' 'csre' 'nocscoperelative' 'nocsre'
'cscoperelative' 'csre' 切替 (既定ではオフ)
グローバル
{+cscope機能つきでコンパイルされたときのみ利用可能}
cscope のプリフィックス (-P) がないとき、このオプションをオンに設定す
ると、cscope.out が保存されているディレクトリがプリフィックスとして使
われる。
cscoperelative 参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'cscopetag' 'cst' 'nocscopetag' 'nocst'
'cscopetag' 'cst' 切替 (既定ではオフ)
グローバル
{+cscope機能つきでコンパイルされたときのみ有効}
コマンドtagにcscopeを使う。cscope-optionsを参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'cscopetagorder' 'csto'
'cscopetagorder' 'csto' 数値 (既定では 0)
グローバル
{+cscope 機能付きでコンパイルされたときのみ有効}
コマンド ":cstag" が検索を行う順番を指定する。cscopetagorder を参照。
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
'cscopeverbose' 'csverb'
'nocscopeverbose' 'nocsverb'
'cscopeverbose' 'csverb' 切替 (既定ではオフ)
グローバル
{+cscope 機能付きでコンパイルされたときのみ有効}
Cscope のデータベースに情報を追加するときメッセージを表示する。
cscopeverbose を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'cursorbind' 'crb' 'nocursorbind' 'nocrb'
'cursorbind' 'crb' 切替 (既定ではオフ)
ウィンドウについてローカル
このオプションをオンにすると、現在のウィンドウでカーソルを動かしたとき
に、他のウィンドウ ('cursorbind' オプションが設定されたウィンドウ) 内
のカーソルも同じ行と列に移動する。このオプションはバージョン違いのファ
イルの差を見るときに便利である ('diff' 参照)。差分モードでは追加または
削除された行 (行に文字がなくても) のみが考慮される。
'cursorcolumn' 'cuc' 'nocursorcolumn' 'nocuc'
'cursorcolumn' 'cuc' 切替 (既定ではオフ)
ウィンドウについてローカル
{+syntax機能つきでコンパイルされたときのみ有効}
カーソルのある画面上の桁をCursorColumnで強調するhl-CursorColumn。
テキストを桁揃えするのに便利。スクリーンの再描画が遅くなる。
カレントウィンドウに対してだけこの強調をしたいなら次の自動コマンドを使
う:
'cursorline' 'cul' 'nocursorline' 'nocul'
'cursorline' 'cul' 切替 (既定ではオフ)
ウィンドウについてローカル
{+syntax 機能つきでコンパイルされたときのみ有効}
カーソルがあるテキスト行を CursorLine hl-CursorLine で強調する。
カーソルを目立たせるのに便利である。スクリーンの再描画が遅くなる。
ビジュアルモードでは選択されたテキストをわかりやすくするためにこの強調
は行われない。
'cursorlineopt' 'culopt'
'cursorlineopt' 'culopt' 文字列 (既定では "number,line")
ウィンドウについてローカル
{+syntax 機能つきでコンパイルされたときのみ有効}
'cursorline' の表示方法の設定のコンマ区切りのリスト。
有効な値:
"line" CursorLine hl-CursorLine でカーソルのテキスト行を強
調表示する。
"screenline" CursorLine hl-CursorLine を使用して、カーソルの画面
行のみを強調表示する。
"number" CursorLineNr hl-CursorLineNr でカーソルの行番号を強
調表示する。
特別な値:
"both" 値 "line,number" のエイリアス。
"line" と "screenline" を一緒に使用することはできない。
'debug'
'debug' 文字列 (既定では "")
グローバル
以下の値を指定することができる:
msg 省かれるはずのエラーメッセージも表示する。
throw 省かれるはずのエラーメッセージも表示し、さらに例外を投げ、
v:errmsgを設定する。
beep ビープが鳴るだけのところでメッセージを表示する。
これらの値はコンマで区切って組み合わせることができる。
"msg" と "throw" はオプション 'foldexpr' や 'formatexpr', 'indentexpr'
をデバッグするのに便利である。
'define' 'def'
'define' 'def' 文字列 (既定では "^\s*#\s*define")
グローバル/バッファについてローカル global-local
マクロ定義を発見するのに使われるパターンを指定する。値はコマンド "/"
で使うのと同様の検索パターンである。このオプションは "[i" や "[d" 等に
使われる include-search。オプション 'isident' は、これがマッチした部
分の後の定義された名前を認識するのに使われる。
{'define' のマッチ}{非識別子}{定義名}{非識別子}
値に空白や '\' を含めるために '\' を挿入することに関しては、
option-backslash を参照。
既定値はCプログラム用である。C++プログラムには、定数定義を加えて次のよ
うにすると便利だろう:
こともできる。Javascript の例、関数が "func_name = function(args)" で
定義されている場合:
これを回避するには、:let とシングルクォートの文字列を使用する:
'delcombine' 'deco' 'nodelcombine' 'nodeco'
'delcombine' 'deco' 切替 (既定ではオフ)
グローバル
オンのときは、Unicodeのファイルの編集時、バックスペースとノーマルモー
ドのコマンド "x" はそれぞれの文字の上の combining character のみを削除
する。オフのときは (これが既定である) combining character と文字は同時
に削除される。
Note: 'delcombine' がオンになっていると "xx" が "2x" と異った動作をす
る場合がある。
このオプションは、アラビア語、ヘブライ語その他の言語で、ベースとなる文
字の上にcombining character が付いていて、combining character のみを削
除したいときに便利である。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'dictionary' 'dict'
'dictionary' 'dict' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
ファイル名のコンマ区切りのリスト。キーワード補完コマンド
i_CTRL-X_CTRL-K 用の単語を探すために使われる。単語のリストからなるファ
イルを指定する。その中では1行ごとに1語が並べられていてもよいし、1行に
キーワードでない文字 (空白を推奨) で区切られた数語が並んでいてもよい。
1行の文字数の最大値は510バイト分である {訳注: 日本語のいわゆる全角文字
では半分の255文字}。
このオプションが空もしくはエントリに "spell" が含まれていて、かつスペ
ルチェックが有効になっているとき、現在アクティブな 'spelllang' 用の単
語リスト内の単語が使われる。spell を参照。
ファイル名にコンマを含めるには、コンマの前に '\' を置くこと。コンマの
後ろの空白は無視されるが、それ以外の空白はファイル名の一部として扱われ
る。'\' の使い方については option-backslash を参照すること。
このオプションは変数の辞書型Dictionaryとは関係ない。
単語リストはどこで見つかるか?
- FreeBSDでは、"/usr/share/dict/words" というファイルがある。
- Simtelアーカイブでは、ディレクトリ "msdos/linguist" を探すこと。
- GNUコレクションでは、"miscfiles" の中にある。
リストにディレクトリを追加するときには :set+= コマンド、リストからディ
レクトリを除くときには :set-= コマンドを使うのがよい。こうすると将来
のバージョンで異なった既定値が使われるようになったときに、問題が起きる
のを防げる。
セキュリティ上の理由から、バッククォート (`) をこのオプションの値に使
うことはできない。
'diff' 'nodiff'
'diff' 切替 (既定ではオフ)
ウィンドウについてローカル
{+diff 機能付きでコンパイルされたときのみ有効}
カレントウィンドウをファイル間の差異を示すウィンドウのグループに組み入
れる。vimdiff を参照。
'dex' 'diffexpr'
'diffexpr' 'dex' 文字列 (既定では "")
グローバル
{+diff 機能付きでコンパイルされたときのみ有効}
2個のファイル間の差異を求めるとき、diffファイル(ed形式かunified形式)を
求めるために評価される expression。diff-diffexpr を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'dip' 'diffopt'
'diffopt' 'dip' 文字列 (既定では "internal,filler,closeoff")
グローバル
{+diff 機能付きでコンパイルされたときのみ有効}
差分モード用のオプション設定。値は、以下のキーワードのコンマ区切りのリ
ストである。指定しないものがあってもよい。
filler 片方のウィンドウ内のテキストのある位置に行が挿
入されていたときに、ウィンドウのスクロールを同
期させるために、埋め立て用の行を表示する。ウィ
ンドウが隣り合っていて、オプション
'scrollbind' がオンのときには大抵便利である。
context:{n} 変更のあった行の上下を {n} 行だけ折り畳まずに
表示 (コンテキストの表示) する。指定されないと、
コンテキストは6行になる。
0を使用する場合、折り畳みは削除された行につい
てもその間に行を必要とするので、コンテキストは
実際には1である。折り畳みを完全に無効にするに
は、非常に大きな値 (999999) に設定する。
fold-diff を参照。
iblank 行がすべて空白の場合は変更を無視する。
'diffexpr' が空の場合、"diff" コマンドに "-B"
フラグを追加する。これが正確に何をするかについ
ては、"diff" コマンドのドキュメントをチェック
すること。
NOTE: 空白行の違いは考慮されてないため、差分
ウィンドウは同期しなくなる。
icase テキストの大文字と小文字の違いを無視する。"a"
と "A" は同じものと見なされる。オプション
'diffexpr' が空なら、コマンド "diff" にフラグ
"-i" を追加する。
iwhite 空白の数の違いを無視する。オプション
'diffexpr' が空なら、コマンド "diff" にフラグ
"-b" を追加する。これが正確には何を指定してい
るのかについては、コマンド "diff" のドキュメン
トを参照すること。これは後ろに追加された空白は
無視するが、前に追加された空白は無視しないはず
である。
iwhiteall 空白の変更をすべて無視する。'diffexpr' が空の
場合、"diff" コマンドに "-w" フラグを追加する。
これが正確に何をするかについては、"diff" コマ
ンドのドキュメントをチェックすること。
iwhiteeol 行末での空白の変更を無視する。'diffexpr' が空
の場合、"diff" コマンドに "-Z" フラグを追加す
る。これが正確に何をするかについては、"diff"
コマンドのドキュメントをチェックすること。
horizontal (他に明示的に指定されない限り)ウィンドウを水平
分割して差分モードを開始する。
vertical (他に明示的に指定されない限り)ウィンドウを垂直
分割して差分モードを開始する。
closeoff 'diff' が設定されたウィンドウが閉じられ、同じ
タブページに 'diff' が設定されたウィンドウが
1 つだけ残っているとき、そのウィンドウで
:diffoff を実行する。これは :diffsplit コ
マンドを取り消す。
hiddenoff バッファが隠れバッファになるときに差分モードを
使用しない。
foldcolumn:{n} 差分モードの開始時にオプション 'foldcolumn' を
{n}に設定する。
followwrap 'wrap' オプションにそのまま従う。
internal 内部diffライブラリを使用する。'diffexpr' が設
定されている場合は無視される。 E960
バッファを書き込むときにメモリが不足すると、こ
の項目はそのバッファに関連する差分に対して無視
される。これがいつ発生するかを確認するために
'verbose' オプションを設定すること。
indent-heuristic
内部diffライブラリのインデントヒューリスティッ
クを使用する。
algorithm:{text} 指定した差分アルゴリズムを内部diffエンジンで
使用する。現在サポートされているアルゴリズムは:
myers デフォルトのアルゴリズム
minimal 可能な限り小さな差分を生成するため
に余分な時間を費やす
patience patience差分アルゴリズム
histogram histogram差分アルゴリズム
例:
'digraph' 'dg' 'nodigraph' 'nodg'
'digraph' 'dg' 切替 (既定ではオフ)
グローバル
{+digraphs 機能付きでコンパイルされたときのみ有効}
挿入モードで {char1} <BS> {char2} でダイグラフを入力できるようにする。
digraphs を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'directory' 'dir'
'directory' 'dir' 文字列 (Amigaでの既定値: ".,t:",
Win32での既定値: ".,$TEMP,c:\tmp,c:\temp"
Unixでの既定値: ".,~/tmp,/var/tmp,/tmp")
グローバル
スワップファイル用ディレクトリの、コンマ区切りのリスト。
推奨値: ".,~/vimswap//" - これは可能な場合は編集したファイルの隣にス
ワップファイルが置かれ、そうでないならあなたの個人スワップディレクトリ
に置かれる。"~/vimswap//" はあなただけが読み込み可能にしておくこと。
可能な項目:
- スワップファイルは、リスト内の利用できるディレクトリのうち、最初のディ
レクトリの中に作られる。
- 値が空だとスワップファイルは作られず (回復は不可能になる!)、E303
エラーは発生しない。
- ディレクトリに "." を指定すると、編集されているファイルと同じディレ
クトリにスワップファイルが作られる。Unixではファイル名の先頭にドット
が追加されるので、ディレクトリ内のファイル一覧には表示されない。
MS-Windowsでは属性 "hidden" が設定され、可能ならばファイル名の先頭に
ドットが追加される。
- "./" で始まるディレクトリ (MS-Windowsでは ".\") を指定すると、編集さ
れているファイルからの相対的な位置にスワップファイルが作られる。先頭
の "." は編集されているファイルのパス名に置換される。
- UnixとWin32では、指定されたディレクトリ名の末尾がディレクトリの区切
り記号2個 ("//") で終わっていたら、スワップファイルの名前はフルパス
に従って付けられる。スワップファイルのファイル名をフルパス形式で表
し、ディレクトリの区切り文字 (Win32ではドライブレターのコロンを含む)
をパーセント記号 '%' で置き換えたものが使われる。こうするとスワップ
ファイル格納用ディレクトリの中でもファイル名の一意性が保証される。
Win32では、"\\" で終わることも可能である。ただし、区切り文字のコンマ
の前では "\\" でなく "//" と書かなければならない。"\\" と書くと、コ
ンマがファイル名の一部と解釈されてしまうためである。したがって、'\\'
の代わりに '//' を使用することを勧める。
- コンマの後の空白は無視されるが、その他の場所の空白はディレクトリ名の
一部と見なされる。ディレクトリ名の先頭に空白を指定したいなら、'\' を
前に付けること。
- コンマをディレクトリ名の一部に使いたいなら、コンマの前に '\' を付け
ること。
- ディレクトリ名は ':' や '/' で終わっていてもよい。
- 環境変数は展開される :set_env。
- '\' の扱いには注意。空白の前には1個置く。値の中に指定するには2個置く
(option-backslash を参照)。例:
は無視される。
リストの先頭には "." を指定することを推奨する。こうすると、同じファイ
ルを2重に編集しようとすると警告が出る。Unixでディレクトリ "/tmp" を使
うのはお勧めできない。システムがクラッシュすると、スワップファイルも失
われてしまう。ディレクトリ "/var/tmp" の中はリブート時にも大抵クリアさ
れないので、ディレクトリ "/tmp" よりもよい選択である。しかしコンピュー
タの他の人からファイルを見ることができてしまうかもしれない上に、その中
には多くのファイルが入っているかもしれないので、ユーザーのスワップファ
イルは他のファイルに紛れて分からなくなるかもしれない。ユーザーのホーム
ディレクトリ内のディレクトリ "tmp" が最初に試されるのはそのためだ。
リストにディレクトリを追加するときにはコマンド :set+=、リストからディ
レクトリを除くときにはコマンド :set-= を使うのがよい。こうすると将来
のバージョンで異なった既定値が使われるようになったときに、問題が起きる
のを防げる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'display' 'dy'
'display' 'dy' 文字列 (既定では ""、defaults.vim 内で "truncate"
にセットされる)
グローバル
テキスト表示の方法を変える。値は以下のフラグのコンマ区切りのリストであ
る:
lastline これが含まれると、ウィンドウの最後の行ができる限りまで
表示される。その行に表示されていない箇所があることを示
すために、画面の最後の行の最後の桁に "@@@" が表示され
る。
truncate "lastline" に似ているが、"@@@" は画面の最後の行の最初
の桁に表示される。"lastline" を上書きする。
uhex unprintable な文字を {訳注: 文書先頭を参照} <xx> とい
う形式で16進数表示し、^C や ~C の形式を使わない。
"lastline" も "truncate" も含まれていない時、収まらない最後の行は "@"
に置き換えられる。
"@" 文字は 'fillchars' の "lastline" 項目で変更できる。この文字は
hl-NonText でハイライトされる。
'eadirection' 'ead'
'eadirection' 'ead' 文字列 (既定では "both")
グローバル
オプション 'equalalways' が適用されるときに、
ver ウィンドウの高さにのみ効果がある
hor ウィンドウの幅にのみ効果がある
both ウィンドウの高さと幅、両方に効果がある
'ed' 'edcompatible' 'noed' 'noedcompatible'
'edcompatible' 'ed' 切替 (既定ではオフ)
グローバル
コマンド ":substitute" のフラグ 'g' と 'c' を、次に別の方を指定するま
でずっと効力を持つようにする。complex-change を参照。オプション
'gdefault' も参照。
このオプションをオンに設定するとプラグインを壊すかもしれない!
このオプションは Vim9 script では利用されない。
'emoji' 'emo' 'noemoji' 'noemo'
'emoji' 'emo' 切替 (既定ではオン)
グローバル
オンにすると全ての Unicode 絵文字は全角とみなされる。
これは通常の表示として半角幅になる "テキストemoji" は除外される。残念
ながら、これに関する適切な仕様がない。そしてこれは試行錯誤に基づいて決
定された。setcellwidths() 関数を使うことでこの挙動を変更できる。
'encoding' 'enc' E543
'encoding' 'enc' 文字列 (MS-Windowsでの既定値: "utf-8",
他の既定値: $LANG または "latin1")
グローバル
Vim内部で使われる文字エンコーディングを設定する。そのエンコーディング
はバッファやレジスタ内のテキスト、expression 内の文字列、ファイル
viminfo 内のテキスト等に適用される。つまり、このオプションはVimの通常
扱う文字の種類を設定する。指定できる値については encoding-names を参
照。
NOTE: このオプションの値を変更しても、Vim内部の既存のテキストのエンコー
ディングは変化しないので注意。非ASCII文字がおかしくなる恐れもある。既
定の値から変更しないか、Vimの起動時に限って設定すること。multibyteを
参照。メニューを再読み込みするには:menutransを参照。
このオプションはモードライン (modeline) では設定できない。テキストが
壊れてしまうため。
NOTE: GTK+ 2またはそれ以降では 'encoding' を "utf-8" に設定することが
強く推奨される。他の値であってもよいが、この環境では "utf-8" が自然な
選択であり、不必要な変換のオーバーヘッドを避けることができる。GUIやター
ミナルのバージョンによって挙動が異なってしまうのを避けるためと、新しく
作られたファイルのエンコーディングが知らないうちに変わってしまうのを避
けるため('fileencodings' が空の場合)、"utf-8" は既定にはなっていない。
編集するファイルの文字エンコーディングはオプション 'encoding' と異なっ
てもよい。そちらは 'fileencoding' で設定される。エンコーディングの変換
は関数 iconv() または 'charconvert' で指定された式による。
'encoding' がマルチバイトエンコーディングであるかを知るに
は、以下のコマンドが使える:
普通、'encoding' はユーザーのカレントロケールと同じである。Vimがユー
ザーの環境設定を認識したならば、それが既定値になる。'encoding' の値が
カレントロケールに設定されていなければ、入力されたテキストと表示される
テキストを変換するために、'termencoding' が設定されていなければならな
い。encoding-table を参照。
このオプションを設定すると、必要に応じてフォントを設定できるように、
autocommand のイベント EncodingChanged が発生する。
オプションが設定されると、値は小文字に変換される。そのため、値を大文字
で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。
エンコーディングが認識されると、値は標準の名前に変換される。例えば
"Latin-1" は "latin1" に、"ISO_88592" は "iso-8859-2" に、"utf8" は
"utf-8" になる。
Note: "latin1" という値は、エンコーディングを判別できなかったときにも
使われるので注意。これが正しいのは、編集するファイルが実際に latin1 エ
ンコーディングのときのみである!実際の文字セットが latin1 でないときは、
'fileencoding' と 'fileencodings' が空であるのを確認すること。変換が必
要なときは、utf-8 を使うようにすること。
値が "unicode", "ucs-2" または "ucs-4" であるとき、Vim内部では utf-8
が使われている。このことはユーザーが編集中に注意を払うことはないが、
viminfo-file については問題になる。またVimはターミナルも utf-8 を使
うことを想定する。そのため、'encoding' を utf-8 でなく上記のいずれかの
値に設定しても、'fileencoding' が空のときに編集するファイルのエンコー
ディングにしか影響がない。
'encoding' が Unicode の一種に設定され、'fileencodings' がまだ設定され
ていなければ、'fileencodings' の既定値は変更される。
'endoffile' 'eof' 'noendoffile' 'noeof'
'endoffile' 'eof' 切替 (既定ではオン)
バッファについてローカル
ファイル読み込み時に、ファイルの最後に CTRL-Z 文字が見つかったことを示
す。通常、'fileformat' が "dos" の場合にのみ発生する。このオプションが
オフで 'binary' オプションがオン、または 'fixeol' オプションがオフの
ファイルを書き込む場合、ファイルの末尾に CTRL-Z は書き込まれない。
設定例については eol-and-eof を参照。
'endofline' 'eol' 'noendofline' 'noeol'
'endofline' 'eol' 切替 (既定ではオン)
バッファについてローカル
ファイルを書き込むときに、このオプションがオフでオプション 'binary' が
オンあるいはオプション 'fixeol' がオフに設定されている場合は、ファイル
の最終行に <EOL> が書き込まれない。このオプションはファイルの編集を始
める時に、ファイルが <EOL> を持っているかどうかによって自動的にオンま
たはリセットされる。普通はユーザーがこのオプションを設定する必要はな
い。
'binary' がオフで 'fixeol' がオンのとき、このオプションの値はファイル
書き込み時に使用されない。{訳注: 必ず最終行に <EOL> が書き込まれる。}
'binary' がオンもしくは 'fixeol' がオフの時は最終行の <EOL> の状態を維
持する為にこのオプションが使用される。これはファイルが書き込まれる際
に、<EOL> の有無を元のファイルのままにするといったシチュエーションを想
定している。しかし <EOL> の有無を現状から変えたい場合には、このオプ
ションを変更することで実現できる。
設定例については eol-and-eof を参照。
'equalalways' 'ea' 'noequalalways' 'noea'
'equalalways' 'ea' 切替 (既定ではオン)
グローバル
オンのときは、ウィンドウを分割したり閉じたりした後、全てのウィンドウが
自動的に同じサイズになる。これはこのオプションがオフになった瞬間にも起
こる。オフのときは、ウィンドウを分割するとカレントウィンドウのサイズだ
けが減り、他のウィンドウに変化はない。ウィンドウを閉じると、
('splitbelow' と 'splitright' に従って) 閉じたウィンドウの隣のウィンド
ウの行数が増す。
水平に分割されたウィンドウと垂直に分割されたウィンドウが混在していると
きは、サイズの最小値が計算され、いくつかのウィンドウは (余裕があれば)
大きくなる。'eadirection' はサイズの変化する方向を指定する。
'winfixheight', 'winfixwidth' を設定するとウィンドウの高さ・幅が変わる
のを防ぐことができる。
新規ウィンドウ作成時にウィンドウサイズが指定された場合、ウィンドウサイ
ズは等しくならない(これは複雑だが、将来は実装されるかもしれない)。
'equalprg' 'ep'
'equalprg' 'ep' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
コマンド "=" に使う外部プログラムを指定する。値が空のときは内部関数が
整形に使われる (オプション 'lisp', 'cindent' または 'indentexpr')。
Vim が内部フォーマットなしでコンパイルされているときは indent コマン
ドが使われる。
環境変数は展開される :set_env。値に空白や '\' を含める方法については
option-backslash を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'errorbells' 'eb' 'noerrorbells' 'noeb'
'errorbells' 'eb' 切替 (既定ではオフ)
グローバル
エラーメッセージに伴ってベル (ビープ音または画面フラッシュ) を発生させ
る。このオプションはエラーメッセージにのみ適用され、メッセージのない多
くのエラー (例えばノーマルモードで <ESC> を打ち込んだとき) については
ベルは常に使用される。ベルをビープ音にしたり、画面フラッシュにしたり、
無効にしたりするためには、オプション 'visualbell' を参照。ベルを鳴らす
条件を微調整するには 'belloff' を参照。
'errorfile' 'ef'
'errorfile' 'ef' 文字列 (Amigaでの既定値: "AztecC.Err",
他の既定値: "errors.err")
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
QuickFixモードで使われるエラーファイルの名前 (:cf を参照)。
コマンドライン引数 "-q" が指定されたときは、オプション 'errorfile' は
それに続く値に設定される。-q を参照。
コマンド ":make" には「使われない」。それについては 'makeef' を参照。
環境変数は展開される :set_env。値に空白や '\' を含める方法については
option-backslash を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'errorformat' 'efm'
'errorformat' 'efm' 文字列 (既定値はとても長い)
グローバル/バッファについてローカル global-local
{+quickfix 機能付きでコンパイルされたときのみ有効}
エラーファイルの内容の書式を、関数 scanf 風に指定する (errorformat
を参照)。
'esckeys' 'ek' 'noesckeys' 'noek'
'esckeys' 'ek' 切替 (Vimの既定値: オン, Viの既定値: オフ)
グローバル
オンのときは、<Esc> で始まるファンクションキーも挿入モードで認識される
ようになる。オフのときは、<Esc> で始まるカーソルキーとファンクション
キーは、挿入モードで使うことができない。こうすることの利点は、<Esc> を
一回打ち込むだけですぐに認識され、1秒ほど待つ必要がないことだ。このオ
プションをオフにしなくても、オプション 'timeoutlen' と 'ttimeoutlen'
を変更してみるとよい。 Note 'esckeys' がオフのときでも、どのキーを
マッピングすることもできるが、そのままではカーソルキーは使用できないこ
とに注意。
NOTE: このオプションは、'compatible' がオンになるとViの既定値に、オフ
になるとVimの既定値になるので注意。
NOTE: このオプションがオフのとき、挿入モードでは modifyOtherKeys お
よび xterm-bracketed-paste 機能は無効化される。修飾子付きのキーが入
力されたときに挿入モードが終了するのを防ぐためである。
'eventignore' 'ei'
'eventignore' 'ei' 文字列 (既定では "")
グローバル
Autocommand のイベント名のうち、無視したいもののリスト。
"all" が含まれていると全ての autocommand のイベントが無視され、
autocommand は実行されなくなる。
それ以外では、値はイベント名のコンマ区切りのリストである。例:
'expandtab' 'et' 'noexpandtab' 'noet'
'expandtab' 'et' 切替 (既定ではオフ)
バッファについてローカル
挿入モードで <Tab> を挿入するとき、代わりに適切な数の空白を使う。ま
た、コマンド '>' や '<' によるインデントや、オプション 'autoindent' が
オンのときのインデントでも空白を使う。'expandtab' がオンのときに本当の
タブを挿入するには、CTRL-V<Tab> を使うこと。:retab と ins-expandtab
も参照。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'exrc' 'ex' 'noexrc' 'noex'
'exrc' 'ex' 切替 (既定ではオフ)
グローバル
カレントディレクトリ内のファイル .vimrc, .exrc や .gvimrc 等の読み込み
を有効にする。
このオプションを設定することは潜在的な機密漏洩を意味する。例えば、
パッケージを解凍することや github からファイルを取得することを考える
と、その中に含まれる .vimrc はトロイの木馬になりえる。
このオプションは設定しないほうが良い! {訳注:太字で強調}
その代わりに自分の .vimrc で、ディレクトリ毎のオプションを設定する
autocommand を定義するべきである。
このオプションをオンにするなら、オプション 'secure' もオンにするよう検
討すること (initialization を参照)。
.vimrc と gui-init も参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'fileencoding' 'fenc' E213
'fileencoding' 'fenc' 文字列 (既定では "")
バッファについてローカル
カレントバッファのファイルの文字エンコーディングを設定する。
'fileencoding' と 'encoding' が異なるとき、ファイルの書き出しの際に文
字エンコーディングの変換が行われる。読み込みについては後述。
'fileencoding' が空の場合、'encoding' と同じ値が使われる (ファイルの読
み書きの際に変換をしない)。
値が設定されたときにはエラーは発生しない。使われるとき、つまりファイル
に書き込むときのみ発生する。
'encoding' と 'fileencoding' がともに Unicode エンコーディングであり、
'fileencoding' が utf-8 でない場合にも変換が行われる。内部では Unicode
は常に utf-8 で保持されているためである。
警告: 文字エンコーディングを変換すると、情報が失われるおそれが
ある!'encoding' が "utf-8" など Unicode エンコーディングだと、
変換は大抵成功するし、逆変換をしても同じテキストになる。
'encoding' が "utf-8" でないときは、失われる文字があるかもしれ
ない!
指定可能な値については 'encoding' を参照。それらに加え、変換ツールで変
換可能なエンコーディングの値も設定できる。mbyte-conversionを参照。
ファイルを読み込むときは、'fileencoding' は 'fileencodings' の値の中か
ら設定される。あるエンコーディングのファイルを読み込むには
'fileencoding' を設定してもだめで、引数 ++enc を使う。1つの例外:
'fileencodings' が空のときは 'fileencoding' の値が使われる。
新規ファイルに対しては 'fileencoding' のグローバルな値が使われる。
"8bit-" や "2byte-" を頭に付けてもここでは意味がなく、無視される。
オプションが設定されると、値は小文字に変換される。そのため、値を大文字
で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。
値が 'encoding' の値に含まれることが認識されると、値は標準の名前に変換
される。例えば "ISO_88592" は "iso-8859-2" になる。
ファイルの編集を始めた後にこのオプションを設定すると、'modified' がオ
ンになる。なぜならそのファイルの中身は、書き込まれるときには違うものに
なるからである。
'fenc' をモードラインで設定した場合、設定はファイルが読み込まれた後で
変更されるので注意すること。つまり設定された値はそのファイルを保存する
ときになってから効果を発揮する。もし 'fenc' をモードラインで設定するな
ら 'nomodified' も同時に設定すると ":q" での終了を妨げないのでいいかも
しれない。
このオプションは 'modifiable' がオフのときには変更することができない。
'fe'
NOTE: Vim version 6.0 以前では、このオプションはVim全体の文字エンコー
ディングを指定していたことに注意。これは誤りだった。そのためには代わり
に 'encoding' を使うこと。古い省略形式の名前は 'fe' だが、これはもう使
われていない。
'fileencodings' 'fencs'
'fileencodings' 'fencs' 文字列 (既定値: "ucs-bom",
'encoding' の値がUnicodeに設定されたときは
"ucs-bom,utf-8,default,latin1")
グローバル
値は、既存のファイルの編集を開始するときに考慮される文字エンコーディン
グのリストである。ファイルが読み込まれると、Vimは指定されたうちの先頭
の文字エンコーディングを使おうとする。そのときエラーが発見されると、値
のリスト内で次に並んでいるエンコーディングが試される。あるエンコーディ
ングでうまくいくとわかると、'fileencoding' がそれに設定される。すべて
のエンコーディングが失敗すると 'fileencoding' は空文字列に設定され、
'encoding' の値が使われることになる。
警告: 文字エンコーディングを変換すると、情報が失われるおそれが
ある!'encoding' が "utf-8" だと、変換は大抵成功するし、逆変換
をしても同じテキストになる。'encoding' が "utf-8" でないときは、
非ASCII文字が失われるかもしれない!変換できない文字をどう扱う
かは引数++badで指定することができる。
空ファイルやASCII文字のみのファイルではほとんどのエンコーディングでう
まくいくので、'fileencodings' の最初の値が使われる("ucs-bom" を除く。
これはBOMがなければいけない)。他のエンコーディングがよければ自動コマン
ドイベントBufReadPostを使って、そのエンコーディングが使われるかどうか
を判定すること。例:
"iso-2022-jp" に設定する。
引数++encを使ったときは 'fileencodings' の値は考慮されない。
新規ファイルには 'fileencodings' は適用されないことに注意。代わりに
'fileencoding' のグローバルな値が適用される。これを設定するには:
グになることを意味する。
ファイル先頭にUnicodeの BOM (Byte Order Mark: バイト順マーク) があるか
どうか調べるには、"ucs-bom" という特別な値が使える。この値を "utf-8"
等のUnicode系の値よりも後に指定すると正しく機能しない。
8ビットエンコーディング("latin1" など)の項目はリストの最後に書かなけれ
ばならない。そうしないとVimがエラーを検出できず、常にそのエンコーディ
ングが適用されてしまうためである。
特別な値 "default" を使うと環境からのエンコーディングが適用される。
MS-Windows ではシステムのエンコーディングである。それ以外では
'encoding' の既定の値である。これは 'encoding' が "utf-8" に設定され、
環境がロシア語などlatin1でないエンコーディングを使っているときに便利で
ある。
'encoding' が "utf-8" のとき、ファイルが不正なバイト列を含んでいるとそ
のファイルはUTF-8と認識されない。コマンド8g8を使うと不正なバイト列を
見つけることができる。
間違った値: どこが間違っているか:
latin1,utf-8 常に "latin1" が使われてしまう
utf-8,ucs-bom,latin1 utf-8のファイルでBOMが認識されない
cp1250,latin1 常に "cp1250" が使われてしまう
'fileencodings' が空のときには 'fileencoding' は変更されない。
設定可能な値については 'encoding' を参照すること。
このオプションを設定しても次にファイルを読み込むときまでは効果がない。
'fileformat' 'ff'
'fileformat' 'ff' 文字列 (MS-Windows での既定値: "dos",
Unix での既定値: "unix")
バッファについてローカル
バッファにファイルを読み込んだり、バッファからファイルに書き込んだりす
るときに使われる <EOL> を、カレントバッファについて設定する。
dos <CR><NL>
unix <NL>
mac <CR>
"dos" が使われたとき、ファイル末尾の CTRL-Z は無視される。
file-formats と file-read を参照。
ファイルの文字エンコーディングについてはオプション 'fileencoding' を参
照。
'binary' がオンのときは、'fileformat' の実際の値は無視され、ファイルの
読み書きは値が "unix" に設定されたときのように行われる。
ファイルの編集を始めたときに 'fileformats' が空でなく、'binary' がオフ
ならば、'fileformat' は自動的に設定される。
ファイルの編集を始めた後にこのオプションを設定すると、'modified' がオ
ンになる。なぜならそのファイルの中身は、書き込まれるときには違うものに
なるからである。
このオプションは、'modifiable' がオフのときは変更できない。
後方互換性のために: このオプションが "dos" になると 'textmode' がオン
になり、それ以外では 'textmode' はオフになる。
'fileformats' 'ffs'
'fileformats' 'ffs' 文字列 (既定値:
Vim+Vi MS-Windows: "dos,unix",
Vim Unix: "unix,dos",
Vi Cygwin: "unix,dos",
Vi その他: "")
グローバル
想定される改行 (<EOL>) の種類を指定する。これは新しいバッファの編集を
始めたときと、ファイルを既存のバッファに読み込んだときに使われる。
- 値が空のときは、オプション 'fileformat' で指定された種類の改行が常に
使われる。自動的な設定は行われない。
- 1種類の名前が設定されているときは、新しいバッファが開かれるときには
常にその種類の改行が使われる。そのバッファでは、'fileformat' はこの
オプションに従って設定される。'fileformats' は、ファイルを既存のバッ
ファに読み込むときに使われる。その際、そのバッファで 'fileformat' が
何に設定されていても関係ない。
- 複数の名前がコンマで区切られて設定されているときは、ファイルを読み込
むときに <EOL> の判別が自動的に行われる。Vimはファイルの編集を始める
ときに、<EOL> を以下のように調べる。
1. 全ての行が <CR><NL> で終わっており、かつ 'fileformats' が "dos"
を含むなら、'fileformat' は "dos" になる。
2. 改行に <NL> が使われていて、かつ 'fileformats' が "unix" を含むな
ら、'fileformat' は "unix" になる。 Note <NL> があって、その前に
<CR> がないと、"dos" より "unix" が優先的に使われることに注意。
3. 'fileformat' がまだ設定されておらず、ファイル内に1つ <CR> が見つ
かり {訳注:後ろに<NL>が続かない} 、'fileformats' に "mac" が含ま
れているときは、'fileformat' は "mac" に設定される。
つまり "mac" が選択されるのは:
"unix" が含まれていないか <NL> がファイルに無い、そして
"dos" が含まれていないか <CR><NL> がファイルに無いときである。
ただし: "unix" が選択され、最初の <NL> よりも前に <CR> があり、
最初の数行において <CR> の数が <NL> の数よりも多いときは、"mac"
に設定される。
4. それでも 'fileformat' を決定できないときは、'fileformats' の中で
最初に指定されている値が使われる。
既存のバッファにファイルを読み込むときにも同じ経過をたどる。しかし
'fileformat' は読み込まれるファイルについては適切に設定されるが、
そのバッファでの値は変更されない。
'binary' がオンのときは、'fileformats' は使われない。
Vim が空のバッファで起動されたときは最初の項目が使われる。.vimrc 内で
'fileformat' を設定することでこれを変更することができる。
DOS形式の <EOL> (<CR><NL>) のシステムでは、コマンド ":source" で読み込
まれるファイルと、ファイル vimrc については、<EOL> の判別が自動的に行
われる。
- 'fileformats' が空のときは、自動設定は行われない。常にDOS形式の改行
が使われる。
- 'fileformats' の値に1種類以上の名前が設定されているときは、自動設定
が行われる。これはファイル内の1個目の <NL> に関して行われる。その前
に <CR> があるときはDOS形式が使われ、そうでなければUnix形式が使われ
る。
また file-formats も参照。
後方互換性のために: このオプションに、空の文字列か1種類だけの名前が設
定されたとき (コンマが含まれていないとき) には、'textauto' はオフにな
る。そうでなければ 'textauto' はオンになる。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'fileignorecase' 'fic' 'nofileignorecase' 'nofic'
'fileignorecase' 'fic' 切替 (既定値: ファイル名の大文字と小文字の違いを無
視するシステムではオン)
グローバル
このオプションを設定すると、ファイル名とディレクトリ名の大文字と小文字
の違いが無視される。
補完で大文字と小文字の違いを無視したい場合は 'wildignorecase' を参照。
'filetype' 'ft'
'filetype' 'ft' 文字列 (既定では "")
バッファについてローカル local-noglobal
このオプションが変更されると autocommand のイベント FileType が発生し、
このオプションの値にマッチする全ての autocommand が実行される。つまり、
{訳注: 普通 autocommand が実行されるのはファイル名がマッチしたときだ
が} 'filetype' の値がファイル名の代わりに使われる。
しかしこのオプションはカレントファイルのファイルタイプを常に反映してい
るわけではない。普通このオプションは、ファイルタイプが判別されたときに
設定される。判別を有効にするにはコマンド ":filetype on" を使うこと
:filetype。
ファイルタイプが自動的に認識されないファイルのモードラインで、このオプ
ションを異なった値に設定すると非常に便利である。例えば、IDL ファイルの
中でこうする。
/* vim: set filetype=idl : */
FileType filetypes
値にドットが含まれる場合、これは 2 つのファイルタイプ名を区切るため、
ファイルタイプには使用しないこと。例:
/* vim: set filetype=c.doxygen : */
こうすると最初にファイルタイプ "c" を使い、次にファイルタイプ "doxygen"
を使う。これはファイルタイププラグインと構文ファイル両方に適用される。
2個以上のドットが現れてもよい。
このオプションは 'cpoptions' のフラグ 's' や 'S' にかかわらず、別のバッ
ファにはコピーされない。
英数字、'-'、'_' のみ使用できる。
'fillchars' 'fcs'
'fillchars' 'fcs' 文字列 (既定では "vert:|,fold:-,eob:~,lastline:@")
グローバル/ウィンドウについてローカル global-local
ウィンドウのステータス行、垂直分割の区切り、特殊行を埋める文字。
これはコンマで区切られた項目のリストである。各項目には、名前、コロン、
およびその項目の値がある: E1511
キーワード 既定値 変更の対象
stl ' ' カレントウィンドウのステータス行
stlnc ' ' 非カレントウィンドウのステータス行
vert '|' 垂直分割の区切り :vsplit
fold '-' 'foldtext' での空白部分
foldopen '-' 折り畳みの先頭のマーク
foldclose '+' 閉じられた折り畳みのマーク
foldsep '|' 開いた折り畳みの中間文字
diff '-' 'diff' での削除された行
eob '~' バッファ終端以降の空行
lastline '@' 'display' が含む最終行/切り捨て
指定されなかったキーワードについては、既定値が使われる。
例:
"stl", "stlnc", "foldopen", "foldclose", "foldsep" 項目に対しては1バイ
トおよびマルチバイトの文字をサポートしている。しかし全角文字幅の文字は
サポートしていない。E1512
強調表示が行われるものおよびその属するグループ:
項目名 ハイライトグループ
stl StatusLine hl-StatusLine
stlnc StatusLineNC hl-StatusLineNC
vert VertSplit hl-VertSplit
fold Folded hl-Folded
diff DiffDelete hl-DiffDelete
eob EndOfBuffer hl-EndOfBuffer
lastline NonText hl-NonText
'findfunc' 'ffu' E1514
'findfunc' 'ffu' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
{+eval 機能つきでコンパイルされたときのみ有効}
:find コマンドのファイル名を取得するために呼び出される関数。このオプ
ションが空の場合、内部の file-searching メカニズムが使用される。
値には関数名、lambda または Funcref を指定できる。
詳細については option-value-function を参照。
関数は 2 つの引数で呼び出される。最初の引数は String で、:find コ
マンドの引数である。2 番目の引数は Boolean で、関数が呼び出されて
:find コマンドのコマンドライン補完にマッチしたリストを取得した時に
v:true に設定される。
関数は文字列のリストを返す必要がある。
関数は、:find コマンドの呼び出しごとに 1 回だけ呼び出される。
関数は、'path' で指定されたすべてのディレクトリを処理できる。
マッチした場合、関数は 1 つ以上のファイル名を含む List を返す必要が
ある。マッチしない場合、関数は空のリストを返す必要がある。
関数の呼び出し中にエラーが発生した場合、空のリストが戻り値として使用さ
れる。
'findfunc' の実行中にテキストを変更したり、別のウィンドウにジャンプし
たりすることはできない。textlock
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
例:
'fixendofline' 'fixeol' 'nofixendofline' 'nofixeol'
'fixendofline' 'fixeol' 切替 (既定ではオン)
バッファについてローカル
このオプションがオンの時にファイルを書き込むとファイル末尾に <EOL>
が無い場合に復元される。もしオリジナルのファイルのまま維持したいのであ
ればこのオプションをオフに切り替える。
'binary' オプションが設定されているときはこのオプションは意味を成さな
い。
オプション 'endofline' を参照。
設定例については eol-and-eof を参照。
'fkmap' 'fk' 'nofkmap' 'nofk'
'fkmap' 'fk' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
このオプションはペルシア語を使うためのもので、削除された。farsi.txt
を参照。
'foldclose' 'fcl'
'foldclose' 'fcl' 文字列 (既定では "")
グローバル
{+folding 機能付きでコンパイルされたときのみ有効}
"all" に設定すると、カーソルが折り畳み区間の外に出たとき、その区間の折
り畳みの深さがオプション 'foldlevel' より大きければ折り畳みを行う。折
り畳み区間の外に出るとき、自動的に折り畳みを行いたいときに便利である。
'foldcolumn' 'fdc'
'foldcolumn' 'fdc' 数値 (既定では 0)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
非0 に設定されると、ウィンドウの端の指定された幅の列が折り畳みを (開い
ていても閉じていても) 表示する。最大値は 12 である。
folding を参照。
'foldenable' 'fen' 'nofoldenable' 'nofen'
'foldenable' 'fen' 切替 (既定ではオン)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
オフのときは、全ての折り畳みが開かれる。このオプションは、全てのテキス
トを折り畳みなしで見る状態とテキストの一部を折り畳んで見る (手動で開か
れたり閉じられた折り畳みも含む) 状態を素早く切り替えるために使われる。
このオプションはコマンド zi で切り替えることができる。オプション
'foldenable' がオフのときは、'foldcolumn' は空白のままである。
このオプションは、新しい折り畳みを作ったり、折り畳みを閉じたりするコマ
ンドによってオンにされる。
folding を参照。
'foldexpr' 'fde'
'foldexpr' 'fde' 文字列 (既定では "0")
ウィンドウについてローカル
{+folding 機能と +eval 機能付きでコンパイルされた
ときのみ有効}
オプション 'foldmethod' が "expr" のときに使われる expression。これは
折り畳みの深さを求めるために各行について評価される。コンテキストには
'foldexpr' が設定されたスクリプトのものが設定され、スクリプトローカル
の要素へアクセスできる。使い方は fold-expr を参照。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'diff' がオンのとき、または 'modelineexpr' オプションがオフのときは、
このオプションをモードライン modeline で設定することはできない。
'foldexpr' を評価している最中にテキストを変更したり他のウィンドウへジャ
ンプすることは許されていない。textlock
'foldignore' 'fdi'
'foldignore' 'fdi' 文字列 (既定では "#")
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
オプション 'foldmethod' が "indent" のときのみ使われる。'foldignore'
で指定した文字で始まる行の折り畳みの深さは、上下の行から決められる
{訳注: その行のインデントが上下と違っていても、一緒に折り畳めるように
するため}。空白を無視した上で指定された文字の存在を調べる。
既定値の "#" はC言語プログラムについてはうまく動作する。fold-indent
を参照。
'foldlevel' 'fdl'
'foldlevel' 'fdl' 数値 (既定では 0)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
折り畳みの深さを設定する。指定した数値よりレベルの深い折り畳み区間は閉
じられる。このオプションを 0 に設定すると、全ての折り畳みが閉じられる。
大きな数値を設定すると、それだけ閉じられる折り畳みの数は減る。
このオプションはコマンド zm, zM や zR によって設定される。
fold-foldlevel を参照。
'foldlevelstart' 'fdls'
'foldlevelstart' 'fdls' 数値 (既定では -1)
グローバル
{+folding 機能付きでコンパイルされたときのみ有効}
ウィンドウで新しいバッファの編集を始めるときのオプション 'foldlevel'
を設定する。編集開始時に常に全ての折り畳みを閉じておいたり (そのために
は 0 にする)、いくつかを閉じておいたり (1 にする)、全て開いておいたり
(99にする) するときに便利である。
これによる設定はモードラインの読み込み前に行われるので、モードライン内
での設定はこのオプションによる設定より優先される。ファイルの編集を
diff-mode で開始してもやはりこのオプションは無視され、全ての折り畳み
が閉じられる。
またこれによる設定はイベント BufReadPre による autocommand よりも前に
行われるので、特定のファイルについて autocommand で 'foldlevel' を上書
きできる。
値が負のときには、このオプションは使われない。
'foldmarker' 'fmr' E536
'foldmarker' 'fmr' 文字列 (既定では "{{{,}}}")
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
オプション 'foldmethod' が "marker" のときに使われる、折り畳み開始/終
了を示すマーカー。開始マーカーと終了マーカーを分けるために、間に1個の
コンマがなければいけない。マーカーはただの文字列である (正規表現では動
作が遅すぎるだろう)。
fold-marker を参照。
'foldmethod' 'fdm'
'foldmethod' 'fdm' 文字列 (既定では "manual")
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
カレントウィンドウに適用される折り畳みの種類を設定する。指定可能な値は
以下の通り。
fold-manual manual 折り畳みは手動で設定する。
fold-indent indent 等しいインデントの行で折り畳みを作る。
fold-expr expr オプション 'foldexpr' で深さを設定する。
fold-marker marker マーカーで折り畳みを指定する。
fold-syntax syntax 構文強調表示のキーワードを使って指定する。
fold-diff diff 変更されていないテキストを折り畳む。
'foldminlines' 'fml'
'foldminlines' 'fml' 数値 (既定では 1)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
画面上の行数を設定する。設定された行数より大きな折り畳みだけが閉じた折
り畳みとして表示される。手動で閉じられた折り畳みにも適用される。初期設
定の 1 では、折り畳みが 2 行以上の場合のみ閉じることができる。ゼロに設
定することで 1 行だけの折り畳みを閉じることができる。
Note: このオプションは折り畳みの表示方法に関してのみ効果を持つ。例えば
"zc" で折り畳みを閉じて、その折り畳みが 'foldminlines' より小さいため
に開いた状態で表示されているとき、続けて "zc" を入力するとその外側の折
り畳みを閉じることになる。
'foldnestmax' 'fdn'
'foldnestmax' 'fdn' 数値 (既定では 20)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
折り畳みの方法に "indent" や "syntax" が選ばれたときの、折り畳みの入れ
子の深さの最大値を設定する。これにより折り畳みが膨大に作られるのを防ぐ
ことができる。Vim内部の制限が 20 になっているので、20 以上を設定しても
無効である。
'foldopen' 'fdo'
'foldopen' 'fdo' 文字列 (既定では "block,hor,mark,percent,quickfix,
search,tag,undo")
グローバル
{+folding 機能付きでコンパイルされたときのみ有効}
カーソルがコマンドによって、閉じている折り畳みの中に移動したとき、どの
種類のコマンドだったら折り畳みが開かれるかを指定する。値はコンマ区切り
のキーワードである。
NOTE: コマンドがマッピングの一部として実行されたときは、このオプション
は使われない。同じ効果を得るには、マッピングにコマンド zv を加えるこ
と。
(理由: 折り畳みを開くかどうかはマッピング自身でコントロールできたほう
がいい)
キーワード 適用されるコマンド
all 全て
block "(", "{", "[[", "[{" 等
hor 水平移動: "l", "w", "fx" 等
insert 挿入モードのコマンド全て
jump 長いジャンプ: "G", "gg" 等
mark マークへのジャンプ: "'m", CTRL-O 等
percent "%"
quickfix ":cn", ":crew", ":make" 等
search パターン検索: "/", "n", "*", "gd" 等
(":" コマンドでの検索パターンには適用されない)
[sと]sにも適用される。
tag タグへのジャンプ: ":ta", CTRL-T 等
undo アンドゥ/リドゥ: "u" と CTRL-R
移動コマンドがオペレータとして使われたときは (例えば "dl" や "y%")、こ
のオプションは使われない。つまりオペレータは閉じられている折り畳み全体
を含む効果を持つということだ。
Note 垂直方向の移動がここに含まれていないことに注意。それは垂直移動を
含めると、閉じられた折り畳みの上への移動が困難になるからだ。挿入モード
でテキストが挿入されるときには、カーソルが中に入っていった折り畳みは必
ず開かれる。
折り畳みを閉じるには、zx でオプション 'foldlevel' を再適用するか、
'foldclose' を "all" にすればよい。
'foldtext' 'fdt'
'foldtext' 'fdt' 文字列 (既定では "foldtext()")
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
閉じられた折り畳みのところに表示されるテキストを生成する expression を
指定する。コンテキストには 'foldexpr' が設定されたスクリプトのものが設
定され、スクリプトローカルの要素へアクセスできる。使い方は
fold-foldtext を参照。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'foldexpr' を評価している最中にテキストを変更したり他のウィンドウへジャ
ンプすることは許されていない。textlock
'formatexpr' 'fex'
'formatexpr' 'fex' 文字列 (既定では "")
バッファについてローカル
{+eval 機能つきでコンパイルされたときのみ有効}
オペレータ gq や自動整形 ('formatoptions' 参照) で行の範囲を整形する
ために評価される式。このオプションが空だと 'formatprg' が使われる。
v:lnum 変数は整形される最初の行を保持する。
v:count 変数は整形される行数を保持する。
v:char 変数は挿入されようとしている文字を保持する (式が自動整形のた
めに評価されたときに使用される)。空文字の場合もある。この文
字をバッファに挿入しないでください。
例:
mylang#Format() を呼ぶ。autoload
引数なしで関数呼び出しを使用する利点は、高速であることである。
expr-option-function を参照。
また、'textwidth' がオンになっていて、テキストを追加しているときにその
値を超えたときにもこの式が評価される。これは内部整形が使われるときと同
じ条件で起こる。この式を評価した後のカーソル位置がテキストに対して元の
位置と同じになるようにすること。この式を評価中は、関数mode()は "i"
または "R" を返す。
この関数が非ゼロを返すと Vim 内部の文章整形処理が使われる。
式が s: か <SID> で始まる場合、スクリプトID(local-function) に置き
換えられる。例:
価され、その結果スクリプトローカルな要素を使用できる。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。その場合、サン
ドボックスの中ではバッファテキストの変更は許可されていないので、このオ
プションは機能しない。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
NOTE: 'compatible' がセットされると、このオプションは "" にセットされ
る。
'formatlistpat' 'flp'
'formatlistpat' 'flp' 文字列 (既定では "^\s*\d\+[\]:.)}\t ]\s*")
バッファについてローカル
リストのヘッダーを認識するのに使われるパターン。'formatoptions' のフラ
グ "n" に適用される。
このパターンにマッチする部分が、それ以下の行のインデントとなる。
/\zeを使うとマッチの終わりをマークしつつ、さらに文字のチェックを続け
ることができる。
{訳注: 例えば、このオプションが既定の "^\s*\d\+[\]:.)}\t ]\s*" のとき、
マッチする部分は
1. the first item
wraps
^^^^^^^^^^
の部分である。既定の値に\zeをはさんで "^\s*\d\+[\]:.)}\t ]\ze\s*" と
すると、リストのヘッダーと認識されるパターンはまったく変わらないが、
次行のインデントが\ze以前の部分に等しくなる:
1. the first item
wraps
^^^^^^
}
パターンの後ろに文字がなければならない。行全体がマッチすると、その行は
マッチがないのと同様に扱われてしまう。
既定では数字(後ろに句読点や空白があってもよい)を認識する。
'formatoptions' 'fo'
'formatoptions' 'fo' 文字列 (Vimの既定値: "tcq", Viの既定値: "vt")
バッファについてローカル
自動整形の実行方法を決めるフラグの列である。
可能な値については fo-table を、テキストの書式設定方法については
gq を参照。'paste' オプションがオンの場合、書式は設定されない
('formatoptions' が空の場合と同様)。読みやすくするためにコンマを挿入す
ることができる。
将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+="
と "-=" を使うこと add-option-flags。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'formatprg' 'fp'
'formatprg' 'fp' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
選択された行をコマンド gq で整形するのに使われる外部プログラムの名前
を指定する。使われるプログラムは標準入力からテキストを読み込み、整形さ
れたテキストを標準出力に出力しなければいけない。Unixのプログラム "fmt"
が代表である。
オプション 'formatexpr' が空でないならば、代わりにその値が使われる。こ
のオプションが空ならば、内部の整形関数が使われるC-indenting。
環境変数は展開される :set_env。値に空白や '\' を含める方法については、
option-backslash を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'fsync' 'fs' 'nofsync' 'nofs'
'fsync' 'fs' 切替 (既定ではオン)
グローバル
これがオンになっていると、ファイル書き込みの後にライブラリ関数fsync()
が呼ばれる。するとファイルがディスクにフラッシュされ、メタデータのみを
ジャーナルするファイルシステム上でも安全に書き込みが行われるようになる。
ラップトップモードで動作するLinuxシステム上で強制的にハードドライブを
回転させることになるが、これはある種の状況では望ましくない。これをオフ
にするとクラッシュ時にデータを失う可能性を高めることに注意。fsync()の
実装がないシステム上ではこの変数は常にオフである。
スワップファイルに対してfsync()をコントロールするには 'swapsync' を参
照。
'fsync' は writefile() (フラグがこれを却下するように指定されていない
限り) とアンドゥファイルが書き込まれる時 (undo-persistence を参照)
にも適用される。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'gdefault' 'gd' 'nogdefault' 'nogd'
'gdefault' 'gd' 切替 (既定ではオフ)
グローバル
オンのときは、コマンド ":substitute" のフラグ 'g' がオンであることが既
定になる。つまり行内のマッチする文字列が、1番目のものだけでなく、全て
置換される。":substitute" に 'g' が指定されると、逆に1番目のみを置換す
るようになる。complex-change を参照。
コマンド 'gdefault' がオン 'gdefault' がオフ
:s/// 全て置換 最初だけ置換
:s///g 最初だけ置換 全て置換
:s///gg 全て置換 最初だけ置換
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
このオプションを設定すると、'g' フラグのデフォルトの挙動に依存するプラ
グインが壊れるかもしれない。また、'g' フラグが :s_g に記載されている
説明と真逆の効果を持つようにもなる。
このオプションは Vim9 script では利用されない。
'grepformat' 'gfm'
'grepformat' 'gfm' 文字列 (既定では "%f:%l:%m,%f:%l%m,%f %l%m")
グローバル
コマンド ":grep" の出力を認識するための書式。
オプション 'errorformat' と同じく、関数 scanf 風の書式指定を使う。
errorformat を参照。
'grepprg' 'gp'
'grepprg' 'gp' 文字列 (既定では "grep -n ",
Unixでは: "grep -n $* /dev/null",
Win32では: "findstr /n" か "grep -n",
VMSでは: "SEARCH/NUMBERS ")
グローバル/バッファについてローカル global-local
コマンド ":grep" で使われるプログラム。このオプションは文字 '%' や '#'
を含んでもよい。これらはコマンドラインで使われるときのように展開される。
引数の挿入される場所を指定するには "$*" が使える。環境変数は展開される
:set_env。値に空白や '\' を含める方法については、option-backslash
を参照。
ユーザーの "grep" が引数 "-H" を認識するなら、":grep" が1個のファイルに
対しても適切に働くように、次のようにすること:
:vimgrepと同様に、:lgrepは:lvimgrepと同様に、:grepadd は
:vimgrepaddと同様に、:lgrepaddは:lvimgrepaddと同様に働くようにな
る。
:make_makeprg も参照。そこの記述のほとんどが 'grepprg' にも適用でき
るからだ。
Win32では、"findstr.exe" が見つかるならば既定値は "findstr /n" である。
見つからなければ "grep -n" である。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'guicursor' 'gcr' E545 E546 E548 E549
'guicursor' 'gcr' 文字列 (既定では "n-v-c:block-Cursor/lCursor,
ve:ver35-Cursor,
o:hor50-Cursor,
i-ci:ver25-Cursor/lCursor,
r-cr:hor20-Cursor/lCursor,
sm:block-Cursor
-blinkwait175-blinkoff150-blinkon175",
Win32コンソールでは:
"n-v-c:block,o:hor50,i-ci:hor15,
r-cr:hor30,sm:block")
グローバル
{VimのGUI版か、Win32のコンソール版でのみ有効}
Vimのそれぞれのモード内でのカーソルの外観を指定する。GUI上では完全に機
能する。Win32コンソールではカーソルの高さだけを変更する。これはブロッ
クカーソルを指定する、または垂直・水平方向のパーセンテージを指定するこ
とで行う。
コンソール上ではエスケープシーケンス 't_SI', 't_SR' 及び 't_EI' が使わ
れる。
値はコンマ区切りのキーワードのリストである。リストは部門別に分かれてお
り、各部門はモードリストと引数リストからなる。
モードリスト:引数リスト,モードリスト:引数リスト,..
モードリストは、モードを表す以下の記号のダッシュ区切りのリストである。
n ノーマルモード
v ビジュアルモード
ve 'selection' が "exclusive" のときの ビジュアルモード
(指定されなければ 'v' と同じ設定)
o Operator-pendingモード
i 挿入モード
r 置換モード
c コマンドラインノーマル (追加) モード
ci コマンドライン挿入モード
cr コマンドライン置換モード
sm 挿入モードでの対応括弧表示時
a 全てのモード
引数リストは、以下の引数のダッシュ区切りのリストである。
hor{N} 文字高の {N}% の高さの水平バーカーソル
ver{N} 文字幅の {N}% の幅の垂直バーカーソル
block 文字全体を覆う大きさのブロックカーソル
[上の3個のうちの1個だけを指定できる]
blinkwait{N} cursor-blinking
blinkon{N}
blinkoff{N}
カーソルの点滅について指定する。blinkwait にはカーソル
が点滅を始めるまでの遅延時間を、blinkon にはカーソルが
表示される時間を、blinkoff にはカーソルが消えている時
間を指定する。時間の単位はミリ秒である。どれかに 0 を
指定すると、カーソルは点滅しない。既定では
"blinkwait700-blinkon400-blinkoff250" となっている。こ
れらは指定されなかった項目に適用される。つまり、既定で
は点滅するように設定されているということだ。点滅しない
ようにするには "blinkon0" を指定すればよい。カーソルが
点滅するのはVimが入力を待っている間で、コマンドを実行
している間は点滅しない。
カーソルを xterm の中で点滅させるには、xterm-blink
を参照。
{group-name}
カーソルの色とフォントを設定する、強調表示のグループ名
を指定する。
{group-name}/{group-name}
ハイライトグループ名を2個指定する。1個目は言語マッピン
グがないときに使われ、2個目は言語マッピングがあるとき
に使われる。language-mapping
値の一部の例:
n-c-v:block-nCursor ノーマルモード、コマンドラインモードとビジュア
ルモードで、ハイライトグループ "nCursor" で指
定された色のブロックカーソルを使う。
i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150
挿入モードとコマンドライン挿入モードで、ハイラ
イトグループ "iCursor" で指定された色の、文字
高の30%の高さの垂直バーカーソルを使う。点滅は
少し速くする。
モード 'a' は他とは異なっていて、与えられた引数リストを全てのモードに
対して設定し、指定されなかった引数は変更しない。これは全てのモードに共
通の設定をするためにある。例えば、点滅を止めるには "a:blinkon0" とする。
カーソル強調表示の例:
'guifont' 'gfn'
E235 E596
'guifont' 'gfn' 文字列 (既定では "")
グローバル
{VimのGUI版でのみ有効}
VimのGUI版で使われるフォントのリストである。値の最も単純なものは、ただ
1個のフォント名である。
詳細は gui-font を参照。
'guifontset' 'gfs'
E250 E252 E234 E597 E598
'guifontset' 'gfs' 文字列 (既定では "")
グローバル
{VimのGUI版で、+xfontset 機能付きでコンパイルされた
ときのみ有効}
{GTK+ GUIでは利用できない}
このオプションには2種類 (またはそれ以上) のフォントを指定する。値が空
のときは無視される。1種類目は普通の英語に使われるもので、2種類目はユー
ザーの使う特別な言語用である。 xfontset を参照。
<
'guifontwide' 'gfw' E231 E533 E534
'guifontwide' 'gfw' 文字列 (既定では "")
グローバル
{VimのGUI版でのみ有効}
2倍幅の文字に使われるフォントをコンマ区切りのリストで指定する。値が空
のときは無視される。読み込み可能なフォントのうち先頭のものが使われる。
gui-fontwide を参照。
'guiheadroom' 'ghr'
'guiheadroom' 'ghr' 数値 (既定では 50)
グローバル
{VimのGTKとX11のGUI版でのみ有効}
GUIウィンドウを画面に合わせるときに、画面の高さから差し引かれるピクセ
ル数。このオプションはGUIを開始する前に、例えばファイル gvimrc 内で
設定すること。値を 0 にすると、画面の高さ全体がウィンドウに使われる。
正の値を指定すると、それだけのピクセル数がウィンドウの装飾や画面上の他
のもののために残される。ウィンドウを画面よりも高くするには、負の値を指
定すること。
'guiligatures' 'gli' E1243
'guiligatures' 'gli' 文字列 (既定では "")
グローバル
{GTK および Win32 GUI でのみ有効}
より複雑な形状を作るために結合して利用できるASCII文字セットのリスト。
各文字は値が32-127の範囲内の印字可能なASCIIの文字。
例:
することでリガチャが無効になる。
'guioptions' 'go'
'guioptions' 'go' 文字列 (既定では "egmrLtT" (MS-Windows,
"t" は defaults.vim 内で削除される),
"aegimrLtT" (GTK と Motif),
)
グローバル
{VimのGUI版でのみ有効}
このオプションはVimのGUI版でのみ有効である。値は、GUIのどのコンポーネ
ントとオプションを使用するかを決定する、フラグの列である。
将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+="
と "-=" を使うこと add-option-flags。
使用できるフラグは以下の通りである。
'go-!'
'!' 外部コマンドが端末ウィンドウで実行される。このフラグがない場
合、MS-Windows GUI はコマンドを実行するためにコンソールウィン
ドウを開く。Unix GUI はコマンド出力をリストするためにダム端末
をシミュレートする。
端末ウィンドウは下に配置され、必要に応じて上に広がる。
'go-a'
'a' 自動選択 (autoselect): 値に含まれると、ビジュアルモードが開始
されるたび、またはビジュアル選択範囲が変更されるたびに、Vimは
ウィンドウシステム共通のクリップボードを使おうとする。つまりビ
ジュアル選択で選択されたテキストは、Vim自身はもとより他のアプ
リケーションでも貼り付けに使えるということだ。(おそらくテキス
トに操作を実行したせいで) ビジュアルモードが終了したり、アプリ
ケーションが選択領域を貼り付けようとしたときには、強調されたテ
キストは自動的にクリップボードレジスタ "* にコピーされる。その
ためビジュアルモードが終了した後でも、選択領域を他のアプリケー
ションに貼り付けることができる。
含まれないと、レジスタ "* に対するコピーや貼り付けによって明示
的に指定されない限り、Vimはウィンドウシステム共通のクリップボ
ードを使おうとはしない。
モードレスセレクションについても同様である。
'go-P'
'P' 自動選択 (autoselect) と似ているが、"* レジスタの代わりに "+
レジスタを使う。
'go-A'
'A' モードレスセレクションに対する自動選択。フラグ 'a' と似ている
が、モードレスセレクションにのみ適用される。
'guioptions' ビジュアルモード モードレスセレクション
"" X X
"a" O O
"A" X O
"aA" O O
ターミナルを使用する場合は、'clipboard' オプションを参照。
'go-c'
'c' 単純な選択にはポップアップダイアログでなくコンソールダイアログ
を使う。
'go-d'
'd' 可能であれば、ダークテーマの亜種を使用する。現在、GTK+ GUIでの
み機能する。
'go-e'
'e' 'showtabline' で指定されたタイミングでタブを追加する。
'guitablabel' を使うとタブのラベルのテキストを変更することがで
きる。'e' がないと非GUIのタブページラインが使われる。GUIのタブ
はいくつかのシステム上(現在はGTK, Motif, Mac OS/X, Haiku,
MS-Windows) でのみサポートされている。
'go-f'
'f' フォアグラウンド (foreground): シェルからGUIを開始し、そのシェ
ルからgVimを独立させる際に関数 fork() を使わない。これはエディ
タが終了するのを待つプログラム (例えばメールプログラム等) に対
して使う。フォアグラウンドでGUIを開始するには、これの代わりに
"gvim -f" や ":gui -f" も使える gui-fork。
Note: このオプションはファイル vimrc 内で設定するよう注意。ファ
イルgvimrcが読み込まれたときはフォーキングがすでに実行されて
いるかもしれない。
'go-i'
'i' Vimのアイコンを使う。KDEのGTKではウィンドウの左上に表示される。
GTKでないX11では、制限のため白黒のアイコンが使われる。色つきの
アイコンについては X11-icon を参照。
'go-m'
'm' メニューバーを表示する。
'go-M'
'M' システムメニューの実体 "$VIMRUNTIME/menu.vim" が読み込まれない。
Note このフラグは、構文認識やファイルタイプ認識を起動する前に、
ファイル .vimrc 内で追加されていなければならない (ファイル
.gvimrc が読み込まれたときには、システムメニューはすでに読み込
まれた後である。コマンド :syntax on と :filetype on でもメ
ニューは読み込まれる)。
'go-g'
'g' メニュー項目の灰色表示: 無効のメニュー項目を灰色で表示する。含
まれていないと、無効のメニュー項目は全く表示されない。
'go-t'
't' メニュー項目の切り離しを有効にする。現在のところWin32, GTK+ と
Motif 1.2 GUI でのみ有効である。
'go-T'
'T' ツールバーを表示する。現在のところWin32, GTK+ と Motif,
Photon GUIでのみ有効である。
'go-r'
'r' 右スクロールバーを常に表示する。
'go-R'
'R' 垂直分割されたウィンドウがあるときのみ、右スクロールバーを表示
する。
'go-l'
'l' 左スクロールバーを常に表示する。
'go-L'
'L' 垂直分割されたウィンドウがあるときのみ、左スクロールバーを表示
する。
'go-b'
'b' 下 (水平) スクロールバーを表示する。サイズは表示されている行の
中で一番長い行によって決まる。またはフラグ'h'が含まれていると
きはカーソル行によって決まる。gui-horiz-scroll
'go-h'
'h' 水平スクロールバーのサイズをカーソル行の長さに制限する。計算量
を軽減させる。gui-horiz-scroll
そう、もちろん、本当に望むのなら、左スクロールバーと右スクロールバーを
「両方」使うことだってできる :-) 詳しい情報については gui-scrollbars
を参照。
'go-v'
'v' ダイアログのボタン配置を垂直方向にする。含まれていないとなるべ
く水平方向の配置を使うが、収まらないときには結局、垂直配置が使
われる。GTK 3 ではサポートされない。
'go-p'
'p' X11のGUIにおいて、ポインタ・コールバックを使う。ウィンドウマ
ネージャーの中にはこれが必要なものもある。カーソルが正しいタイ
ミングで点滅したり変形したりしないときは、これを追加してみるこ
と。これはGUIを開始する前に設定しなければならない。ユーザーの
ファイル gvimrc 内で設定すること。GUIが開始した後にこのフラ
グを追加したり取り除いたりしても、効果はない。
'go-F'
'F' フッターを追加する。Motifでのみ有効である。gui-footer を参照。
'go-k'
'k' スクロールバー、もしくはツールバー、タブライン、その他を追加/
削除する際に、GUI ウィンドウサイズを維持する。というよりは、そ
の振る舞いはウィンドウが最大化されて 'lines' と 'columns' が
ウィンドウに合うよう調整されるときに似ている。'k' フラグがない
場合、Vim は GUI コンポーネントが追加/削除されたときに 'lines'
と 'columns' を維持しようとする。
'guipty' 'noguipty'
'guipty' 切替 (既定ではオン)
グローバル
{VimのGUI版でのみ有効}
GUI版でのみ有効である。オンのときは、シェルコマンドからの入力用および
シェルコマンドへの出力用の仮想端末 pseudo-tty を開こうとする。
gui-pty を参照。
'guitablabel' 'gtl'
'guitablabel' 'gtl' 文字列 (既定では空文字列)
グローバル
{VimがGUIを有効にしてコンパイルされたときのみ利用可能}
空文字列でない場合は、GUI のタブページ行のラベルを設定する。空文字列で
あるか、または評価結果が空文字列である場合は、既定のラベルが使われる。
より詳しくは setting-guitablabel を参照。
このオプションのフォーマットは 'statusline' のフォーマットに似ている。
ツールチップには 'guitabtooltip' が使われる。下記参照。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
GUI のタブページが表示されるときのみ使われる。'guioptions' に 'e' が含
まれていなければならない。GUI でないタブページ行については 'tabline'
が使われる。
'guitabtooltip' 'gtt'
'guitabtooltip' 'gtt' 文字列 (既定では空文字列)
グローバル
{VimがGUIを有効にしてコンパイルされたときのみ利用可能}
空文字列でない場合は、GUI のタブページ行のツールチップを設定する。空文
字列である場合は、既定のツールチップが使われる。
それ以外は上記の 'guitablabel' と同様。
改行を含めることもできる。そのもっとも簡単な方法は :letを使うことで
ある:
'helpfile' 'hf'
'helpfile' 'hf' 文字列 (既定では MS-Windows: "$VIMRUNTIME\doc\help.txt"
その他: "$VIMRUNTIME/doc/help.txt")
グローバル
ヘルプファイルの名前。Vim に付属のヘルプファイルは全て単一のディレクト
リ内に一緒に置かれるべきである。そのディレクトリの他に、'runtimepath'
中の全ての "doc" ディレクトリも対象になる。
環境変数は展開される :set_env。例:
"$VIMRUNTIME/doc/help.txt"。環境変数 $VIMRUNTIME が設定されてないとき
は、$VIM も試される。$VIMRUNTIME を参照。値に空白や '\' を含めること
については option-backslash も参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'helpheight' 'hh'
'helpheight' 'hh' 数値 (既定では 20)
グローバル
コマンド ":help" で開かれたヘルプウィンドウの、開始時のウィンドウ高の
最小値を設定する。ヘルプウィンドウの開始時の高さはカレントウィンドウの
半分であるか、(オプション 'ea' がオンのときには) 他のウィンドウと同じ
である。ウィンドウ高が 'helpheight' より小さくなってしまうとき、実際の
高さは 'helpheight' になる。こうしないようにするには 0 に設定すること。
'helplang' 'hlg'
'helplang' 'hlg' 文字列 (既定では: メッセージ言語または空)
グローバル
{+multi_lang 機能つきでコンパイルされたときのみ有効}
コンマ区切りの言語のリスト。これらの言語の中から、探しているヘルプが見
つかった最初の言語を使う。英語のヘルプは常に優先度が最後になる。英語の
優先度を上げるために "en" を追加することはできるが、そうしても、その言
語に存在し、英語のヘルプに存在しないタグを見つけるだけである。
{訳注: 上の文よくわからない。}
例:
ルプファイルを検索する。
CTRL-] や英語でないヘルプファイル中で ":help!" を使ったときは、この
オプションより先に現在の言語からタグを検索する。help-translated を参
照。
'hidden' 'hid' 'nohidden' 'nohid'
'hidden' 'hid' 切替 (既定ではオフ)
グローバル
オフのときは、バッファは放棄 abandon されるときに解放される。オンの
ときは、バッファは放棄 abandon されるときに隠れ (hidden) 状態になる。
そのバッファが別のウィンドウでまだ表示されているなら、もちろん隠れ状態
にはならない。
バッファリストをわたって動くコマンドは 'hidden' がオフであっても次の3
つが真の場合はバッファを隠れ状態にすることがある:
- バッファの内容が変更された
- 'autowrite' がオフであるか書き込みが不可能な状態
- フラグ '!' が使われたとき
windows.txt も参照。
1つのバッファだけを隠れ状態にするにはオプション 'bufhidden' を使う。
このオプションは、一つ一つのコマンドに対して ":hide {command}" とする
ことでオンにできる :hide。
警告: 隠れバッファに対する変更は忘れがちである。コマンド ":q!" や
":qa!" を使う前にはもう一度よく考えること。
'highlight' 'hl'
'highlight' 'hl' 文字列 (既定では (単一の文字列として):
"8:SpecialKey,~:EndOfBuffer,@:NonText,
d:Directory,e:ErrorMsg,i:IncSearch,
l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,
a:LineNrAbove,b:LineNrBelow,
N:CursorLineNr,r:Question,s:StatusLine,
S:StatusLineNC,c:VertSplit,t:Title,
v:Visual,V:VisualNOS,w:WarningMsg,
W:WildMenu,f:Folded,F:FoldColumn,
A:DiffAdd,C:DiffChange,D:DiffDelete,
T:DiffText,>:SignColumn,-:Conceal,
B:SpellBad,P:SpellCap,R:SpellRare,
L:SpellLocal,+:Pmenu,=:PmenuSel,
k:PmenuMatch,<:PmenuMatchSel,
[:PmenuKind,]:PmenuKindSel,
{:PmenuExtra,}:PmenuExtraSel,
x:PmenuSbar,X:PmenuThumb,*:TabLine,
#:TabLineSel,_:TabLineFill,!:CursorColumn,
.:CursorLine,o:ColorColumn,q:QuickFixLine,
z:StatusLineTerm,Z:StatusLineTermNC,
g:MsgArea")
グローバル
このオプションは、様々な対象に対する強調表示モードを設定する。文字の組
をコンマ区切りのリストとして指定する。1番目の文字は適用される対象を指
定し、2番目の文字はその対象に適用するモードを指定する。
対象は以下の通りである。
hl-SpecialKey 8 ":map" でリスト表示されるメタキーと特殊キー
hl-EndOfBuffer ~ バッファの最後の行以降の行
hl-NonText @ ウィンドウ末尾の '@' と 'showbreak' によって
表示される文字
hl-Directory d CTRL-D によるリスト表示内のディレクトリや、その他
の特別な項目
hl-ErrorMsg e エラーメッセージ
h (古くて使われておらず、無視される)
hl-IncSearch i 'incsearch' の強調表示
hl-CurSearch y 最終検索パターンの現在の項目
hl-Search l 最終検索パターン強調表示 ('hlsearch' を参照)
hl-MoreMsg m 「継続」プロンプト more-prompt
hl-ModeMsg M モード表示 (例えば "-- INSERT --")
hl-MsgArea g Command-line とメッセージエリア
hl-LineNr n ":number" と ":#" コマンドでの行番号と、'number'
か 'relativenumber' がオンに設定されているときの行
番号。
hl-LineNrAbove a 'relativenumber' オプションが設定されている場合
のカーソルの上の行番号。
hl-LineNrBelow b 'relativenumber' オプションが設定されている場合
のカーソル以下の行番号。
hl-CursorLineNr N 'cursorline' または 'relativenumber' 設定時、n の
代わりに使われる。
hl-Question r 「続けるには」プロンプト hit-enter とyes/no質問
hl-StatusLine s カレントウィンドウのステータス行 status-line
hl-StatusLineNC S 非カレントウィンドウのステータス行
hl-Title t ":set all", ":autocmd" 等の出力のタイトル
hl-VertSplit c ウィンドウの垂直分割に使われる区切り
hl-Visual v ビジュアルモード
hl-VisualNOS V X11 Gui gui-x11 と xterm-clipboard でのみ有効
な、選択領域をクリップボードに送らないビジュアル
モード
{訳注: "Not Owning the Selection" をこういう意味に
取りましたが、勘違いかもしれません。どなたかご教授
ください}
hl-WarningMsg w 警告メッセージ
hl-WildMenu W 'wildmenu' によって表示されるワイルドカードマッチ
hl-Folded f 閉じられた折り畳みを表す行
hl-FoldColumn F 'foldcolumn'
hl-DiffAdd A 差分モードで追加された行
hl-DiffChange C 差分モードで変更された行
hl-DiffDelete D 差分モードで削除された行
hl-DiffText T 差分モードで挿入されたテキスト
hl-SignColumn > signs に使われる桁
hl-Conceal - Conceal テキストの代替表示 ('conceallevel' 参照)
hl-SpellBad B スペルミスの単語 spell
hl-SpellCap P 大文字で始まるべきの単語 spell
hl-SpellRare R 滅多に現れない単語 spell
hl-SpellLocal L 他の地域の単語 spell
hl-Pmenu + ポップアップメニューの通常の行
hl-PmenuSel = ポップアップメニューの選択された行
hl-PmenuKind [ ポップアップメニューの "kind" の通常の行
hl-PmenuKindSel ] ポップアップメニューの "kind" の選択された行
hl-PmenuExtra { ポップアップメニューの "extra" の通常の行
hl-PmenuExtraSel } ポップアップメニューの "extra" の選択された行
hl-PmenuSbar x ポップアップメニューのスクロールバー
hl-PmenuThumb X ポップアップメニューのスクロールバーのつまみ
hl-PmenuMatch k ポップアップメニューのマッチしたテキスト
hl-PmenuMatchSel < ポップアップメニューの選択された行のマッチしたテ
キスト
表示モードは以下の通りである。
r 反転 (termcapの項目 "mr" と "me")
i 斜字体 (termcapの項目 "ZH" と "ZR")
b 太字体 (termcapの項目 "md" と "me")
s 強調 (termcapの項目 "so" と "se")
u 下線 (termcapの項目 "us" と "ue")
c 下波線 (termcapの項目 "Us" と "Ce")
2 2重下線 (termcapの項目 "Ds" と "Ce")
d 点線下線 (termcapの項目 "ds" と "Ce")
= 破線下線 (termcapの項目 "Ds" と "Ce")
t 打ち消し線 (termcapの項目 "Ts" と "Te")
n 強調表示なし
- 強調表示なし
: ハイライトグループを使って設定
{訳注: 「文字の組」と書きながら、既定値はどれも2文字でないのは、
この ":" が使われているからである。これだけは例外で、グルー
プ名を使って指定できる}
ユーザーに指定されなかった項目については、既定値が使われる。
表示モードの効果を変更したいなら、例として dos-colors を参照。
表示モードに ':' を使うときは、その後にハイライトグループの名前を続け
なければならない。ハイライトグループは、色も含めて強調表示のあらゆるタ
イプを指定することができる。グループの定義方法については :highlight
を参照。既定値では対象それぞれに異なったグループを使っている。既定のハ
イライトグループについては highlight-default を参照。
'history' 'hi'
'history' 'hi' 数値 (Vimの既定値: 50, Viの既定値: 0,
defaults.vim で 200 に設定される)
グローバル
":" によるコマンドと以前に使った検索パターンの履歴は保存されるわけだが、
このオプションはそれぞれの履歴に何個の項目が保存されるかを指定する
(cmdline-editing を参照)。
最大値は10000。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'hkmap' 'hk' 'nohkmap' 'nohk'
'hkmap' 'hk' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
オンのときは、キーボードはヘブライ文字セットにマップされる。普通、オプ
ション 'allowrevins' をオンにしておき、挿入モードでこのオプションをコ
マンド CTRL-_ で切り替えられるようにすることになる i_CTRL-_。
rileft.txt を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'hkmapp' 'hkp' 'nohkmapp' 'nohkp'
'hkmapp' 'hkp' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
オンのときは、キーボードは音声ヘブライ文字セットにマップされる。またオ
プション 'hkmap' もオンでなければならない。これはユーザーがヘブライ語
キーボードを持っていないときに便利である。
rileft.txt を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'hlsearch' 'hls' 'nohlsearch' 'nohls'
'hlsearch' 'hls' 切替 (既定ではオフ)
グローバル
{+extra_search 機能付きでコンパイルされたときのみ有
効}
前回の検索パターンが存在するとき、それにマッチするテキストを全て強調表
示する。強調表示のタイプは、オプション 'highlight' のフラグ 'l' によっ
て設定できる。既定ではハイライトグループ "Search" が使われる。 Note
マッチするテキストのみが強調表示されるので注意。オフセットは適用されな
い。ハイライトグループ "CurSearch" が設定されている場合は現在のマッチ
がそれで強調表示される。
'incsearch' とコマンド :match も参照。
マッチするテキストが強調表示されるのを見飽きたら、:nohlsearch で無効
に切り替えることができる。このコマンドはオプションの設定値を変更しない
ので、再び検索コマンドを使えば、強調表示も再び行われる。
検索する時間の上限は 'redrawtime' で設定できる。
検索パターンが行の終わり end-of-line にマッチするときは、Vimはマッチし
たテキスト全体を強調表示しようとする。しかし、検索を開始した場所によっ
て結果は異なる。ウィンドウの1番上の行または閉じられた折り畳みの次の行
では、表示されない行内のマッチの強調表示は、表示されている行に継続しな
い。
起動時に強調表示の状態を復元するかどうかは 'viminfo' の 'h' フラグで設
定できる viminfo-h。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'icon' 'noicon'
'icon' 切替 (既定ではオフ、タイトルが復元できるならばオン)
グローバル
オンのときは、ウィンドウのアイコンテキストが 'iconstring' に (値が空で
なければ) 設定される。空ならば現在編集されているファイル名に設定される。
ファイル名の末尾部分のみが使われる。
この設定は 'iconstring' によって上書きできる。
ターミナルがウィンドウアイコンの設定をサポートしているときのみ有効であ
る (現在のところ X11 GUI とターミナルオプション 't_IS' の値が空でない
ターミナルのみ --- これらは既定では Unix xterm と iris-ansi であり、こ
のとき 't_IS' の値は組み込み termcap から取られる)。
Vimが HAVE_X11 が定義された状態でコンパイルされたなら、可能であれば元
のアイコンが復元される X11。X11でアイコンを変更するには X11-icon
を参照。
MS-Windows でアイコンを変更するには、windows-icon を参照。
'iconstring'
'iconstring' 文字列 (既定では "")
グローバル
このオプションが空でないなら、ウィンドウのアイコンテキストに設定される。
これは 'icon' がオンのときのみ使われる。
ターミナルがウィンドウのアイコンテキストの設定をサポートしているときの
み有効である (現在のところ X11 GUI とターミナルオプション 't_IS' の値
が空でないターミナルのみ)。
MS-Windowsでは無効である。
Vimが HAVE_X11 が定義された状態でコンパイルされたなら、可能であれば元
のアイコンが復元される X11。
値に関数 printf 形式の '%' を使った項目が含まれていると、それらは
'statusline' と同じように展開される。設定例は 'titlestring' を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
{+statusline 機能付きでコンパイルされたときのみ有効}
'ignorecase' 'ic' 'noignorecase' 'noic'
'ignorecase' 'ic' 切替 (既定ではオフ)
グローバル
検索パターン、cmdline-completion、タグファイルの検索、および、
非 Vim9 の expr-== の大文字と小文字を区別しない。
オプション 'smartcase' と 'tagcase' も参照。
パターン内で "\c" や "\C" を使うことで、この設定を上書きできる。
/ignorecase を参照。
'imactivatefunc' 'imaf'
'imactivatefunc' 'imaf' 文字列 (既定では "")
グローバル
このオプションはインプットメソッド (IM) をオン/オフにするのに呼ばれる
関数を指定する。値として関数名、lambda、Funcref が使える。詳細は
option-value-function を参照。
MS-Windows GUI 版では使われない。
モードラインから設定した場合、式は sandbox で評価される。
sandbox-option を参照。
例:
'imactivatekey' 'imak'
'imactivatekey' 'imak' 文字列 (既定では "")
グローバル
{+xim 機能と +GUI_GTK 機能付きでコンパイルされたと
きのみ有効} E599
X-Windowsでのインプットメソッド (IM) を起動するのに使われるキーを指定
する。これが正しく設定されていれば、VimはIMをオプション 'imcmdline',
'iminsert' や 'imsearch' によって完全に制御できる。
このオプションで起動キーを変えることはできない。これはただVimにそのキー
が何であるのか伝えるだけである。
書式は以下の通り。
[MODIFIER_FLAG-]KEY_STRING
以下の文字が MODIFIER_FLAG として使える (大文字でも小文字でもよい)。
S シフトキー
L ロックキー
C コントロールキー
1 修飾キー1
2 修飾キー2
3 修飾キー3
4 修飾キー4
5 修飾キー5
これらを組み合わせることができる。例えば "S-C-space" や "SC-space" は
みな shift+ctrl+space を表す。
KEY_STRING については <X11/keysymdef.h> と XStringToKeysym を参照。
例:
び ami (韓国語) の起動キーである。
'imcmdline' 'imc' 'noimcmdline' 'noimc'
'imcmdline' 'imc' 切替 (既定ではオフ)
グローバル
オンのときは、コマンドラインの編集を始めるときには常にインプットメソッ
ド (IM) がオンになる。ただし検索パターンの入力には適用されない (それに
はオプション 'imsearch' を参照)。
ユーザーの IM が英語の文字を直接入力できるならば (例えば IM が、普段使
われないキーからアクセント記号を入力する程度のものならば)、このオプショ
ンをオンにすると便利である。
'imdisable' 'imd' 'noimdisable' 'noimd'
'imdisable' 'imd' 切替 (既定ではオフ、いくつかのシステム(SGI)ではオン)
グローバル
オンのときは、インプットメソッド (IM) が全く使われなくなる。これは IM
がうまく働かないとき、それを無効にしてしまうのに便利である。
現在のところ、SGI/IRIX のマシンではオンになっているのが既定である。こ
れは将来変更されるかもしれない。
'iminsert' 'imi'
'iminsert' 'imi' 数値 (既定では 0)
バッファについてローカル
{訳注: iminsert=2 の場合、挿入モードを抜けると IM がオフにされる。
再度挿入モードに入ると、前回抜けたときの IM 状態が復元される。
この機能をオフにするには iminsert=0 にすること。}
:lmap かインプットメソッド (IM) が挿入モードで使われるかどうかを指定す
る。指定できる値は以下の通り。
0 :lmap はオフ、IM もオフ
1 :lmap はオン、IM はオフ
2 :lmap はオフ、IM はオン
コマンド <Esc> で挿入モードを終える度に値を 0 に戻すには、次のように
すればよい:
Note 挿入モードでコマンド CTRL-^ を使うと、このオプションの値が変わる
ので注意 i_CTRL-^。
オプション 'keymap' に正しいキーマップ名が設定されると、このオプション
は 1 になる。
これはコマンド "r", "f" 等の引数にも適用される。
Motifでは、値を 0 に設定すると正しく働かないようなXIMがある。そのとき
は XIM を無効にするために 'imdisable' を使うこと。
Vim が +xim、+multi_byte_ime もしくは global-ime 付きでコンパイ
ルされていない場合、外部コマンドによって IME/XIM を制御するために
'imactivatefunc' および 'imstatusfunc' を設定することができる。
'imsearch' 'ims'
'imsearch' 'ims' 数値 (既定では -1)
バッファについてローカル
:lmap かインプットメソッド (IM) が、検索パターンを入力するときに使われ
るかどうかを指定する。指定できる値は以下の通り。
-1 'iminsert' の値が使われ、それが検索パターンの入力にも
適用されているかのように動作する
0 :lmap はオフ、IM もオフ
1 :lmap がオン、IM はオフ
2 :lmap はオフ、IM がオン
Note コマンドラインモードでコマンド CTRL-^ を使うと、このオプションが
変わることに注意 c_CTRL-^。
値が -1 でないなら、'keymap' に正しいキーマップ名が設定されると、この
オプションは 1 になる。
Motifでは、値を 0 に設定すると正しく働かないようなXIMがある。そのとき
は XIM を無効にするために 'imdisable' を使うこと。
'imstatusfunc' 'imsf'
'imstatusfunc' 'imsf' 文字列 (既定では "")
グローバル
このオプションはインプットメソッド (IM) の状態を得るのに呼ばれる関数を
指定する。IMEがオンのとき、関数は正の数を返さなければならない。値とし
て関数名、lambda、Funcref が使える。詳細は option-value-function
を参照。
MS-Windows GUI 版では使われない。
例:
NOTE: この関数は頻繁に呼び出されるため、速くなければならない。
モードラインから設定した場合、式は sandbox で評価される。
sandbox-option を参照。
'imstyle' 'imst'
'imstyle' 'imst' 数値 (既定では 1)
グローバル
{+xim と +GUI_GTK 機能付きでコンパイルされたときの
み有効}
このオプションはインプットメソッドの入力スタイルを指定する:
0 on-the-spot スタイルを使う
1 over-the-spot スタイルを使う
参照: xim-input-style
Vim の GTK 版では長い間、on-the-spot スタイルが使われてきた。しかしこ
れは single-repeat やマッピングなどを使う際に問題を引き起すことが知
られている。そのようなわけで、over-the-spot スタイルをデフォルトとする
ことになった。ほとんどの人にとってうまく動作するべきだが、これによって
問題が生じるようであれば、on-the-spot スタイルを使ってみよ。
モードラインから設定した場合、式は sandbox で評価される。
sandbox-option を参照。
'include' 'inc'
'include' 'inc' 文字列 (既定では "^\s*#\s*include")
グローバル/バッファについてローカル global-local
{+find_in_path 機能付きでコンパイルされたときのみ有
効}
{訳注: プログラミング言語の} インクルード命令を探すのに使われるパター
ンを設定する。値はコマンド "/" と同様の検索パターンである (pattern
を参照)。既定値はC言語プログラム用に設定されている。このオプションはコ
マンド "[i", "]I", "[d" 等に使われる。
通常、マッチしたパターンの後に続くファイル名を認識するためにオプション
'isfname' が使われる。しかしパターン中に "\zs" が入っている場合、
"\zs" にマッチしたテキストから最後まで、または "\ze" が入っている場合
はそこまでがファイル名として認識される。スペースなど、'isfname' に入っ
ていない文字を含めるにはこれを使う。そして 'includeexpr' を使ってマッ
チしたテキストを処理することができる。
スペースとバックスラッシュを含める方法についてはoption-backslash を
参照。
'includeexpr' 'inex'
'includeexpr' 'inex' 文字列 (既定では "")
バッファについてローカル
{+find_in_path 機能と +eval 機能付きでコンパイルさ
れたときのみ有効}
オプション 'include' が判別した文字列を、ファイル名に変換するために使
われる expression を指定する。以下のようにして、Java言語で "." を "/"
に変換するようなときに便利である:
Note 2 重バックスラッシュに注意: :set コマンドは最初にそれらを半分に
し、その後 1 つを値のままにする。ここで "\." は文字通りドットに一致す
る。単純な文字置換の場合、tr() を使用するとエスケープの必要がなくな
る:
コマンド gf でも、ファイルの実際の名前が見つからないときは、これが使
われる。プログラミング言語の 'include' 文の後で "gf" を使えるようにな
る。
また <cfile> にも使われる。
式が s: か <SID> で始まる場合、スクリプトID(local-function) に置き
換えられる。例:
価され、その結果スクリプトローカルな要素を使用できる。
値が引数なしの単なる関数呼び出しであれば、より効率的である、
expr-option-functionを参照のこと。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'includeexpr' を評価している間に、テキストを変更したり他のウィンドウに
移ることは許されない。textlock
'incsearch' 'is' 'noincsearch' 'nois'
'incsearch' 'is' 切替 (既定ではオフ、+reltime 機能付きでコンパイル
されたときは defaults.vim 内で設定される)
グローバル
{+extra_search 機能付きでコンパイルされたときのみ有
効}
検索コマンドを打ち込んでいる間にも、打ち込んだところまでのパターンがマッ
チするテキストを、すぐに表示する。マッチした文字列は強調表示される。パ
ターンが不適切であったり見つからなければ、何も表示されない。画面は次々
更新されることになるので、このオプションは表示の速いターミナルでのみ有
用である。
コマンドのパターンにも適用される:
いないので注意。カーソルを移動させるには、やはり <Enter> を打ち込んで
検索コマンドを完了させる必要がある。
マッチを表示中は、次や前のマッチへ移動するのに CTRL-G と CTRL-T キーを
使える。 c_CTRL-G c_CTRL-T
+reltime 機能つきでコンパイルされているときは約0.5秒だけ検索する。複
雑なパターンであったり、大量のテキストはマッチしない場合がある。これは
文字をタイプしている途中で Vim が応答しなくなってしまうのを避けるため
である。
強調表示は、オプション 'highlight' のフラグ 'i' によって設定できる。
'hlsearch' がオンのとき、検索コマンドを打ち込んでいる間、一致するすべ
ての文字列が同様に強調表示される。'hlsearch' も参照。
'hlsearch' をオンにしたくはないが、検索中にすべての一致箇所を強調表示
したい場合、autocmd で 'hlsearch' をオン/オフできる。例:
CTRL-L を押すと、現在マッチしているテキストの後からコマンドラインへ1文
字を追加することができる。その際、'ignorecase' と 'smartcase' が設定さ
れていてコマンドラインに大文字が含まれていなければ、追加された文字は小
文字に変換される。
CTRL-R CTRL-W を押すと、現在マッチしているテキストの末尾から単語を追加
することができる。そのとき、既にタイプされている文字は除かれる。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'indentexpr' 'inde'
'indentexpr' 'inde' 文字列 (既定では "")
バッファについてローカル
{+eval 機能付きでコンパイルされたときのみ有効}
ある行の適切なインデントを得るために評価される expression。これは新し
い行が作られるとき、オペレータ = が使われたとき、挿入モードでオプ
ション 'indentkeys' で指定したキーを打ち込んだときに使われる。
値が空でないとき、この設定が 'cindent' と 'smartindent' によるインデン
トの設定を上書きする。'lisp' が設定されている場合、このオプションは
'lispoptions' に "expr:1" が含まれている場合にのみ使用される。
'paste' がオンのとき、このオプションはインデントに使われない。
指定された expression が評価されるとき、変数 v:lnum はインデント計算
の対象となっている行の行番号に設定される。また、この式を評価するとき、
カーソルもこの行に置かれる(移動してしまうかもしれないが)。
式が s: か <SID> で始まる場合、スクリプトID(local-function) に置き
換えられる。例:
価され、その結果スクリプトローカルな要素を使用できる。
引数なしで関数呼び出しを使用する利点は、高速であることである。
expr-option-function を参照。
指定された expression は、インデントすべき空白の数を返さなければならな
い。そのままのインデントを保たせるには "-1" を返させればよい (つまり、
こうするとインデントには 'autoindent' が使われる)。
インデント深さを計算するのに便利な関数は、indent(), cindent() と
lispindent() である。
この expression の評価には副作用があってはならない!つまり、テキストを
変更したり、別のウィンドウに移動してはいけない。評価後にはカーソル位置
は常に復元されるので、カーソルは移動してもよい。
普通、このオプションは関数を呼び出すように設定される:
る。
indent-expression を参照。
NOTE: このオプションは、'compatible' がオンになると "" になるので注意。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'indentexpr' を評価している間に、テキストを変更したり他のウィンドウに
移ることは許されない。textlock
'indentkeys' 'indk'
'indentkeys' 'indk' 文字列 (既定では "0{,0},0),0],:,0#,!^F,o,O,e")
バッファについてローカル
挿入モードで打ち込まれたときに、現在行の再インデントを引き起こすキーの
リスト。これはオプション 'indentexpr' が空でないときのみ起きる。
書式は 'cinkeys' と同様である。indentkeys-format を参照。
C-indenting と indent-expression を参照。
'infercase' 'inf' 'noinfercase' 'noinf'
'infercase' 'inf' 切替 (既定ではオフ)
バッファについてローカル
挿入モードで単語補完 ins-completion をしているとき、このオプションと
'ignorecase' がオンならば、マッチした単語の大文字/小文字の区別は打ち
込んだテキストに応じて修正される。打ち込んだテキストでは小文字だがマッ
チした単語では大文字であるような所があれば、補完される部分もみな小文字
になる。打ち込んだテキストには小文字が1個もなく、打ち込んだテキストで
は大文字だがマッチした単語では小文字であるような所があり、かつその前に
文字があるならば、補完される部分もみな大文字になる。
'noinfercase' にすると、マッチした単語がそのまま挿入される。
'insertmode' 'im' 'noinsertmode' 'noim'
'insertmode' 'im' 切替 (既定ではオフ)
グローバル
Vimが挿入モードを中心として動作するようになる。Vimをモードを持たないエ
ディタとして使いたいときに便利である。evim で使われている。
以下の挿入モードのコマンドが便利だろう。
- カーソル移動に矢印キーを使う
- 1個のノーマルモードコマンドを実行するためにはコマンド CTRL-O を使う
i_CTRL-O。コマンドが別のキー列にマッピングされていたときは、オプショ
ン 'insertmode' がオフであるときのように実行される。つまりマッピング
の内容が終了するまでノーマルモードが続く。
- 数個のノーマルモードコマンドを使うためには先に CTRL-L を使い、その後
挿入モードに戻るために <Esc> を使う。Note CTRL-L を使うと、
'insertmode' をオフにして <Esc> を押したときと同様にカーソルが左へ移
動する。i_CTRL-L
'insertmode' がオンになると、以下の項目に変化がある。
- ファイルの編集を始めたとき、Vimは挿入モードになっている。
- 挿入モードで <Esc> を入力しても動作はなく (no-op)、ビープ音が鳴る。
- ノーマルモードで <Esc> を入力すると挿入モードに移る。
- 挿入モードでの CTRL-L の入力はコマンドであり、挿入されない。
- 挿入モードで CTRL-Z を入力するとサスペンドする。CTRL-Zを参照。
i_CTRL-Z
しかしマッピング内で <Esc> が使われたときは、'insertmode' がオフのとき
のように動作する。これは 'insertmode' がオンでもオフでも、同じマッピン
グが使えるようにするためである。
:normal でノーマルモードコマンドを実行するときは、'insertmode' は使わ
れない。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'isfname' 'isf'
'isfname' 'isf' 文字列 (Win32での既定値は:
"@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,="
AMIGAでは: "@,48-57,/,.,-,_,+,,,$,:"
VMSでは: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~"
OS/390では: "@,240-249,/,.,-,_,+,,,#,$,%,~,="
それ以外では: "@,48-57,/,.,-,_,+,,,#,$,%,~,=")
グローバル
ファイル名やパス名に使われる文字を指定する。ファイル名はコマンド "gf",
"[i" 等やタグファイル内で使われる。またパターン pattern 内の "\f" に
も使われる。
文字コードが 256 以上のマルチバイト文字は常に含まれることになっている
ので、文字コードが 255 以下の文字のみをこのオプションで指定する。
UTF-8では、文字コードが 0xa0 から 0xff の文字は、同様に常に含まれる。
このオプションに空白文字を加える場合はよく考えること! ファイル名にスペー
スが含まれることはあるが、スペースを含めると、ファイル名補完の際に、ど
こからどこまでがファイル名であるか判定できなくなってしまうだろう。おそ
らくスペースは含めない方がよいだろう。
Note '\' をパスの区切りに使うシステムでは、Vimは '\' がユーザーの想定
通りに働くよう最善を尽くす。これには少し巧妙なことをしている。なぜなら
Viは元々、'\' を特殊文字をエスケープするために使っていたからだ。そう
いったシステムでは、普通のファイル名の文字の前にある '\' を取り除かな
い。しかしUnix系列のシステムでは取り除く。既定では '&' と '^' は含まれ
ない。それはこれらの文字が cmd.exe {訳注: Windows NTのシェル} にとって
特別な意味を持つからである。
このオプションの値の書式は、コンマ区切りの指定部のリストである。それぞ
れの指定部は単一の文字または範囲指定からなる。範囲指定は2個の文字コー
ドが '-' で区切られたものである。文字コードは 0 から 255 の10進整数だ
が、代わりにASCIIキャラクタ自身を使ってもよい (ただし数字には使えない)。
例:
"_,-,128-140,#-43" ('_' と、'-' と、コードが 128 から 140
までの文字と、'#' からコードが 43 ま
での文字を含む)
指定部が '^' で始まるとき、それに続く文字コードまたは範囲は指定から除
外される。オプションは左から右に解釈されるので、指定したある範囲に除外
したい文字があったら、それをその範囲の後に除外指定すること。文字 '^'
自体を値に含みたいときは、値または指定部の最後に指定すること。例:
"^a-z,#,^" ('a' から 'z' までの文字を除き、'#' と '^' を
含む)
文字として '@' を指定すると、関数 isalpha() で TRUE が返るような文字全
てが含まれる。普通、それは a から z と A から Z の文字と、それらにアク
セントのついたものである。文字 '@' 自身を値に含みたいときは、"@-@" と
すること。例:
"@,^a-z" アルファベットの仲間全て、ただしアルファベット
の小文字は除く
"a-z,A-Z,@-@" アルファベット全てと、文字 '@'
コンマを含めるには、文字コードが来るはずのところにコンマをおけばよい。
例:
"48-57,,,_" 数字と、コンマと、下線 (アンダースコア)
コンマを除外するには、前に '^' をおく。例:
" -~,^,,9" 空白から '~' までのコンマを除いた全ての文字と
<Tab>
値に空白や '\' を含める方法については、option-backslash を参照。
'isident' 'isi'
'isident' 'isi' 文字列 (Win32での既定値は:
"@,48-57,_,128-167,224-235"
それ以外では: "@,48-57,_,192-255")
グローバル
Identifier に使われる文字を指定する。Identifier は、環境変数の認識とオ
プション 'define' のマッチしたところの後に使われる。またパターン
pattern 内の "\i" にも使われる。このオプションの書式の説明は、
'isfname' を参考にすること。'@' は文字コード 255 までの文字に使われる。
注意: このオプションを変更すると、環境変数の展開に失敗するかもしれない。
例えば値に '/' が含まれているときに "$HOME/.viminfo" を展開しようとす
るとき等である。おそらく代わりに 'iskeyword' を変更するべきだろう。
'iskeyword' 'isk'
'iskeyword' 'isk' 文字列 (Win32でのVimの既定値:
"@,48-57,_,128-167,224-235"
それ以外のシステムでのVimの既定値:
"@,48-57,_,192-255"
Viの既定値: "@,48-57,_")
バッファについてローカル
Keyword は、"w", "*", "[i" 等の多くのコマンドで検索と認識に使われる。
またパターン pattern 内の "\k" にも使われる。このオプションの値の書
式の説明については、オプション 'isfname' を参考にすること。'@' は文字
コード 255 を超える文字で、"word" 文字クラスをチェックする (空白と句読
点ではない任意の文字)。
C言語プログラムには "a-z,A-Z,48-57,_,.,-,>" が使えるだろう。
ヘルプファイルでは、このオプションは '*', '"', '|' と空白の仲間を除い
た全ての printable な文字 {訳注: 文書先頭を参照} に設定される (コマン
ド上で CTRL-] を入力したときにそのコマンドについてのヘルプにジャンプで
きるようにするため)。
'lisp' がオンのときは、文字 '-' は常に含まれる。
このオプションは、シンタックスが :syn-iskeyword を使っていない場合に
は、シンタックスハイライトにも影響を与える。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'isprint' 'isp'
'isprint' 'isp' 文字列 (Win32 と VMS での既定値:
"@,~-255"; それ以外では: "@,161-255")
グローバル
このオプションで指定された文字は、画面に直接表示される。またパターン
pattern 内の "\p" にも使われる。空白 (ASCIIコード 32) から '~'
(ASCIIコード 126) までの文字は、'isprint' に指定されていなくても、また
は除外指定されていても、常に直接表示される。このオプションの書式の説明
は、'isfname' を参考にすること。
unprintable な文字 {訳注: 文書先頭を参照} は、2文字で表示される。
0 - 31 "^@" - "^_"
32 - 126 常に1文字で表示される
127 "^?"
128 - 159 "~@" - "~_"
160 - 254 "| " - "|~"
255 "~?"
'encoding' がUnicodeの一種だったときは、文字コードが 128 から 255 まで
の不正な文字は、<xx> という形式で16進表示される。
'display' に "uhex" が含まれているときは、全ての unprintable な文字が
<xx> の形式で表示される。
unprintable な文字には、ハイライトグループ SpecialKey での強調表示が使
われる。hl-NonText
文字コードが 256 以上のマルチバイト文字は常に含まれることになっている
ので、文字コードが 255 以下の文字のみをこのオプションに指定する。文字
が本来は printable だが現在のフォントでは表示できないときは、代替文字
が表示される。
Unprintable またはゼロ幅のUnicode文字は <xxxx> という形式で表示される。
そういった文字を指定するオプションはない。
'joinspaces' 'js' 'nojoinspaces' 'nojs'
'joinspaces' 'js' 切替 (既定ではオン)
グローバル
行連結コマンドにおいて、'.', '?' や '!' の後に空白を 2 個挿入する。オ
プション 'cpoptions' にフラグ 'j' が含まれるときは、'.' の後にのみ空白
を2個挿入する。
それ以外では空白は1個だけ挿入される。
NOTE: このオプションは、'compatible' がオンになるとオンになるので注意。
'jumpoptions' 'jop'
'jumpoptions' 'jop' 文字列 (既定では "")
グローバル
jumplist の動作を変更する単語のリスト。
stack ジャンプリストをタグスタックのように動作させる。
ジャンプリスト内のエントリの相対位置は、ジャンプリスト
内を逆方向に移動して特定の位置にジャンプするときに、後
続のエントリを破棄するという犠牲を払って保持される。
jumplist-stack
'key'
'key' 文字列 (既定では "")
バッファについてローカル
{+cryptv 機能付きでコンパイルされたときのみ有効}
カレントバッファを暗号化したり復号したりするのに使われるキー。
encryption と 'cryptmethod' を参照。
注意: このキーの値を手動で {訳注: コマンド ":set" を使って、ということ}
設定しないこと。誰かが入力された文字を盗み見るかもしれない。代わりにコ
マンド :X を使うこと。しかし次のようにして、'key' を空にするのはよい。
これは、値を知るべきでない人に知られないようにするためである。このこと
はまた、設定してしまうとユーザー自身も値を知ることができないということ
である。タイプミスをしないよう注意!
:set-=, :set+=, :set^= も使用できないので、このオプションをオン
にして攻撃者がキー内の部分文字列を推測するのを防ぐことができる。
スクリプトで "&key" を使うことで暗号化が有効になっているか確認できる。
'key' がセットされている場合は "*****" (5個のスター) が返る。
'keymap' 'kmp' E544
'keymap' 'kmp' 文字列 (既定では "")
バッファについてローカル
{+keymap 機能付きでコンパイルされたときのみ有効}
キーマッピングの名前を指定する。mbyte-keymap を参照。
このオプションを適正なキーマップ名に設定すると、キーマッピングが有効に
なるようにオプション 'iminsert' が 1 になるという影響がある。また
'imsearch' も、元が -1 でない限り 1 になる。
英数字、'.'、'-'、'_' のみ使用できる。
'keymodel' 'km'
'keymodel' 'km' 文字列 (既定では "")
グローバル
キーで可能なことを指定するためのキーワードの、コンマ区切りのリスト。指
定可能なキーワードは以下の通りである。
startsel シフトキーと特別なキーを同時に押して選択を開始する
(選択モードとビジュアルモードのどちらでも、オプション
'selectmode' で指定された "キー" によって)。
stopsel シフトキーを押さないままの特別なキーで選択を止める。
ここでいう「特別なキー」とはカーソルキー、<End>, <Home>, <PageUp> や
<PageDown> である。
'keymodel' は、コマンド :behave によって設定される。
'keyprotocol' 'kpc'
'keyprotocol' 'kpc' 文字列 (既定: 以下を参照)
グローバル
'term' の値に応じて、使用するキーボードプロトコルを指定する。サポート
されているキーボードプロトコル名は以下:
none 端末が使用するものなら何でもよい
mok2 xterm でサポートされている、modifyOtherKeys レベル 2
kitty Kitty によってサポートされている、Kitty キーボードプロ
トコル
オプションの値は、コンマで区切られた項目のリストである。各項目は、
'term' オプションとマッチするパターン、コロン、使用されるプロトコル名
を持つ。これを説明するために、デフォルト値を次のように設定する:
つまり、'term' のどこかに "kitty", "foot", "wezterm" が含まれている場
合は、"kitty" プロトコルが使われる。'term' のどこかに "xterm" が含まれ
ている場合は、"mok2" プロトコルが使われる。
最初にマッチしたものが使用されるので、"kitty" には kitty プロトコルを
使用させたいが、"badkitty" には使用させたくない場合は、まず "badkitty"
にマッチさせ、"none" を使用する:
このオプションは、'term' が変更された後に使用される。最初に、おそらく
組み込みリストを使用して termcap エントリが設定される。builtin-terms
を参照。
次に、このオプションが検査され、マッチするものがあり、プロトコルが指定
されていれば、以下のことが起こる:
none 何もせず、通常の t_TE と t_TI の値のままである
mok2 t_TE 値は次のように変更される:
CSI >4;m modifyOtherKeys を無効にする
t_TI 値は次のように変更される:
CSI >4;2m modifyOtherKeys を有効にする
CSI ?4m modifyOtherKeys の状態を要求する
kitty t_TE 値は次のように変更される:
CSI >4;m modifyOtherKeys を無効にする
CSI =0;1u kitty キーボードプロトコルを無効にする
t_TI 値は次のように変更される:
CSI =1;1u kitty キーボードプロトコルを有効にする
CSI ?u kitty キーボードプロトコル状態を要求す
る
CSI >c termresponse を要求する
CTRL-L の後に表示される文字が消えてしまう等の問題に気付いた場合は、
このオプションを空にしてみるとよい。その後、'term' オプションを設定す
ると有効になる:
'keywordprg' 'kp'
'keywordprg' 'kp' 文字列 (既定では "man" または "man -s", DOSでは:
":help", VMSでは: "help")
グローバル/バッファについてローカル global-local
コマンド K に使われるプログラム。環境変数は展開される :set_env。
Vim の内部ヘルプを開くコマンドは ":help" である(以前はこのオプションの
グローバル値を空にすると Vim の内部ヘルプが使われたが、今は推奨されて
いない)。
最初の文字が ":" の場合、コマンドは Vim の Ex コマンドとして呼び出さ
れ、[count] がゼロでなければ引数として追加される。
"man", "man -s" または1つのExコマンドが使われた場合、Vim は "K" に指定
されたカウントを自動的に変換し最初の引数として渡す。"man -s" が指定さ
れカウントが指定されなかったときは "-s" が削除される。値に空白や '\'
を含める方法については、option-backslash を参照。
例:
内で設定することはできない。
'langmap' 'lmap' E357 E358
'langmap' 'lmap' 文字列 (既定では "")
グローバル
{+langmap 機能付きでコンパイルされたときのみ有効}
このオプションでは、ユーザーのキーボードを特別な言語モードに切り替えら
れるようにする。挿入モードで文字を入力しているときは、文字は直接入力さ
れる。しかしノーマルモードではオプション 'langmap' により、入力された
特別な文字をキー本来の文字に変換する。つまりノーマルモードコマンドを実
行するためにキーボードモードを変更しなくともよいということである。
このオプションは 'keymap' と正反対のものである。'keymap' は挿入モード
でマッピングを行う。
また 'langmap' のマッピングの結果の文字が適用されるのを防ぐため、
'langremap' をオフにすることも考慮すること。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
例 (ギリシャ語に対して、UTF-8で): greek
'langmap' は、コンマ区切りの指定部のリストである。
それぞれの指定部は次の2種類のうちどちらかの形式に従う。
1. 2文字の組のリスト。変換「元」の文字の直後に変換「先」の文字を置い
て組を作る。例: "aA", "aAbBcC"
2. 変換「元」の文字のリスト、セミコロン、変換「先」の文字のリスト。
例: "abc;ABC"
例: "aA,fgh;FGH,cCdDeE"
特別な文字は '\' を前に置く必要がある。そのような文字は ";", ',', '"',
'|' と '\' 自身である。
Langmap を使えば言語間の切り替えなしにVimの機能を有効化することができ
る。以下のような場合では、ユーザーの言語の文字でも、Vimは (langmap の
マッピングに従って) 通常の英語の文字として理解できる。
o ノーマル/ビジュアルモード (コマンド、バッファ/レジスタ名、ユーザー
のマッピング)
o 挿入/置換モード: CTRL-R 入力後のレジスタ名
o 挿入/置換モード: マッピング
コマンドラインモードで入力された文字には、このオプションは効力を「持た
ない」。Note このオプションは、異なった言語/エンコーディング用のマッ
ピングを切り替えられるときにはいつでも設定を変更できることに注意。毎回
マッピング設定を打ち込まずに済むようにするには、マッピングを使うこと!
'langmenu' 'lm'
'langmenu' 'lm' 文字列 (既定では "")
グローバル
{+menu 機能と +multi_lang 機能付きでコンパイルされ
たときのみ有効}
メニュー翻訳に使われる言語。つまり 'runtimepath' 内のディレクトリ
"lang" からどのファイルを読み込むのか指定する。指定方法は次の通り (空
白はなし)。
を使うには、次のようにする。
通常のファイル名文字だけが使用できる。"/\*?[|<>" は不正である。
ユーザーの環境変数 $LANG は英語以外の言語だが、必ず英語のメニューを使
いたいならば、次のようにする。
調表示の起動のいずれよりも先に設定しなければならない。メニューが定義さ
れてしまうと、このオプションを設定しても何の効果もない。しかしこうする
ことはできる。
がいったん削除される!
'langnoremap' 'lnr' 'nolangnoremap' 'nolnr'
'langnoremap' 'lnr' 切替 (既定ではオフ、defaults.vim でオンに設定される)
グローバル
{+langmap 機能付きでコンパイルされたときのみ有効}
これは 'langremap' に似ているが、値が逆になっている。また後方互換性の
ためだけに残されている。'langremap' を設定した時は、逆の値が
'langnoremap' に設定され、反対もまた同様である。
'langremap' 'lrm' 'nolangremap' 'nolrm'
'langremap' 'lrm' 切替 (既定ではオン、defaults.vim 内でオフに設定される)
グローバル
{+langmap 機能付きでコンパイルされたときのみ有効}
オフの場合、'langmap' の文字がマッピングの結果として適用されない様に
なる。基本的には、もし 'langmap' の設定により幾らかのマッピングが無効
になっていると気づいた場合には、このオプションの設定を試みると良い。
このオプションは後方互換性の為にデフォルトでオンである。マッピングが壊
れないようにするにはオフを設定すると良い。
'laststatus' 'ls'
'laststatus' 'ls' 数値 (既定では 1)
グローバル
最下ウィンドウにいつステータス行が表示されるかを設定する。
0: 全く表示しない
1: ウィンドウの数が2以上のときのみ表示
2: 常に表示
ウィンドウをいくつか表示しているときには、ステータス行があると見栄えが
よくなる。しかし画面上の行をさらに必要とする。status-line
'lazyredraw' 'lz' 'nolazyredraw' 'nolz'
'lazyredraw' 'lz' 切替 (既定ではオフ)
グローバル
オンのときは、マクロやレジスタの内容およびその他のキーボードから打ち込
まれないコマンドを実行する間、画面は再描画されなくなる。また、ウィンド
ウタイトルの更新も後回しになる。画面の再描画を強制的に行うには、コマン
ド :redraw を使うこと。
これにより表示エラーとなることがある。再描画によってちらつきや速度低下
になる場合にのみ一時的に設定することを目的としてる。
'linebreak' 'lbr' 'nolinebreak' 'nolbr'
'linebreak' 'lbr' 切替 (既定ではオフ)
ウィンドウについてローカル
{+linebreak 機能付きでコンパイルされたときのみ有効}
オンのときは、画面に収まりきる最後の文字ではなく、オプション 'breakat'
に指定された文字のところで、長い行を折り返す。'wrapmargin' や
'textwidth' と違い、これはファイルに実際の <EOL> を挿入しない。このオ
プションが影響するのはファイルの表示方法であり、内容ではない。
'breakindent' がオンのときは行はインデントされて表示される。そして、
'showbreak' に設定された文字が折り返された行の先頭に置かれる。このオプ
ションは、'wrap' がオフのときには使われない。
Note 大抵、<EOL> の後の <Tab> は正しい数の空白として表示されないので注
意。
'lines' E593
'lines' 数値 (既定では 24 またはターミナルの高さ)
グローバル
画面上の行数。普通このオプションはターミナルの初期化の時点で設定され、
手動で設定する必要はない。posix-screen-size も参照。
VimがGUI環境内やサイズ変更可能なウィンドウ内で実行されているときは、こ
のオプションを変更するとウィンドウサイズも変更される。このサイズ設定を
GUI でだけ使用したいなら、このコマンドを gvimrc ファイルに書くこと。
行数の最大値は、画面に収まる行数に制限される。可能な限りウィンドウの高
さを大きくするには次のコマンドを使う:
行数が期待したのより少なかったら、オプション 'guiheadroom' を確認する
こと。
あなたがこのオプションを変更したのに、Vimがディスプレイの行数の物理的
な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが
ある。
{訳注: オプション 'columns' も参照}
'linespace' 'lsp'
'linespace' 'lsp' 数値 (既定では 0, Win32のGUI版では 1)
グローバル
{VimのGUI版でのみ有効}
行間の幅のピクセル数。フォントが文字セルの高さを一杯に使っていて、行同
士が接触してしまうときに便利である。1 以上のときには下線を引く余裕がで
きる。
フォントによっては行間が広すぎることがある。その場合は 'linespace'を負
の値にすると調整することができる。しかしそうすると表示に問題が出る場合
がある。
'lisp' 'nolisp'
'lisp' 切替 (既定ではオフ)
バッファについてローカル
Lispモード: 挿入モードで <Enter> が入力されると、次の行のインデントを
Lisp の標準 (というかまあ、その一種) にする。また "cc" や "S" でも同様
である。これが機能するにはオプション 'autoindent' もオンでなければなら
ない。'cpoptions' のフラグ 'p' はインデントの方法 (Vi互換か、より良い
方法か) を変更する。'lispwords' も参照。
キーワードを構成する文字に '-' も含まれるようになる。'equalprg' が空の
ときには、外部プログラムを呼び出さず、Lisp用のインデント用アルゴリズム
を使うように、オペレータ "=" を再定義する。
このオプションは、'paste' がオンのときには使われない。
'lispoptions' 'lop'
'lispoptions' 'lop' 文字列 (既定では "")
バッファについてローカル
'lisp' オプションとともに有効化された場合、Lisp のインデントに影響を
与える項目のコンマ区切りのリスト。現在サポートされている項目は 1 つだ
けである。
expr:1 設定されている場合、Lisp のインデントに 'indentexpr' を
使用する
expr:0 Lisp のインデントに 'indentexpr' を使用しない (デフォ
ルト)
Note 'indentexpr' を使用する場合、= 演算子はすべての行をインデントす
る。それ以外の場合、最初の行はインデントされないことに注意 (Vi 互換)。
'lispwords' 'lw'
'lispwords' 'lw' 文字列 (既定値はとても長い)
グローバル/バッファについてローカル global-local
'lisp' オプションとともに有効化された場合、Lisp用のインデント方法を
設定するキーワードの、コンマ区切りのリスト。
'list' 'nolist'
'list' 切替 (既定ではオフ)
ウィンドウについてローカル
listモード: デフォルトではタブ文字を CTRL-I で表示し、行末に $ を表示
する。タブ文字と空白文字との差異や、行末に続く空白の差異を見るのに便利
である。オプション 'listchars' でより詳しく表示方法を設定できる。
カーソルはタブが占める桁の最初の位置に表示される。nolist の場合はノー
マルモードでカーソルをタブの上に移動させると、タブが占める桁の最後の位
置にカーソルが表示されるが、それと異なる。タブをスペースで表示しつつ、
カーソル位置をそのように変えたいなら、次のようにする:
Note オプション 'cpoptions' がフラグ 'L' を含むならば、このオプション
は整形コマンドにも影響することに注意 ('textwidth' や 'wrapmargin' と共
に設定されたとき)。タブの表示方法の変更については、'listchars' を参照。
'listchars' 'lcs'
'listchars' 'lcs' 文字列 (既定では "eol:$")
グローバル/ウィンドウについてローカル global-local
'list' モードと :list コマンドでの表示に使われる文字を設定する。値は
指定文字列のコンマ区切りのリストである。 E1511
lcs-eol
eol:文字 行末の表示に使われる文字。指定されないと、行末には何も
表示されない。
lcs-tab
tab:xy[z] タブ文字の表示に使われる 2つ または 3つの文字。
3文字目は任意。
tab:xy 'x' が常に使用され、次に 'y' が適切な回数だけ使用され
る。したがって、"tab:>-" は以下のように表示される:
>
>-
>--
etc.
tab:xyz 'z' が常に使用され、次に 'x' が先頭に追加され、次に
'y' が適切な回数使用される。したがって、"tab:<->" は以
下のように表示される:
>
<>
<->
<-->
etc.
"tab:" が省略された場合、タブは ^I と表示される。
lcs-space
space:文字 スペースの表示に使われる文字。指定されないと、スペース
は空白のまま。
lcs-multispace
multispace:文字...
複数の連続した空白を表示するために循環的に使われる1つ
以上の文字。単一の空白を除いて "space" の設定を上書き
する。省略された場合、"space" の設定が使われる。例とし
て、:set listchars=multispace:---+ は10文字の連続ス
ペースで次のようになる:
---+---+--
lcs-lead
lead:文字 先頭のスペースの表示に使われる文字。指定されないと、先
頭のスペースは空白のまま。行頭のスペースでは "space"
および "multispace" の設定を上書きする。"tab:" と組み
合せられる、例えば:
leadmultispace:c...
lcs-multispace 値と似ているが、先頭のスペースのみを
対象とする。先頭の複数スペースのために lcs-lead も
オーバーライドする。
:set listchars=leadmultispace:---+ は10文字の連続ス
ペースで次のようになる:
---+---+--XXX
ここで "XXX" はこの行の最初の空白ではない文字を意味す
る。
lcs-trail
trail:文字 行末のスペースの表示に使われる文字。指定されないと、行
末のスペースは空白のまま。行末のスペースでは "space"
および "multispace" の設定を上書きする。
lcs-extends
extends:文字 'wrap' がオフで、行が画面の右端よりも伸びているときに、
最終列に表示される文字。
lcs-precedes
precedes:文字 最初の列に表示される文字の前にテキストがある場合 {訳注:
上の行の末尾が画面の右端より伸びているとき} に、物理行
の最初に目に見える列に表示する文字。
lcs-conceal
conceal:文字 'conceallevel' が 1 のときに Conceal されたテキストの
代わりに表示される文字。
lcs-nbsp
nbsp:文字 ノーブレークスペース文字 (0xA0 (10進数では160) や
U+202F) の表示に使われる文字。指定されない場合は空白の
まま。{訳注: 0xA0はLatin1で改行なしスペースを表す}
文字 ':' と ',' は使うべきでない。'encoding' が "utf-8" のときは UTF-8
の文字が使える。そうでないときは printable な文字 {訳注: 文書先頭を参
照} だけが使える。全ての文字は幅が1でなければならない。 E1512
各文字は16進数で指定できる:
で4桁、\\U で8桁ちょうどでなければならない。
例:
表示がなされ、"tab", "nbsp", "space", "multispace", "lead", "trail" に
はハイライトグループ "SpecialKey" が適用される。
hl-NonText hl-SpecialKey
'lpl' 'nolpl' 'loadplugins' 'noloadplugins'
'loadplugins' 'lpl' 切替 (既定ではオン)
グローバル
オンのときは、Vimが立ち上がるときにプラグインスクリプトが読み込まれる
load-plugins。
このオプションをユーザーのファイル vimrc 内でオフにすることで、プラグ
インの読み込みを無効化できる。
Note コマンドライン引数 "-u NONE", "-u DEFAULTS" または "--noplugin"
によってこのオプションをオフにできることに注意。-u --noplugin。
'luadll'
'luadll' 文字列 (既定値はビルドに依存)
グローバル
{+lua/dyn 機能付きでコンパイルされたときのみ有効}
Lua 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_LUA_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'macatsui' 'nomacatsui'
'macatsui' 切替 (既定ではオン)
グローバル
{サポートしない}
Mac OS X GUI のコードが削除されたため、すでにサポートされなくなった。
'magic' 'nomagic'
'magic' 切替 (既定ではオン)
グローバル
検索パターン内で使用可能な特別な文字を変更する。pattern を参照。
警告: このオプションをオフにするとプラグインの多くの動作を壊す可能性が
高い! 多くのパターンがこのオプションがオンであると仮定しており、オフに
なっているとそれらが失敗するからである。古い Vi 用のスクリプトを使うと
きにだけオフにするべきだろう。それ以外の状況では 'magic' がオンである
時に動作するパターンを書けば良い。また /\M が必要ならば "\M" を含め
ると良い。
Vim9 script では 'magic' の値は無視され、パターンは常にセットされて
いるかのように振る舞う。
'makeef' 'mef'
'makeef' 'mef' 文字列 (既定では "")
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
コマンド :make (:make_makeprg を参照) と :grep に使われるエラー
ファイルの名前。
値が空のときは、内部で生成された一時ファイルが使われる。
"##" が含まれているときは、その部分はファイル名の一意性を保つための数
字に置き換えられる。こうすれば ":make" で既存のファイルを上書きしてし
まうことがなくなる。
":cf" には使われ「ない」。それについてはオプション 'errorfile' を参照。
環境変数は展開される :set_env。
値に空白や '\' を含める方法については、option-backslash を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'makeencoding' 'menc'
'makeencoding' 'menc' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
外部コマンドの出力を読むときに使用されるエンコーディング。空の時はエン
コーディングは変換されない。
これは以下のコマンドに使用される: :make, :lmake, :grep, :lgrep,
:grepadd, :lgrepadd, :cfile, :cgetfile, :caddfile, :lfile,
:lgetfile および :laddfile
これは主に MS-Windows で 'encoding' を "utf-8" に設定している場合に有
用である。もし +iconv が有効化されており GNU libiconv が使われている
際には、'makeencoding' を "char" に設定することはシステムロケールのエ
ンコーディングに設定するのと同じ効果がある。例:
'makeprg' 'mp'
'makeprg' 'mp' 文字列 (既定では "make", VMSでは "MMS")
グローバル/バッファについてローカル global-local
コマンド ":make" で使われるプログラム。:make_makeprg を参照。値には
文字 '%' と '#' を使える (:_% と :_# 参照)。これらはそれぞれ現在の
ファイル名と代替ファイル名に展開される。ファイル名に特殊文字が含まれる
ときは ::S を使う。
環境変数は展開される :set_env。値に空白や '\' を含める方法については、
option-backslash を参照。Note 文字 '|' は2回エスケープすることに注意:
1回目はコマンド ":set" に対して、2回目はコマンドの解釈に対してである。
ユーザーのフィルタが "マイフィルタ" であるときは、次のようにする。
内で設定することはできない。
'matchpairs' 'mps'
'matchpairs' 'mps' 文字列 (既定では "(:),{:},[:]")
バッファについてローカル
括弧などの組を構成する文字。コマンド % で片方からもう片方にジャンプ
する。
設定できるのは違う文字の組だけである。つまりダブルクォートで囲まれた区
間をジャンプすることはできない。
文字はコロンで区切る。
組はコンマで区切って指定する。値に '<' と '>' を設定する例 (HTML用):
さらに興味深い例は、代入文の '=' と ';' の間でジャンプするもので、Cや
Java等の言語で便利である。
コマンド "%" のさらに発展的な使用法については、ディレクトリ
$VIMRUNTIME/pack/dist/opt/matchit 内のプラグイン matchit.vim を参照。
add-local-help
'matchtime' 'mat'
'matchtime' 'mat' 数値 (既定では 5)
グローバル
オプション 'showmatch' がオンのとき、マッチしている括弧を表示するため
の時間を0.1秒単位で指定する。Note このオプションでは、他の時間関係のオ
プションと違い、単位がミリ秒でないので注意。これは Nvi との互換性を保
つためである。
'maxcombine' 'mco'
'maxcombine' 'mco' 数値 (既定では 2)
グローバル
表示の際にサポートされている文字の組み合わせ数の最大値。
'encoding' が "utf-8" のときだけ適用される。
ほとんどの言語に対しては既定値で十分である。ヘブライ語は4以上が必要で
ある。最大値は6。
このオプションの値が2のときでも、それ以上の組み合わせのテキストを編集
することは可能である。ただしそれを表示することはできない。g8 やga
を使う。mbyte-combining を参照。
'maxfuncdepth' 'mfd'
'maxfuncdepth' 'mfd' 数値 (既定では 100)
グローバル
{+eval 機能付きでコンパイルされたときのみ有効}
ユーザー定義関数の関数呼び出しの深さの最大値。これは普通、終わらない再
帰呼び出しを捉えるために使われる。関数のさらに深い再帰呼び出しを使うと
きは、オプション 'maxfuncdepth' に、さらに大きい値を設定すること。しか
しこうするとメモリを余計に消費するので、メモリを使い果たしたときに落ち
る危険がある。
この制限を200より大きな値に増やした場合、Exコマンドの再帰の最大値も変
更される。E169 参照。
:function も参照。
コールバック関数の呼び出しの深さの最大値にも用いられる。
'maxmapdepth' 'mmd' E223
'maxmapdepth' 'mmd' 数値 (既定では 1000)
グローバル
マッピングに対するマッピングを、文字が使われるまでに繰り返す回数の最大
値。これは普通、":map x y" と ":map y x" のような堂々巡りで終わらない
マッピングを捉えるために使われる。しかしこれは ":map g wg" 等は捉えな
い。それは次のマッピングが行われる前に 'w' が使われているからである。
key-mapping も参照。
'maxmem' 'mm'
'maxmem' 'mm' 数値 (既定では 256 から 5120 の間 (システムによって
異なる) または利用できるメモリの半分)
グローバル
1つのバッファに使用できるメモリの最大値 (キロバイト単位)。この限界に達
すると、バッファにさらにメモリを割り当てるときには、他のメモリを解放す
る。
このオプションの最大値は約 2000000 である。限界を設けないときには
この値に設定すること。
'swapfile' がオフの場合、この値は無視される。
'maxmemtot' も参照。
'maxmempattern' 'mmp'
'maxmempattern' 'mmp' 数値 (既定では 1000)
グローバル
パターンマッチングに使うメモリ量の最大値(キロバイト単位)。設定可能な最
大値は約2000000。限界を設けないときにはこの値に設定すること。
E363
この制限に達したときは、エラーメッセージを表示し、たいていの場合
CTRL-C が押されたのと同じように振る舞う。
制限に達するのはたいてい、検索パターンが極めて非効率であるか複雑過ぎる
ときである。これは非常に長い行の上で "\(.\)*" を検索するとすぐになる。
".*" の方がはるかによい。
複雑なテキスト構造を構文ルールがマッチさせようとするときに、再描画で同
様に起こりうる。
'maxmempattern' の制限に達する前に Vim がメモリ不足になるかもしれず、
その場合は代わりに "Out of memory" エラーになる。
'maxmemtot' 'mmt'
'maxmemtot' 'mmt' 数値 (既定では 2048 から 10240 の間 (システムによっ
て異なる) または利用できるメモリの半分)
グローバル
全てのバッファで使用するメモリの合計の最大値 (キロバイト単位)。このオ
プションの最大値は約 2000000 (2 ギガバイト)である。限界を設けないとき
にはこの値に設定すること。
64 ビットマシンではもっと高くしても動作するかもしれない。けれど、本当
にテキストの編集に 2 ギガバイト以上も必要ですか? テキスト自体はス
ワップファイルに保存されるので、この設定でも 2 ギガバイト以上のファイ
ルは編集できることを、忘れないこと。メモリはアンドゥ情報を記憶するのに
必要なのだ。
'swapfile' がオフになっているバッファも、全体のメモリ使用量に数えられ
る。
'maxmem' も参照。
'menuitems' 'mis'
'menuitems' 'mis' 数値 (既定では 25)
グローバル
{+menu 機能付きでコンパイルされたときのみ有効}
メニューの項目数の最大値。自動生成されるメニュー、例えばバッファメニュー
に対して使われる。このオプションを変更しても直接の効果はなく、メニュー
を更新しなければならない。
'mkspellmem' 'msm'
'mkspellmem' 'msm' 文字列 (既定では "460000,2000,500")
グローバル
{+syntax 機能付きでコンパイルされたときのみ有効}
:mkspell に対するパラメーター。単語ツリーの圧縮を開始するタイミング
を設定する。単語がたくさんあると圧縮に時間がかかるが、メモリ不足になる
のを防ぐためには必要な事である。単語につき使われるメモリ量はそれらの単
語がどれだけ似ているかに密接に関係する。そのため、この設定は複雑になる。
3つの数値があり、それらをコンマで区切る:
{start},{inc},{added}
ほとんどの言語では圧縮しない単語ツリーがメモリに収まる。{start} は圧縮
を行う前に使えるメモリ量をキロバイト単位で指定する。これは Vim が利用
可能なメモリ量より少し少なくするべきである。
{start} の制限を超えたとき、別な圧縮を行う前に割り当てることができるメ
モリ量を {inc} によりキロバイト単位で指定する。これを低い値にするとよ
り少ない単語を追加した後に圧縮を行うことになる。高い値にするとより多く
のメモリが割り当てられることになる。
圧縮を行った後、さらにメモリが必要になって {inc} の制限が無視されて圧
縮が行われる前に {added}×1024 個の単語を追加することができる。これを
低い値にすると {inc} の制限にぶつかる機会が少なくなり、より少ないメモ
リを使うが、遅くなる。
これらの値が重要になる言語はイタリア語とハンガリー語である。システムが
約 512Mbyte のメモリを備えているときは既定値でうまくいく。1 GByte のメ
モリを持っているならこうしてもよい:
値であっても、ある言語に対しては :mkspellが失敗するかもしれない。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'modeline' 'ml' 'nomodeline' 'noml'
'modeline' 'ml' 切替 (Vimの既定値はオン (rootの場合はオフ)、
Viの既定値はオフ)
バッファについてローカル
'modeline' がオンの場合、'modelines' は setコマンドに対してチェックさ
れる行数を与える。
'modeline' がオフの場合、または 'modelines' がゼロの場合、行はチェック
されない。modeline を参照。
'modelineexpr' 'mle' 'nomodelineexpr' 'nomle'
'modelineexpr' 'mle' 切替 (既定ではオフ)
グローバル
オンにすると、式であるいくつかのオプションをモードラインで設定できるよ
うになる。オプションが 'modelineexpr' の影響を受けているかどうかを確認
すること。modeline も参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'modelines' 'mls'
'modelines' 'mls' 数値 (既定では 5)
グローバル
オプション 'modeline' がオンのときは、テキスト中のコマンド ":set" を
'modelines' に指定された行数だけ調べる。'modeline' がオフであるか、
'modelines' が 0 のときは、":set" は調べられない。modeline を参照。
NOTE: 'modeline' は、'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'modifiable' 'ma' 'nomodifiable' 'noma'
E21
'modifiable' 'ma' 切替 (既定ではオン)
バッファについてローカル
オフのときは、バッファの内容が変更できなくなる。オプション
'fileformat' と 'fileencoding' も変更できなくなる。
起動時にコマンドライン引数 -M でオフに設定できる。
'modified' 'mod' 'nomodified' 'nomod'
'modified' 'mod' 切替 (既定ではオフ)
バッファについてローカル local-noglobal
オンのとき、バッファは変更を受けたものとされる。これは以下のようなとき
にオンになる。
1. 最後に書き込みをした後にテキストが変更されたとき。undo をするコマ
ンドで元の状態まで戻ったときは、このオプションはオフになる。しかし
書き込みより前の編集を undo すると、再びこのオプションはオンになる。
テキストが最後に書き込まれたときと異なっているからである。
2. オプション 'fileformat' や 'fileencoding' が元の値と異なっていると
き。元の値とは、バッファが読み込まれたり書き込まれたときに設定され
た値である。コマンド ":set nomodified" は 'fileformat' や
'fileencoding' を現在の値に設定し、'modified' をオフにする。
'eol' と 'bomb' に似ている。
このオプションは、BufNewFile、BufRead/BufReadPost、BufWritePost、
FileAppendPost、VimLeave イベントでバッファが変更された場合には設定さ
れない。例として gzip-example 参照。
'buftype' が "nowrite" または "nofile" であるときもこのオプションを設
定できるが、無視される。
Note: テキストは実質同じであることもある、例えば "A" の上で "rA" を押
した場合も 'modified' はセットされる。
'more' 'nomore'
'more' 切替 (Vimの既定値: オン、Viの既定値: オフ)
グローバル
オンのときは、一覧表示で画面が一杯になったときは一旦停止し、「継続」プ
ロンプト more-prompt を表示する。オフのときは停止せず、最後まで表示
する。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'mouse'
'mouse' 文字列 (既定では "", GUI版とWin32では "a",
defaults.vim 内で "a" か "nvi" に設定される)
グローバル
オンのとき、マウスが利用可能になる。ほとんどの端末で動作する(xterm,
Win32 win32-mouse, QNX pterm, sysmouse 付きの *BSD コンソールおよび
gpm 付きの Linux コンソール)。GUIでマウスを使うことについては、
gui-mouse を参照。マウスの利用はモードごとに設定できる。
n ノーマルモードおよび端末モード
v ビジュアルモード
i 挿入モード
c コマンドラインモード
h ヘルプファイルを閲覧しているときの上記のモード全て
a 上記のモード全て
r 「続けるには」プロンプト hit-enter および「継続」プ
ロンプト more-prompt が出ているとき
普通、次のようにしてマウスを5モード全てで利用可能にする。
下を使用する:
イベントを使用しているVimに戻ることができる。
defaults.vim では、'term' オプションが "xterm" と一致しない場合、
"nvi" が使用される。
マウスを有効にしていなくても、GUI版ではモードレスセレクションにマウス
を使うことができる。しかしこのときにはカーソルは動かない。
mouse-using を参照。またオプション 'clipboard' も参照。
Note: ターミナルでマウスを有効にすると、Xサーバーにアクセスできるなら
ばコピー/貼り付けではレジスタ "* を使うことに注意。マウスボタンの
xterm風の操作は、シフトキーを押したままにすることで実現できる。
'clipboard' も参照。
'mousefocus' 'mousef' 'nomousefocus' 'nomousef'
'mousefocus' 'mousef' 切替 (既定ではオフ)
グローバル
{VimのGUI版でのみ有効}
オンのときは、マウスカーソルのおかれたウィンドウが自動的にアクティブに
なる。マウス以外でウィンドウ配置やウィンドウフォーカスを変更すると、マ
ウスカーソルはキーボードフォーカスと共に移動する。既定ではオフだが、こ
れはマウスカーソルを動かして予期しないウィンドウをアクティブにしてしま
うことがあるため、プルダウンメニューの利用を少し面倒にするからである。
MS-Windows: マウスのスクロールホイールを使ったときにどのウィンドウがス
クロールされるかについては 'scrollfocus' も参照。
'mousehide' 'mh' 'nomousehide' 'nomh'
'mousehide' 'mh' 切替 (既定ではオン)
グローバル
{VimのGUI版でのみ有効}
オンのとき、文字が入力されるときにはマウスカーソルが隠される。マウスが
動くとマウスカーソルは再び現れる。
'mousemodel' 'mousem'
'mousemodel' 'mousem' 文字列 (既定では "extend", Win32では "popup")
グローバル
マウスの動作モデルを設定する。モデル名は主にマウスの右クリックで行われ
る動作を表している。
extend 右クリックで選択範囲を広げる。これは xterm と同様の動
作である。
popup 右クリックでポップアップメニューを表示する。シフト+左
クリックで選択範囲を広げる。これは MS-Windows のような
動作になる。
popup_setpos "popup" と似ているが、カーソルが右クリックした場所に移
動する。その結果、選択範囲を対象とする操作が {訳注: マ
ウスのドラッグで選択した範囲ではなく} クリックしたオブ
ジェクトに対して働くようになる。
元々操作の対象となるはずの選択範囲内を右クリックしたと
きは、カーソルは移動しない。もちろん、選択範囲の外側を
左クリックすればビジュアルモードは終了する。
それぞれのモデルでの、マウス操作の働きの一覧:
マウス操作 extend popup(_setpos)
左クリック カーソル移動 カーソル移動
左ドラッグ 選択開始 選択開始
シフト+左 単語検索 選択範囲の拡張
右クリック 選択範囲の拡張 メニュー (カーソル移動)
右ドラッグ 選択範囲の拡張 なし
中央クリック 貼り付け 貼り付け
"popup" モデルでは、右クリックでポップアップメニューを表示する。これは
先に定義しておかなければならない。popup-menu を参照。
Note マウス操作による動作は、マッピングでさらに詳しく設定できることに
注意。gui-mouse-mapping を参照。しかしマッピングはモードレスセレクショ
ンには「使われない」 (GUIそのものの機能であるため)。
オプション 'mousemodel' は、コマンド :behave で設定できる。
'mousemoveevent' 'mousemev' 'nomousemoveevent' 'nomousemev'
'mousemoveevent' 'mousemev' 切替 (既定ではオフ)
グローバル
{VimのGUI版でのみ有効}
オンの時、マウスの移動イベントを入力キューへ引き渡し、マッピングに使用
できる。デフォルトはオフで、必要な時以外のマウスの移動によるオーバー
ヘッドを抑止する。gui-mouse-mapping を参照。
注意: このオプションを設定するとマウスの移動時にマッピング破棄で待ち状
態を作る。
現在はGUIでのみ動作し、端末内での動作は今後対応になる。
'mouseshape' 'mouses' E547
'mouseshape' 'mouses' 文字列 (既定では "i-r:beam,s:updown,sd:udsizing,
vs:leftright,vd:lrsizing,m:no,
ml:up-arrow,v:rightup-arrow")
グローバル
{+mouseshape 機能付きでコンパイルされたときのみ有効}
それぞれのモードでのマウスカーソルの外観を設定する。値はコンマ区切りの
指定部のリストであり、オプション 'guicursor' に使われるものと大分似て
いる。指定部は、次のような状態リストと外観設定からなる。
状態リスト:外観,状態リスト:外観,..
状態リストは、以下のモードまたはカーソル位置のダッシュ '-' 区切りのリ
ストである。
普通のウィンドウ内:
n ノーマルモード
v ビジュアルモード
ve 'selection' に "exclusive" が含まれているときのビジュ
アルモード (指定されなければ 'v' と同じ設定になる)
o Operator-pendingモード
i 挿入モード
r 置換モード
その他:
c コマンドラインへの追加時
ci コマンドラインへの挿入時
cr コマンドラインでの置換時
m 「続けるには」プロンプトまたは「継続」プロンプト表示中
e 全てのモードにおいて、マウスカーソルが最下ウィンドウよ
りも下に置かれているとき
s 全てのモードにおいて、マウスカーソルがステータス行に置
かれているとき
sd 全てのモードにおいて、ステータス行をドラッグ中のとき
vs 全てのモードにおいて、マウスカーソルが垂直分割の区切り
行に置かれているとき
vd 全てのモードにおいて、垂直分割区切りをドラッグ中のとき
a あらゆる場所
指定可能なマウスカーソルの形は以下の通りである。
avail 名前 外見
w x arrow 普通のマウスカーソル
w x blank カーソルなし (注意して使うこと!)
w x beam I 状の縦棒
w x updown 上下のサイズ変更矢印
w x leftright 左右のサイズ変更矢印
w x busy システムの「待ち」カーソル
w x no システムの「入力不可」カーソル
x udsizing 上下のサイズ変更を示す
x lrsizing 左右のサイズ変更を示す
x crosshair 大きくて細い +
x hand1 黒い手
x hand2 白い手
x pencil 文字を書くときの、あの鉛筆
x question 大きな ?
x rightup-arrow 右上向き矢印
w x up-arrow 上向き矢印
x <number> 任意の X11 のカーソルナンバー
(X11/cursorfont.h を参照)
上の "avail" という項目は、'w' ならばそのマウスカーソルをWin32で利用で
き、'x' ならばX11で利用できることを表す。
指定されなかったモードや、利用不可能なカーソルを指定されたモードでは、
通常のマウスカーソルを使う。
例:
「続けるには」プロンプトが表示されているときには入力不可を表す (この状
態ではマウスクリックに効果がないので)。
'mousetime' 'mouset'
'mousetime' 'mouset' 数値 (既定では 500)
グローバル
GUI版, Win32とUnixのxtermでのみ有効。ダブルクリックなどとして認識され
るクリックとクリックの間の時間を、ミリ秒単位で設定する。
'mzquantum' 'mzq'
'mzquantum' 'mzq' 数値 (既定では 100)
グローバル
{+mzscheme 機能付きでコンパイルされたときのみ有効}
MzScheme のスレッドを切り替える間隔(ミリ秒)。
負または0にするとスレッドのスケジューリングを行わなくなる。
NOTE: このオプションは 'compatible' がオフになるとVimの既定値に設定さ
れるので注意。
'mzschemedll'
'mzschemedll' 文字列 (既定値はビルドに依存)
グローバル
{+mzscheme/dyn 機能付きでコンパイルされたときのみ有
効}
MzScheme 共有ライブラリの名前を指定する。既定値はコンパイル時に指定さ
れる DYNAMIC_MZSCH_DLL である。
環境変数は展開される :set_env。
値は vimrc スクリプト内、もしくはもっと早い段階で設定されるべきであ
る。起動時の、load-plugins ステップ前。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'mzschemegcdll'
'mzschemegcdll' 文字列 (既定値はビルドに依存)
グローバル
{+mzscheme/dyn 機能付きでコンパイルされたときのみ有
効}
MzScheme 共有ライブラリの名前を指定する。既定値はコンパイル時に指定さ
れる DYNAMIC_MZGC_DLL である。
この値は、'mzschemedll' が GC コードを含むのであれば、それと同じにする
ことができる。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'nrformats' 'nf'
'nrformats' 'nf' 文字列 (default "bin,octal,hex",
defaults.vim 内で "bin,hex" に設定される)
バッファについてローカル
テキスト内の数をコマンド CTRL-A や CTRL-X で増減させるとき、Vimに何を
数として認識させるかを設定する。これらのコマンドの詳しい情報については
CTRL-A を参照。
alpha これが含まれると、単一のアルファベットも増減操作を受ける。これ
は a), b) 等の、文字を使ったリストに対して便利である。
octal-nrformats
octal これが含まれると、0 で始まる数は8進数として認識される。例:
"007" の上で CTRL-A を使うと "010" となる。
hex これが含まれると、"0x" や "0X" で始まる数は16進数として認識さ
れる。例: "0x100" の上で CTRL-X を使うと "0x0ff" となる。
bin これが含まれている場合には、"0b" か "0B" で始まる数値は2進数で
あるとみなす。例えば "0b1000" の上で CTRL-X を押すと1減算され、
結果 "0b0111" になる。
unsigned これが含まれている場合には、数字は符号無しであるとして扱わ
れる。結果として、先頭のダッシュもしくは負記号は数字の一部とし
ては扱われない。例えば:
CTRL-X を "9-2020" の "2020" 上で使った結果は "9-2019"
("unsigned" なしだとこれは "9-2021" になる)。
CTRL-A を "9-2020" の "2020" 上で使った結果は "9-2021"
("unsigned" なしだとこれは "9-2019" になる)。
CTRL-X を "0" もしくは CTRL-A を "18446744073709551615"
(2^64 - 1) 上で使っても効果はなく、オーバーフローが防がれ
る。
blank 含まれている場合は、先行する空白に基づいて数値を符号付きまたは
符号なしとして扱う。先頭にダッシュがある数値の直前に空白以外の
文字 (つまり、タブまたは " " ではない文字) がある場合、負の符
号は数値の一部としてはみなされない。例:
"Carbon-14" の "14" で CTRL-A を使用すると、"Carbon-15"
になる ("blank" がなければ "Carbon-13" になる)。
"Carbon -8" の "8" で CTRL-X を使用すると、"Carbon -9" に
なる (-8 の前に空白があるため。"unsigned" が設定されている
場合は、"Carbon -7" になる)。
この形式が含まれている場合、"unsigned" が設定されているかのよ
うにオーバーフローは防がれる。この形式と "unsigned" の両方が含
まれている場合、"unsigned" が優先される。
1 から 9 の数字で始まる数は、常に10進数として認識される。8進数または16
進数として認識されない数も10進数として認識される。
'number' 'nu' 'nonumber' 'nonu'
'number' 'nu' 切替 (既定ではオフ)
ウィンドウについてローカル
毎行の前に行番号を表示する。オプション 'cpoptions' にフラグ 'n' が含ま
れていないときは、折り返された行の先頭は行番号の表示される桁に入り込ま
ない ('compatible' がオフのときはこれが既定である)。
オプション 'numberwidth' で行番号の幅を設定することができる。
折り返された行が長すぎて {訳注: 行の途中の部分だけで画面一杯になってし
まい} 行の本当の先頭の文字が表示されていないときは、文字 '-' が行番号
の前に表示される。
ハイライトについては hl-LineNr と hl-CursorLineNr、そして
:sign-define の "numhl" 引数の箇所を参照。
number_relativenumber
'relativenumber' オプションは表示される番号をカーソルからの相対にする。
'number' と共にこれら4つの組み合わせがある。 (カーソルは3行目):
'nonu' 'nu' 'nonu' 'nu'
'nornu' 'nornu' 'rnu' 'rnu'
|apple | 1 apple | 2 apple | 2 apple
|pear | 2 pear | 1 pear | 1 pear
|nobody | 3 nobody | 0 nobody |3 nobody
|there | 4 there | 1 there | 1 there
'numberwidth' 'nuw'
'numberwidth' 'nuw' 数値 (Vim の既定値: 4 Vi の既定値: 8)
ウィンドウについてローカル
{+linebreak 機能付きでコンパイルされたときのみ利用可
能}
行番号を表示するのに使われる桁数の最小値。'number' か 'relativenumber'
がオンのときか行番号付きで印刷するときのみ意味がある。常に番号とテキス
トの間にスペースが1つ置かれるので、番号そのものに割かれる桁数はこれよ
り1文字少なくなる。
この値は最小の幅である。'number' がオンのときにはバッファの行数、
'relativenumber' がオンのときにはウィンドウの行数を、それぞれ表示する
のに足りないときは設定されたよりも広い幅が使われる。つまり、Vim の既定
値の4だと、999行目までの幅が割り当てられることになる。バッファが1000行
以上になると5桁が割り当てられるようになる。
最小値は1。最大値は20。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'omnifunc' 'ofu'
'omnifunc' 'ofu' 文字列 (既定では: 空)
バッファについてローカル
{+eval 機能付きでコンパイルされたときのみ利用可能}
このオプションは挿入モードにおける CTRL-X CTRL-O でのオムニ補完で使わ
れる関数を指定する。i_CTRL-X_CTRL-O
その関数がどのように起動され、何を返すべきかについての説明は
complete-functions を参照。値として関数名、lambda、Funcref が使
える。詳細は option-value-function を参照。
このオプションは普通、ファイルタイププラグインによって設定される。
:filetype-plugin-on
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'opendevice' 'odev' 'noopendevice' 'noodev'
'opendevice' 'odev' 切替 (既定ではオフ)
グローバル
{VimのMS-Windows版でのみ有効} E796
デバイスからの読み書きを有効にする。これを有効にすると、実際には入出力
をできないデバイスをオープンしてしまうと、Vim は動作を停止してしまう。
そのため既定ではオフになっている。
MS-Windowsで "aux.h"、"lpt1.txt" などを編集するとデバイスを編集中にな
ることに注意。
'operatorfunc' 'opfunc'
'operatorfunc' 'opfunc' 文字列 (既定では: 空)
グローバル
このオプションはオペレータ g@ で呼び出される関数を指定する。
より詳しい情報と例については :map-operator を参照。値として関数名、
lambda、Funcref が使える。詳細は option-value-function を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'osfiletype' 'oft'
'osfiletype' 'oft' 文字列 (既定では: "")
バッファについてローカル
このオプションは RISC OS でサポートされていたが、RISC OS サポートは削
除された。
'packpath' 'pp'
'packpath' 'pp' 文字列 (既定では: 'runtimepath' を参照)
パッケージを見つけるために使われるディレクトリ。 packages を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'paragraphs' 'para'
'paragraphs' 'para' 文字列 (既定では "IPLPPPQPP TPHPLIPpLpItpplpipbp")
グローバル
Nroff {訳注: UNIXで使われる画面整形システム} で使われる、段落を分ける
ためのマクロを指定する。値は2文字の組である (object-motions を参照)。
'paste' 'nopaste'
'paste' 切替 (既定ではオフ)
グローバル
オンにするとVimはPasteモードに移行する。これはテキストを別のウィンドウ
から切り取ったりコピーして、Vim内に貼り付けたいときに便利であり、予想
しない作用を避けることができる。
このオプションはVimをターミナルで使っているときに便利である。ターミナ
ルでは打ち込まれたテキストと貼り付けられたテキストの区別がつかないから
だ。GUI版のVimでは貼り付け時にすべき動作を知っているので、'paste' がオ
フでも大抵うまくいく。Vimがマウスクリックを扱えるようなターミナルでも
同様にうまくいく。
GUI を開始するとこのオプションはオフになる。そのため、.vimrc 内でこの
オプションをオンにすると、それはターミナル内では働くが、GUI ではオフに
なる。GUI 版で 'paste' をオンにすると次のような副作用がある: 例.
「ペースト」ツールバーボタンが挿入モードで動作しなくなる。このボタンは
マッピングを使っているためである。
'paste' がオンのときは、以下のように設定が変わる。
- 挿入モードとコマンドラインモードでのマッピングが無効になる
- 略語展開が無効になる
- 'autoindent' がオフになる
- 'expandtab' がオフになる
- 'hkmap' がオフになる
- 'revins' がオフになる
- 'ruler' がオフになる
- 'showmatch' がオフになる
- 'smarttab' がオフになる
- 'softtabstop' が 0 になる
- 'textwidth' が 0 になる
- 'wrapmargin' が 0 になる
- 'varsofttabstop' が空になる
以下のオプションの値に変化はないが、働きは無効になる。
- 'cindent'
- 'formatoptions' が空のときのような動作になる
- 'indentexpr'
- 'lisp'
- 'smartindent'
NOTE: 'paste' がオンのときに別のファイルの編集を始めると、モードライン
や autocommand によって設定が再び変わり、貼り付け時に問題が起きること
があるので注意。そのときは 'paste' を再びオンにするとよいだろう。
'paste' をオフにすると、上記のオプションの設定は 'paste' がオンになっ
た時点の前の状態に復元される。
'paste' をオンにする前にオフにしても何の効果もない。
'paste' がオンの間はマッピングが無効になるので、どれかのキーで 'paste'
を切り替えるには 'pastetoggle' を使う必要がある。
'pastetoggle' 'pt'
'pastetoggle' 'pt' 文字列 (既定では "")
グローバル
空でないとき、オプション 'paste' を切り替えるキー列を指定する。これは
以下のようなマッピングの設定に似ている。
違うのは、こちらは 'paste' がオンでも有効だという点だ。
'pastetoggle' は挿入モードとノーマルモードで有効だが、コマンドライン
モードでは無効である。
マッピングが最初に調べられるので、'pastetoggle' を上書きできる。しかし
'paste' がオンならば挿入モードでマッピングは無視されるので、以下のよう
な設定が可能である。
Note Pasteモードで <F10> を入力すると "<F10>" が挿入されるので注意。こ
れは、Pasteモードでは 'pastetoggle' で指定されたキー列以外は全てそのま
ま挿入されるからである。
このオプションの値が複数バイトからなる場合、'ttimeoutlen' が適用される。
'pex' 'patchexpr'
'patchexpr' 'pex' 文字列 (既定では "")
グローバル
{+diff 機能付きでコンパイルされたときのみ有効}
ファイルにパッチを適用し、ファイルの新しいバージョンを生成するために使
われる式。diff-patchexpr を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'patchmode' 'pm' E205 E206
'patchmode' 'pm' 文字列 (既定では "")
グローバル
値が空でないとき、ファイルの最も古いバージョンが保管されるようになる。
ソース配布物内のファイルに変更を加えたとき、元のバージョンを取っておき
たいならこれを使う。最初にファイルが書き込まれたときのみ、元のファイル
のコピーが作られる。コピーのファイル名は、元のファイル名の後に
'patchmode' の値を付け加えたものである。このオプションの値はドットで始
めるようにすべきである。".orig" や ".org" 等を使うこと。この機能を使う
には、'backupdir' が空であってはならない (詳細: 変更後のファイルの書き
込みが成功してから、バックアップファイルがオリジナルをコピーしたファイ
ルにリネームされるため、バックアップファイルを生成できなければならな
い)。バックアップすべきファイルがないときは、空ファイルが作られる。
'backupskip' がファイル名にマッチしたときは、元のファイルは保管されな
い。
圧縮ファイルに 'patchmode' を使うと、ファイル名末尾に拡張子が付けられ
るので (例えば "file.gz.orig")、その結果できたファイルは必ずしも圧縮ファ
イルとは認識されなくなってしまう。
通常のファイル名文字だけが使える。"/\*?[|<>" は不正である。
'path' 'pa' E343 E345 E347 E854
'path' 'pa' 文字列 (Unixでの既定値: ".,/usr/include,,"
他のシステムでの既定値: ".,,")
グローバル/バッファについてローカル global-local
値はディレクトリのリストであり、コマンド gf, [f, ]f, ^Wf, :find,
:sfind, :tabfind 等で、検索されるファイルが相対パス ("/", "./",
"../" で始まらないパス {訳注: MS-Windowsでは "C:/" 等で始まらないパス})
で指定されたときに使われるものである。オプション 'path' にディレクトリ
を指定するには、相対パスでも絶対パスでもよい。
- 複数のディレクトリ名はコンマで区切る。
空白を含んだディレクトリ名を指定するには、空白の前に余分に '\' {訳注:
option-backslash を参照} を置き、その上で空白と '\' を '\' でエス
ケープすること。
- 中にコンマを含んだディレクトリ名を指定するには、コンマの前に余分に
'\' を置き、その上で '\' を '\' でエスケープすること。
- カレントファイルに対し相対的にディレクトリを指定するには、こうする。
- 環境変数は展開される :set_env。
- 公式プラグイン netrw.vim を使っているときはURLも指定できる。例えば
"http://www.vim.org" を追加すると ":find index.html" とすることがで
きる。
- "*", "**", ";" を使えばディレクトリツリーの上下に向かって検索できる。
詳しくは file-searching を参照。
- 文字 '\' の扱いには注意。オプションの値に '\' を1個含めるには、次の
ように2個打ち込む。
じディレクトリ内のファイルさえも発見できない!
値の長さには制限がある。システムごとに異なるが、大抵は256文字か1024文
字等の長さである {訳注: これは半角の場合で、全角では半分}。
'path' でインクルードしたファイルを全て発見できているかどうかについて
は、:checkpath を参照。
リストにディレクトリを追加するときにはコマンド :set+=、リストからディ
レクトリを除くときにはコマンド :set-= を使うのがよい。こうすると将来
のバージョンで異なった既定値が使われるようになったときに、問題が起きる
のを防げる。ただしカレントディレクトリを取り除くには次のようにする。
のは環境変数 $INCL を追加する例だが、その中ではディレクトリ名はセミコ
ロンで区切られているとする。
は、$INCL がコンマや空白を含んでいるときには使えないので注意。
'perldll'
'perldll' 文字列 (既定値はビルドに依存)
グローバル
{+perl/dyn 機能付きでコンパイルされたときのみ有効}
Perl 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_PERL_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'preserveindent' 'pi' 'nopreserveindent' 'nopi'
'preserveindent' 'pi' 切替 (既定ではオフ)
バッファについてローカル
カレント行のインデントを変更するとき、可能な限りインデントの構造を保つ
ようにする。普通、インデントはまずタブで埋められ、その後に必要なだけス
ペースで埋められる('expandtab'がオンになっているときは違い、スペース
だけで埋められる)。このオプションをオンにすると、インデントの既存の文
字をできるだけそのままにし、追加の際に必要なだけタブやスペースを追加す
るようになる。
'expandtab' は適用されない。タブはタブのままになる。
NOTE: ">>" を複数回使うと、インデントにタブとスペースが混在するように
なる。これは好ましくないかもしれない。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'copyindent' も参照。
空白文字を揃えるには :retab を使う。
'previewheight' 'pvh'
'previewheight' 'pvh' 数値 (既定では 12)
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
プレビューウィンドウの高さの既定値。コマンド :ptag とその関連コマン
ドで使われる。CTRL-W_} にカウントが指定されなかったときもこれが使わ
れる。'previewpopup' が設定されている時は使われない。
'previewpopup' 'pvp'
'previewpopup' 'pvp' 文字列 (既定では空)
グローバル
{+textprop または +quickfix 機能付きでコンパイルさ
れたときのみ有効}
空でない場合、プレビューウィンドウを開くコマンドにポップアップウィンド
ウが使用される。preview-popup を参照。
挿入補完情報には使用されない。使用するには "popup" を 'completeopt' に
追加する。
'previewwindow' 'nopreviewwindow'
'pvw' 'nopvw' E590
'previewwindow' 'pvw' 切替 (既定ではオフ)
ウィンドウについてローカル local-noglobal
{+quickfix 機能付きでコンパイルされたときのみ有効}
このオプションでプレビューウィンドウを決める。ただ1つのウィンドウでの
み、このオプションをオンに設定できる。普通、直接設定されることはないが、
コマンド :ptag, :pedit 等を使うと設定される。
'printdevice' 'pdev'
'printdevice' 'pdev' 文字列 (既定では空)
グローバル
{+printer 機能付きでコンパイルされたときのみ有効}
:hardcopy で使われるプリンタの名前。
pdev-option を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'printencoding' 'penc'
'printencoding' 'penc' 文字列 (いくつかのシステムを除き、既定は空)
グローバル
{+printer と +postscript 機能付きでコンパイルされ
たときのみ利用可能}
印刷の際に使われる文字エンコーディングを指定する。
penc-option を参照。
'printexpr' 'pexpr'
'printexpr' 'pexpr' 文字列 (既定値は、以下を参照)
グローバル
{+printer 機能と +postscript 機能付きでコンパイル
されたときのみ有効}
コマンド ":hardcopy" で生成されるPostScript (PS) ファイルを印刷するた
めに評価される expression を指定する。pexpr-option を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'printfont' 'pfn'
'printfont' 'pfn' 文字列 (既定では "courier")
グローバル
{+printer 機能付きでコンパイルされたときのみ有効}
コマンド :hardcopy の出力に使われるフォント名。pfn-option を参照。
'printheader' 'pheader'
'printheader' 'pheader' 文字列 (既定では "%<%f%h%m%=Page %N")
グローバル
{+printer 機能付きでコンパイルされたときのみ有効}
コマンド :hardcopy の出力のヘッダーの書式を定義する。
pheader-optionを参照。
'printmbcharset' 'pmbcs'
'printmbcharset' 'pmbcs' 文字列 (既定では "")
グローバル
{+printer, +postscript 機能付きでコンパイルされた
ときのみ利用可能}
コマンド :hardcopy の出力の中の CJK 文字に使われる文字セット。
pmbcs-option を参照。
'printmbfont' 'pmbfn'
'printmbfont' 'pmbfn' 文字列 (既定では "")
グローバル
{+printer, +postscript 機能付きでコンパイルされた
ときのみ利用可能}
コマンド :hardcopy の出力の中の CJK 文字に使われるフォント名のリスト。
pmbfn-option を参照。
'printoptions' 'popt'
'printoptions' 'popt' 文字列 (既定では "")
グローバル
{+printer 機能付きでコンパイルされたときのみ有効}
コマンド :hardcopy の出力の書式を設定する項目のリスト。
popt-option を参照。
'prompt' 'noprompt'
'prompt' 切替 (既定ではオン)
グローバル
オンならば、Ex モードでプロンプト ":" が表示される。
'pumheight' 'ph'
'pumheight' 'ph' 数値 (既定では 0)
グローバル
挿入モード補完のポップアップメニューに表示される項目数の最大値。
0 のときはスペースの許す限り多く表示される。
ins-completion-menu
'pumwidth' 'pw'
'pumwidth' 'pw' 数値 (既定では 15)
グローバル
挿入モード補完のポップアップメニューに使用する幅の最小値。
ins-completion-menu.
'pythondll'
'pythondll' 文字列 (既定値はビルドに依存)
グローバル
{+python/dyn 機能付きでコンパイルされたときのみ有効}
Python 2.x 共有ライブラリの名前を指定。既定値はコンパイル時に指定され
た DYNAMIC_PYTHON_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'pythonhome'
'pythonhome' 文字列 (既定では "")
グローバル
{+python/dyn 機能付きでコンパイルされたときのみ有効}
Python 2.x ホームディレクトリの名前を指定。'pythonhome' と環境変数
PYTHONHOME が設定されていない場合、コンパイル時に指定される
PYTHON_HOME が Python 2.x ホームディレクトリとして使われる。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'pythonthreedll'
'pythonthreedll' 文字列 (既定値はビルドに依存)
グローバル
{+python3/dyn 機能付きでコンパイルされたときのみ有効}
Python 3 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_PYTHON3_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'pythonthreehome'
'pythonthreehome' 文字列 (既定では "")
グローバル
{+python3/dyn 機能付きでコンパイルされたときのみ有効}
Python 3 ホームディレクトリの名前を指定。'pythonthreehome' と環境変数
PYTHONHOME が設定されていない場合、コンパイル時に指定される
PYTHON3_HOME が Python 3 ホームディレクトリとして使われる。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'pyxversion' 'pyx'
'pyxversion' 'pyx' 数値 (既定値はビルドに依存)
グローバル
{+python または +python3 機能付きでコンパイルされ
たときのみ有効}
pyx* 関数とコマンドで使用する python のバージョンを指定する
python_x。既定値は以下の通り:
以下でコンパイル 既定値
+python と +python3 0
+python のみ 2
+python3 のみ 3
使用可能な値は 0, 2, 3 のいずれかである。
'pyxversion' が 0 の場合、最初に実行された python2/3 コマンドまたは関
数によって 2 または 3 に設定される。例えば、:py は 2 に設定し、
:py3 は 3 に設定する。:pyx は、Python 3 が利用可能ならば 3 に設定
し、そうでなく Python 2 が利用可能ならば 2 に設定する。
has-pythonx も参照。
もし Vim が +python または +python3 のみでコンパイルされている場
合、'pyxversion' は効果がない。pyx* 関数とコマンドは、常にコンパイルさ
れたバージョンと同じとなる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'quickfixtextfunc' 'qftf'
'quickfixtextfunc' 'qftf' 文字列 (既定では "")
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
このオプションはクイックフィックスもしくはロケーションリストで表示する
テキストを取得するのに利用される関数を指定する。クイックフィックスもし
くはロケーションリストでの情報を各表示項目に付随する情報をカスタマイズ
して表示するときに利用できる。関数の書き方と例については
quickfix-window-function を参照。値として関数名、lambda、Funcref
が使える。詳細は option-value-function を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'quoteescape' 'qe'
'quoteescape' 'qe' 文字列 (既定では "\")
バッファについてローカル
文字列内で引用符をエスケープする文字。テキストオブジェクト a', a", a`
などで使われる a'。
このオプションの文字のどれかが文字列内に現れると、その次の文字はスキッ
プされる。既定値では、テキスト "foo\"bar\\" が1つの文字列とみなされる。
'readonly' 'ro' 'noreadonly' 'noro'
'readonly' 'ro' 切替 (既定ではオフ)
バッファについてローカル local-noglobal
オンのときは、書き込みコマンドは '!' を付けないと使えない。これは間違っ
てファイルを上書きしてしまうことを防ぐためのものである。Vimが読み込み
専用モードで起動された ("vim -R") ときと、実行可能ファイルの名前が
"view" のときにはオンが既定値になる。
'cpoptions' にフラグ 'Z' が入っていない場合、":w!" を使うとカレントバッ
ファの 'readonly' がオフになる。
コマンド ":view" を使って開かれたバッファでは、オプション 'readonly'
はオンになる。
バッファの変更を不許可とするには 'modifiable' を参照。
'redrawtime' 'rdt'
'redrawtime' 'rdt' 数値 (既定では 2000)
グローバル
{+reltime 機能付きでコンパイルされたときのみ有効}
画面を再描画するのにかける時間(ミリ秒)。'hlsearch' がオンのときのパ
ターン検索、:match ハイライトおよびシンタックスハイライトに対して適
用される。
再描画にこれで指定したミリ秒以上の時間がかかるとき、それ以上のマッチは
ハイライトされない。
シンタックスハイライトはウィンドウ毎に適用される。このリミットを超える
と、シンタックスハイライトは CTRL-L が使われるまで無効にされる。
非常に複雑なパターンを検索する際に Vim が応答しなくなるのを避けるため
である。
'regexpengine' 're'
'regexpengine' 're' 数値 (既定では 0)
グローバル
デフォルトで使う正規表現エンジンを選択する。 two-engines
設定できる値:
0 自動選択
1 古いエンジン
2 NFA エンジン
Note: NFA エンジンを使う設定のときは、サポートされていないパターンを使
うと、そのパターンはマッチしない。これは正規表現エンジンのデバッグ用。
自動選択を使用すると既定のエンジンの実行コストが高い場合に Vim の正規
表現エンジンのスイッチが有効となる。例えば NFA エンジンが多くの処理時
間を要する場合など。これは長いテキストで複雑なパターンの組み合わせによ
り Vim がハングしない様にする為の物である。
'relativenumber' 'rnu' 'norelativenumber' 'nornu'
'relativenumber' 'rnu' 切替 (既定ではオフ)
ウィンドウについてローカル
カーソル行からの相対的な行番号を表示する。相対行番号を見れば縦移動のコ
マンドでカウント指定 (count) を使うとき自分で数える必要がないので便
利である。特に他のコマンド (例: y d c < > gg gw =) と組み合わせるとき
など。
'cpoptions' に 'n' オプションが含まれていないときは、折り返された行を
表示するのに行番号の表示領域は使われない (これは 'compatible' がオフの
ときの既定動作である)。
行番号の表示領域の幅は 'numberwidth' オプションで設定できる。
折り返された行がとても長くてその行頭が画面外にあるときは、行番号の前に
'-' 文字が表示される。
行番号の強調表示には hl-LineNr か hl-CursorLineNr が使われる。
カーソル行の前の番号もまた 'number' の値に依存し、この2つのオプション
の全ての組み合わせについては number_relativenumber を参照せよ。
'remap' 'noremap'
'remap' 切替 (既定ではオン)
グローバル
再帰的マッピング {訳注: マッピングに対するマッピング、に対するマッピン
グ...} を有効にする。特定のマッピングに対して再帰的マッピングを禁止し
たいときは、コマンド ":noremap[!]" を使うこと。
NOTE: Vim script のポータビリティのために、このオプションは常に既定値
のオンのままにしておくこと。昔の Vi スクリプトを使うときだけこれをオフ
にすること。
'renderoptions' 'rop'
'renderoptions' 'rop' 文字列 (既定では空)
グローバル
{Vim が MS-Windows で GUI と DIRECTX 付きでコンパイル
されたときのみ有効}
テキストレンダラの選択とそのオプションの設定。オプションはレンダラごと
に異なる。
構文:
現在、選択できる追加のレンダラは一つだけである。
レンダラ 振る舞い
directx Vim は DirextX (DirectWrite) を使ってテキストを表示する。デ
フォルトの GDI よりも文字をきれいに表示できる。
MS-Windows の Vista 以降のバージョンで 'encoding' が "utf-8"
である必要がある。
オプション:
名前 意味 型 値
gamma gamma float 1.0 - 2.2 (おそらく)
contrast enhancedContrast float (不明)
level clearTypeLevel float (不明)
geom pixelGeometry int 0 - 2 (下記参照)
renmode renderingMode int 0 - 6 (下記参照)
taamode textAntialiasMode int 0 - 3 (下記参照)
scrlines Scroll Lines int (廃止予定)
詳細は次の URL を参照 (scrlines を除く):
https://msdn.microsoft.com/en-us/library/dd368190.aspx
geom: デバイスピクセルの内部構造。
0 - DWRITE_PIXEL_GEOMETRY_FLAT
1 - DWRITE_PIXEL_GEOMETRY_RGB
2 - DWRITE_PIXEL_GEOMETRY_BGR
詳細は次の URL を参照:
https://msdn.microsoft.com/en-us/library/dd368114.aspx
renmode: 文字レンダリングの方法。
0 - DWRITE_RENDERING_MODE_DEFAULT
1 - DWRITE_RENDERING_MODE_ALIASED
2 - DWRITE_RENDERING_MODE_GDI_CLASSIC
3 - DWRITE_RENDERING_MODE_GDI_NATURAL
4 - DWRITE_RENDERING_MODE_NATURAL
5 - DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC
6 - DWRITE_RENDERING_MODE_OUTLINE
詳細は次の URL を参照:
https://msdn.microsoft.com/en-us/library/dd368118.aspx
taamode: テキスト描画に使われるアンチエイリアスモード。
0 - D2D1_TEXT_ANTIALIAS_MODE_DEFAULT
1 - D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE
2 - D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE
3 - D2D1_TEXT_ANTIALIAS_MODE_ALIASED
詳細は次の URL を参照:
https://msdn.microsoft.com/en-us/library/dd368170.aspx
scrlines:
これはスクロールの振る舞いを最適化するのに使用されていたが、現
在では廃止予定である。指定されていた場合、単に無視される。
例:
'guifont' にラスターフォント (Courier、Terminal、FixedSysなど
拡張子に ".fon" が付いているもの) が選択されているときは、自動
的に GDI による描画に切り替わる。
NOTE: 一部のフォントとオプションの組み合わせによってはグリフが
描画されない場合がある。
- 'renmode:5' と 'renmode:6' は一部の特製フォント (ビットマッ
プしか含まない TrueType フォントなど) に対して動作しない。
- 'taamode:3' は一部のベクターフォントに対して動作しない。
NOTE: Windows 8.1 またはそれ以降では、このオプションを使うこと
で、色付き絵文字を表示することができる。ただし、色付き絵文字を
表示するためにはいくつかの条件がある。
- 選択したフォントが色無しの絵文字を含んでいる場合は、それが
使われる。
- 選択したフォントが絵文字を含んでいない場合、システムが代替
フォントを選択する。Windows 10 では "Segoe UI Emoji" が使
われる。
- この代替フォントが固定幅のグリフを持っていない場合、絵文字
は文字の描画幅を超えて描画されるかもしれない。
他のレンダタイプは現在のところサポートされていない。
'report'
'report' 数値 (既定では 2)
グローバル
変更された行の数の報告が出る最小値。変更された行の数がオプション
'report' より大きければ、ほとんどの ":" によるコマンドでメッセージが表
示される。必ず報告してほしいなら 'report' を 0 にすること。
コマンド ":substitute" では、基準は変更された行数ではなく、置換を行っ
た回数になる。
'restorescreen' 'rs' 'norestorescreen' 'nors'
'restorescreen' 'rs' 切替 (既定ではオン)
グローバル
{VimのMS-Windowsのコンソール版}
オンのとき、Vimを終了した後にコンソール画面の内容が復元される。外部コ
マンドを実行するときも同様である。
Windows版以外のVimでは: ファイル .vimrc で、オプション 't_ti' と
't_te' を設定することで実現できる。画面の復元を無効にするには次のよう
にする。
'revins' 'ri' 'norevins' 'nori'
'revins' 'ri' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
挿入モードでの文字の挿入が通常と逆向きになる。"typing backwards" を参
照 ins-reverse。このオプションは、オプション 'allowrevins' がオンな
らば挿入モードでコマンド CTRL-_ を使うことで切り替えられる。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
'rightleft' 'rl' 'norightleft' 'norl'
'rightleft' 'rl' 切替 (既定ではオフ)
ウィンドウについてローカル
{+rightleft 機能付きでコンパイルされたときのみ有効}
オンのとき、画面表示の方向が右から左になる。つまり、ファイルに保存され
ている文字は右から左の方向へ表示される。このオプションを使うと、ヘブラ
イ語やアラビア語のような右から左に向かって書かれる言語によるファイルを
編集できる。このオプションはウィンドウごとに設定可能なので、ヘブライ語
と英語のファイルを同時に編集したり、同一のファイルを2通りに表示するこ
とができる (これは右から左のテキストと左から右のテキストが混在している
ファイルを編集するときに便利である。両方を異なるウィンドウで適切に表示
することができる)。rileft.txt を参照。
'rightleftcmd' 'rlc'
'rightleftcmd' 'rlc' 文字列 (既定では "search")
ウィンドウについてローカル
{+rightleft 機能付きでコンパイルされたときのみ利用可
能}
左←右書きモードで動作するコマンドを指定する:
search コマンド "/" と "?"
これはヘブライ語、アラビア語、ペルシア語などの言語で便利である。
オプション 'rightleft' を設定しないと 'rightleftcmd' は効果がない。
'rubydll'
'rubydll' 文字列 (既定値はビルドに依存)
グローバル
{+ruby/dyn 機能付きでコンパイルされたときのみ有効}
Ruby 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_RUBY_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'ruler' 'ru' 'noruler' 'noru'
'ruler' 'ru' 切替 (既定ではオフ, defaults.vim 内で
オンに設定される)
グローバル
カーソルが何行目の何列目に置かれているかを表示する {訳注: これをルー
ラーと呼ぶ}。行数と列数はコンマで区切られる。幅に余裕があるときは、表
示されているテキストの、ファイル内での相対位置が右端に表示される。
先頭 ファイル先頭の行が表示されているとき
末尾 ファイル末尾の行が表示されているとき
全て ファイル先頭と末尾の行の両方が表示されているとき
45% ファイル内での相対位置
オプション 'rulerformat' が設定されているときは、それによってルーラー
の内容が指定される。ルーラーはウィンドウごとに表示される。ウィンドウに
ステータス行が表示されていれば、ルーラーもそこに表示される。そうでなけ
れば画面 の末尾の行に表示される。ステータス行の内容が 'statusline' で
指定されているときは (つまりその値が空でないときは)、'statusline' が
'ruler' や 'rulerformat' より優先される。
表示された文字の数がテキスト上でのバイト数と違うときは (例えば、タブ文
字やマルチバイト文字があるとき)、テキスト上の列数 (バイト数) と画面上
の列数が、ダッシュで区切られて両方表示される。
空行では "0-1" と表示される。
空のバッファでは行数も0になり、"0,0-1" と表示される。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
ルーラーを常に表示したくはないが、テキスト内のどこにいるのか知りたいと
きは、コマンド "g CTRL-G" を使うこと g_CTRL-G。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'rulerformat' 'ruf'
'rulerformat' 'ruf' 文字列 (既定では空)
グローバル
{+statusline 機能付きでコンパイルされたときのみ有効}
値が空でないときは、オプション 'ruler' によって表示されるルーラーの内
容を指定する。
このオプションの書式は 'statusline' のものと同様である。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
ルーラーの幅は既定では17文字である。幅を15文字にするには、値の先頭に
"%15(" を置き、末尾に "%)" を置くこと。例:
'runtimepath' 'rtp' vimfiles
'runtimepath' 'rtp' 文字列 (既定値:
Unix: "$HOME/.vim または
$XDG_CONFIG_HOME/vim,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
$HOME/.vim/after"
Amiga: "home:vimfiles,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
home:vimfiles/after"
MS-Windows: "$HOME/vimfiles,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
$HOME/vimfiles/after"
Haiku: "$BE_USER_SETTINGS/vim,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
$BE_USER_SETTINGS/vim/after"
VMS: "sys$login:vimfiles,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
sys$login:vimfiles/after")
グローバル
以下のランタイムファイルが検索されるディレクトリのリスト。
filetype.vim ファイル名によるファイルタイプの決定 new-filetype
scripts.vim ファイルの内容によるファイルタイプの決定
new-filetype-scripts
autoload/ 自動的に読み込まれるスクリプト autoload-functions
colors/ 色テーマ定義ファイル :colorscheme
compiler/ コンパイラ定義ファイル :compiler
doc/ ヘルプドキュメント write-local-help
ftplugin/ ファイルタイププラグイン write-filetype-plugin
import/ :import によって探されるファイル
indent/ インデントスクリプト indent-expression
keymap/ キーマップ定義ファイル mbyte-keymap
lang/ 翻訳版メッセージ :menutrans および multi-lang
menu.vim GUI版メニュー menu.vim
pack/ パッケージ :packadd
plugin/ プラグインスクリプト write-plugin
print/ 印刷用のファイル postscript-print-encoding
spell/ スペルチェック用のファイル spell
syntax/ 文法ファイル mysyntaxfile
tutor/ Vimtutor用ファイル tutor
および、コマンド :runtime で検索される全てのファイル。
$XDG_CONFIG_HOME については、xdg-base-dir を参照。
ほとんどのシステムでの既定値は、以下の5カ所を検索するようになっている。
1. ユーザーの個人的な設定を読み込むため、ユーザーのホームディレクトリ
を検索する。
2. システム管理者による設定を読み込むため、システム共通のVim用ディレク
トリを検索する。
3. Vim付属のファイルを読み込むため、環境変数 $VIMRUNTIME 内を検索する。
after-directory
4. システム管理者が付属ファイルによる設定を上書きしたり、それに追加設
定をしたりできるようにするため、システム共通のVimディレクトリ内のディ
レクトリ "after" を検索する (これは滅多に使われない)。
5. ユーザーが付属ファイルやシステム管理者による設定を上書きしたり、そ
れに追加設定をしたりできるようにするため、ユーザーのホームディレク
トリ内のディレクトリ "after" を検索する。
packages を使用するとさらに多くのエントリが追加される。もしもとても
長くなる場合 :set rtp は省略されるので、全てをみる必要がある場合は
:echo &rtp を使用する。
Note オプション 'path' と違い、ワイルドカードのうち "**" 等は使えない
ことに注意。普通のワイルドカードは使えるが、ランタイムファイルの検索が
目に見えて遅くなることがある。速度を向上させるには、設定する項目の数を
なるべく少なくし、ワイルドカードの使用を避けること。
:runtime を参照。
例:
ファイルを格納) を最初に検索し、次にディレクトリ "/mygroup/vim" (グルー
プ共通の設定ファイルを格納) を、最後に "$VIMRUNTIME" (付属ランタイム
ファイル) を検索する。
付属ランタイムファイルを使えるようにするため、どこかに必ず環境変数
$VIMRUNTIME を指定するべきだろう。付属ランタイムファイルの代わりに使う
ファイルを置くディレクトリは、環境変数 $VIMRUNTIME の前に指定すればよ
い。付属ランタイムファイルによる設定に追加するためのファイルを置くディ
レクトリは、環境変数 $VIMRUNTIME の後に指定すればよい。
Vim が --clean 付きで開始される場合、ホームディレクトリのエントリは
含まれない。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'scroll' 'scr'
'scroll' 'scr' 数値 (既定では、ウィンドウ高の半分)
ウィンドウについてローカル local-noglobal
コマンド CTRL-U や CTRL-D でスクロールする行数。ウィンドウのサイズが変
わると、ウィンドウの行数の半分に設定される。'scroll' オプションを設定
した後で、status-line か 'tabline' オプションを有効にした場合におき
る。
CTRL-U や CTRL-D を、カウントを指定して使うと、カウントはオプション
'scroll' の値として使われる。":set scroll=0" とすると、値はウィンドウ
高の半分に戻る。
'scrollbind' 'scb' 'noscrollbind' 'noscb'
'scrollbind' 'scb' 切替 (既定ではオフ)
ウィンドウについてローカル
scroll-binding も参照。このオプションが設定されている場合、カレント
ウィンドウをスクロールすると、スクロールバインドされている他のウィンド
ウ (このオプションが設定されているウィンドウ) もスクロールする。このオ
プションは、ファイルの2個のバージョン間の違いを見るのに便利である。
'diff' を参照。
このオプションがどのように解釈されるかを決定するオプションについては、
オプション 'scrollopt' を参照。
ウィンドウを分割して他のファイルを編集すると、ほとんどの場合このオプショ
ンはオフになる。よって ":split | edit file" はウィンドウを2つに分割し、
scroll-binding を設定するが、":split file" はそうならない。
'scrollfocus' 'scf' 'noscrollfocus' 'noscf'
'scrollfocus' 'scf' 切替 (既定ではオフ)
グローバル
{Vim の MS-Windows GUI 版のみで有効}
スクロールホイールが使われてこのオプションがオンのとき、マウスポインタ
の下のウィンドウがスクロールされる。このオプションがオフのとき、現在の
ウィンドウがスクロールされる。
MS-Windows 以外のシステムではこのオプションが常にオンであるかのように
ふるまう。
'scrolljump' 'sj'
'scrolljump' 'sj' 数値 (既定では 1)
グローバル
カーソルが画面外に出たときにスクロールする行数の最小値 (例えばコマンド
"j" 等によって)。スクロールコマンド (例えば CTRL-E, CTRL-D) には使われ
ない。ユーザーのターミナルのスクロールがとても遅いときに便利である。
-1 から -100 までの負の数に設定すると、ウィンドウの高さのパーセンテー
ジとして扱われる。つまり -50 はウィンドウの高さの半分スクロールする。
NOTE: このオプションは、'compatible' がオンになると 1 になるので注意。
'scrolloff' 'so'
'scrolloff' 'so' 数値 (既定では 0、defaults.vim 内で 5 に設定され
る)
グローバル/ウィンドウについてローカル global-local
カーソルの上または下には、最低でもこのオプションに指定した数の行が表示
される。これにより、編集中の箇所の周辺のテキストを見ることができる。と
ても大きい値 (999等) にすると、カーソルの置かれた行は常にウィンドウの
中央に表示される (ファイル先頭または末尾にいるときと、長い行が折り返さ
れているとき以外)。
ローカル値を使用した後は、次の2つのうちいずれかを使用してグローバル値
に戻る:
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
'scrollopt' 'sbo'
'scrollopt' 'sbo' 文字列 (既定では "ver,jump")
グローバル
スクロール同期中ウィンドウ {訳注: オプション 'scrollbind' がオンのウィ
ンドウ} の動作を設定するキーワードの、コンマ区切りのリスト。'sbo' は
ScrollBindOptions の略である。
指定可能なキーワードは以下の通りである。
ver 同期中ウィンドウの垂直スクロールを同期させる
hor 同期中ウィンドウの水平スクロールを同期させる
jump これは垂直スクロールにおいて、2個のウィンドウ間の
offset に適用される。この offset とは同期中ウィンドウ
に表示されているテキストの先頭行のずれのことである。
ウィンドウ内を動き回るときは、別の同期中ウィンドウの表
示区域が、バッファの先頭より前またはバッファの末尾より
後ろに達してしまうかもしれない。それでも offset は変更
されず、カーソルが戻ってきたときは、同期中ウィンドウは
可能ならば求められる位置にスクロールしようとする。
カレントウィンドウを変更したときは、相対 offset を使っ
て2つのことが行われる。
1. 値に "jump" が含まれていないとき、新しくカレントウィ
ンドウになったウィンドウのスクロール位置により相対
offset が調節される。別のウィンドウに戻ったときは、
新しい相対 offset が使われる。
2. 値に "jump" が含まれているとき、同じ相対オフセット
を保つために他のウィンドウもスクロールする。他のウィ
ンドウに戻ったときも、同じ相対 offset を使う。
{訳注: "jump" について。
100行のファイル "short" と200行のファイル "long" をウィンドウ分割で並
べ、1行目を表示させたまま共に 'scrollbind' をオンにする。
1. "long" を開いているウィンドウで150行目に移動すると、"short" に150行
目はないのだから、ウィンドウの同期が崩れる。具体的には、"short" の
方だけ100行目を表示したままになる。しかしそのまま "long" の50行目に
移動すると、何事もなかったかのように "short" のウィンドウも50行目を
表示する。
2. しかし "long" の150 行目に移動した時点でカーソルを "short" のウィン
ドウ (の100行目) に移すと、"jump" によって違いが出る。
上記 1. では「"long" では150行目、"short" では100行目」という状態が新
たな基準となり、"short" のウィンドウで50行目に移ると、"long" のウィン
ドウはとにかく50行バック、というわけで100行目を表示する。2. では「1行
目同士を合わせる」という基準は変わらず、やはり100行目同士を合わせろ、
というわけでウィンドウを移って "short" の100行目に着いた瞬間に "long"
のウィンドウも100行目を表示する。
話を簡単にするために始めは共に1行目を表示しているとしたが、始めがずれ
ているとそれが基準となることに注意。}
scroll-binding も参照。
差分モードでは、たとえ "ver" が含まれていなくても常に垂直スクロール同
期をする。
'sections' 'sect'
'sections' 'sect' 文字列 (既定では "SHNHH HUnhsh")
グローバル
Nroff {訳注: UNIXで使われる画面整形システム} で使われる、章を分けるた
めのマクロを指定する。値は2文字の組である (object-motions を参照)。
既定では、章は nroff マクロの ".SH", ".NH", ".H", ".HU", ".nh" および
".sh" で始まることになる。
'secure' 'nosecure' E523
'secure' 切替 (既定ではオフ)
グローバル
オンのとき、コマンド ":autocmd" やシェルコマンド、書き込みコマンドがカ
レントディレクトリ内のファイル ".vimrc" や ".exrc" では使用できなくな
り、マッピングコマンドも表示されるようになる。問題が起きることはないと
分かっているときか、オプション 'exrc' がオフのときにのみこのオプション
をオフにすること。
Unixでは、このオプションはファイル ".vimrc" または ".exrc" の所有者が
ユーザー自身でないときのみ使われる。これはユーザーが "chown" を使える
システムでは危険である。そのときにはユーザーのファイル ~/.vimrc の末尾
で 'secure' をオンにしておいた方がよい。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'selection' 'sel'
'selection' 'sel' 文字列 (既定では "inclusive")
グローバル
このオプションは、選択時の動作を設定する。これはビジュアルモードと選択
モードでのみ使用される。
設定可能な値は以下の通り。
値 行末の後 末尾に操作
old X O
inclusive O O
exclusive O X
「行末の後」というのは、カーソルを行末より 1 文字後ろに置けることを表
す。
「末尾に操作」というのは、選択領域の末尾の文字が操作を受けることを表
す。例えば、選択領域の削除に "x" が使われたときなどに違いが出る。
"old" を指定して 'virtualedit' でカーソルが行末を超えられるようにした
場合には、改行は依然として含まれない。
"exclusive" に設定していると、'virtualedit' が空のときノーマルモードか
ら選択を開始し、末尾から後方に選択すると行末の文字を含めることができな
くなる。
オプション 'selection' は、コマンド :behave によって設定される。
'selectmode' 'slm'
'selectmode' 'slm' 文字列 (既定では "")
グローバル
値はキーワードのコンマ区切りのリストである。キーワードは領域選択が開始
されたときのうち、どの場合でビジュアルモードでなく選択モードを開始する
かを決定する。
指定可能なキーワードは以下の通りである。
mouse マウス使用時
key シフトキーと特別なキーの同時押しをしたとき
cmd コマンド "v", "V" または CTRL-V の使用時
Select-mode を参照。
オプション 'selectmode' はコマンド :behave で設定される。
'sessionoptions' 'ssop'
'sessionoptions' 'ssop' 文字列 (既定では "blank,buffers,curdir,folds,
help,options,tabpages,winsize,terminal")
グローバル
{+mksession 機能付きでコンパイルされたときのみ有効}
コマンド :mksession の効果を変更する。値はキーワードのコンマ区切りの
リストである。キーワードは、ある項目の保存と復元を有効にする。
キーワード 復元される項目
blank 空のウィンドウ
buffers ウィンドウに表示されたバッファだけでなく、隠れバッファ
と、リストに載っているだけで読み込まれていないバッファ
curdir カレントディレクトリ
folds 手動で作られた折り畳み、折り畳みの開閉の区別、折り畳み
関連のローカルなオプション
globals 大文字で始まり、最低1個の小文字を含む名前のグローバル
変数。文字列型と数値型の変数のみ保存される。
help ヘルプウィンドウ
localoptions ウィンドウまたはバッファに対してローカルなオプションと
マッピング (ローカルなオプションのグローバルな値ではな
い)
options 全てのオプションとマッピング (ローカルなオプションのグ
ローバルな値も)
skiprtp オプションから 'runtimepath' と 'packpath' を除く
resize Vimのウィンドウのサイズ: 'lines' と 'columns' の値
sesdir セッションファイルがおかれているディレクトリが、カレン
トディレクトリになる (ネットワーク越しに、異なったシス
テムからアクセスを受けるプロジェクトでは便利である)
slash ファイル名内の '\' がスラッシュに置換される
tabpages 全タブページ。これが含まれていないと、カレントタブペー
ジのみが復元される。そのため、タブページごとに別々のセッ
ションを保存することができる。
terminal コマンドが復元できる端末ウィンドウを含む
unix WindowsやDOS上でも、Unix形式の end-of-line (1個の
<NL>) を使う
winpos Vimのウィンドウ全体の位置
winsize ウィンドウサイズ
"curdir" と "sesdir" の両方を含めないこと。
"curdir" も "sesdir" も含まれていないときは、ファイル名は絶対パスで保
存される。
"options" を省略した場合、セッション復元後に多くの機能がうまく機能しな
くなる。
"slash" と "unix" は、Windows上でセッションファイルをUnixと共有すると
きに便利である。Unix版のVimはdos形式のスクリプトを読み込めないが、
Windows版のVimはunix形式のスクリプトを読み込めるからだ。
'shell' 'sh' E91
'shell' 'sh' 文字列 (既定では $SHELL または "sh", Win32: "cmd.exe")
グローバル
"!" や ":!" 等のコマンドで使うシェルの名前。この値を変えたときは、以下
のオプションも調べること: 'shelltype', 'shellpipe', 'shellslash',
'shellredir', 'shellquote', 'shellxquote', 'shellcmdflag'
コマンドには引数を与えることができる。例えば "csh -f" である。
値に空白や '\' を含める方法については、option-backslash を参照。環境
変数は展開される :set_env。
制限モード restricted-mode ではシェルコマンドは使えない。このモード
は $SHELL の値が "false" か "nologin" で終わる場合に使われる。
シェルの名前が空白を含むときは、引用符で囲み、そして、空白をエスケープ
する必要がある。引用符付きの例:
にそれぞれ付けられた '\' (値の終わりと間違えないため) に注意。
Note また "-f" は引用符の中に入っていないことにも注意。それはコマンド
名の一部ではないからである。Vim はパスの区切りに使われている '\' を自
動的に認識する。
エスケープされた空白の例 (Vim は、$SHELL からのオプションを初期化する
場合にこれを行う):
ラッシュは :set によって消費される。
MS-Windowsでは、実行可能ファイルの名前が ".com" で終わるときは ".com"
まで含めなければならない。つまりシェルを "command.com" や "4dos.com"
に設定すると正しく機能するが、"command" や "4dos" に設定すると、必ずし
も全てのコマンドに対しては動作しなくなる (例えばフィルタコマンド)。
理由は不明だが、"4dos.com" を使ったときはカレントディレクトリが "C:\"
に変更される。これを防ぐには 'shell' を次のようにすること。
内で設定することはできない。
'shellcmdflag' 'shcf'
'shellcmdflag' 'shcf' 文字列 (既定では: "-c"
Win32 で 'shell' に "powershell" が含まるとき:
"-Command"、あるいは "sh" が含まれないとき:
"/c")
グローバル
"!" や ":!" 等のコマンドを実行するためにシェルに渡されるフラグ。例えば、
"bash.exe -c ls", "powershell.exe -Command dir" または
"cmd.exe /c dir" である。MS-Windowsでは、ユーザーがこのオプションを設
定する必要がないように、既定値は 'shell' に適した値が設定される。
Unix では一つ以上のフラグを指定できる。空白で区切られた各部は shell
コマンドの引数として渡される。
値に空白や '\' を含める方法については、option-backslash を参照。
MS-Windows については dos-shell と dos-powershell も参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellpipe' 'sp'
'shellpipe' 'sp' 文字列 (既定では ">", ">%s 2>&1", "| tee", "|& tee"
"2>&1| tee" または
"2>&1 | Out-File -Encoding default")
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
コマンド ":make" の出力をエラーファイルに導くために使われる文字列。
:make_makeprgも参照。値に空白や '\' を含める方法については、
option-backslash を参照。
必要であれば、一時ファイルの名前は "%s" で参照できる (値に "%s" が1個
も含まれていなければ、一時ファイル名は自動的に追加される)。
Amigaでの既定値は ">" である。MS-Windowsでの既定値は powershell を使う
なら "2>&1 | Out-File -Encoding default"、そうでない場合は ">%s 2>&1"
である。出力はファイルに直接保存され、スクリーンには表示されない。
Unixでの既定値は "| tee" である。コンパイラからの標準出力がファイルに
保存され、画面にも表示される。初期化の後にオプション 'shell' が "csh"
か "tcsh" だったときは、既定値は "|& tee" である。'shell' が "sh",
"ksh", "mksh", "pdksh", "zsh", "zsh-beta", "bash", "fish", "ash" また
は "dash" のときは、既定値は "2>&1| tee" である。つまり標準エラー出力
も含まれる。'shell' オプションは、使用される前にパスが削除される (例え
ば "/bin/sh" なら "sh" が使われる)。
Unix と MS-Windows で、'shell' オプションが "pwsh" のときデフォルトが
">%s 2>&1" になり、出力が画面には表示されなくなる。
このオプションの初期化は、ファイル ".vimrc" の読み込みと他の初期化の後
に行われる。これは 'shell' がその間に設定されていたときは、'shellpipe'
を自動的に変更するためである。ただし 'shellpipe' がユーザー自らによっ
て設定されていたときは、自動設定は行われない。
'shellpipe' が空のときは、":make" の出力はリダイレクトされない。この設
定は 'makeprg' のプログラムが自分で 'makeef' に書き込んでくれるときに
便利である。パイプ処理はしたくないが 'makeef' を含みたいときには、
'shellpipe' を1個の空白に設定すること。空白の前には ":set sp=\ " のよ
うに '\' を置くことを忘れないこと。
将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代
遅れになるだろう (少なくともUnixでは)。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellquote' 'shq'
'shellquote' 'shq' 文字列 (既定では "")
グローバル
"!" や ":!" 等のコマンドでコマンドをシェルに渡すときに、コマンドを囲む
引用符(の列)。リダイレクトの指示は常に引用符の外側に置かれる。リダイレ
クトの指示を中に含めるには、オプション 'shellxquote' を参照。両方のオ
プションを設定するのは、おそらく良い方法ではない。
既定値は空である。MS-Windows系のシステムの、MKS Korn Shell や bash 等
のサードパーティ製のシェルに対してのみ便利である。それらのシェルでは引
用符を "\"" とするべきである。dos-shell を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellredir' 'srr'
'shellredir' 'srr' 文字列 (既定では ">", ">&", ">%s 2>&1" もしくは
"2>&1 | Out-File -Encoding default")
グローバル
フィルタコマンドの出力を一時ファイルに導くために使われる文字列。:!も
参照。値に空白や '\' を含める方法については、option-backslash を参照。
必要であれば、一時ファイルの名前は "%s" で参照できる (このオプションの
値に "%s" が1個も含まれていなければ、一時ファイル名は自動的に追加され
る)。
既定値は ">" である。Unixでは、初期化の後にオプション 'shell' が "csh"
または "tcsh" だったときは、既定値は ">&" になる。'shell' が "sh",
"ksh", "mksh", "pdksh", "zsh", "zsh-beta", "bash", "fish" または
"pwsh" だったときは、既定値は ">%s 2>&1" になる。つまり標準エラー出力
も含まれる。Win32では、Unixと同様のチェックがなされ、加えて値が "cmd"
であるかどうか調べられる。そのときは既定値は ">%s 2>&1" になり、
"powershell" であるかを調べて、その場合は既定値を
"2>&1 | Out-File -Encoding default" にする(dos-powershell を参照)。
また ".exe" 付きのシェル名も探す。
このオプションの初期化は、ファイル ".vimrc" の読み込みと他の初期化の後
に行われる。これは 'shell' がその間に設定されていたときは、
'shellredir' を自動的に変更するためである。ただし 'shellredir' がユー
ザー自らによって設定されていたときは、自動設定は行われない。
将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代
遅れになるだろう (少なくともUnixでは)。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellslash' 'ssl' 'noshellslash' 'nossl'
'shellslash' 'ssl' 切替 (既定ではオフ)
グローバル
{VimのMS-Windows版でのみ有効}
オンのときは、ファイル名の展開にスラッシュが使われる。これは cmd.exe,
pwsh.exe, powershell.exe の代わりにUnix系のシェルを使うときに便利であ
る。'\' も入力できるが、Vimによってスラッシュに変換される。
Note このオプションをオンにしたりオフにしても、すでにVim内に読み込まれ
たファイル名には影響がないので、完全を期すためにはこのオプションはどの
ファイルを開くのよりも先に設定する必要があることに注意。この点は将来変
更になるかもしれない。
'shellslash' はパスの区切りとして '\' が使われるときだけ働く。これをテ
ストするには次のようにする:
'shelltemp' 'stmp' 'noshelltemp' 'nostmp'
'shelltemp' 'stmp' 切替 (Vi の既定はオフ, Vim の既定はオン)
グローバル
オンのときは、シェルコマンドに一時ファイルを使う。オフのときはパイプを
使う。オフであってもパイプが使えない場合は一時ファイルを使う。
現在のところパイプは Unix と MS-Windows 2K 以降でのみサポートされてい
る。これを確認するには次のようにする:
'shell' のプログラムがリダイレクトをサポートしていなくてもよいことであ
る。
一時ファイルを使うことの利点は、ファイルタイプとエンコーディングを判別
できることである。
'shelltemp' がオフのときは自動コマンドイベント FilterReadPre,
FilterReadPost, FilterWritePre, FilterWritePost が発生しない。
system() 関数はこのオプションを参照せず常に一時ファイルを利用する。
NOTE: このオプションは 'compatible' がオフになるとVimの既定値に設定さ
れるので注意。
'shelltype' 'st'
'shelltype' 'st' 数値 (既定では 0)
グローバル
{VimのAmiga版のみ}
Amigaでは、このオプションはシェルを使うコマンドの実行方法に影響する。
0 または 1: 常にシェルを使う
2 または 3: 行のフィルタ処理にのみシェルを使う
4 または 5: コマンド ':sh' にのみシェルを使う
シェルを使わないときは、コマンドは直接実行される。
0 または 2: "シェル名 'shellcmdflag' コマンド" で外部コマンドを実行
1 または 3: "シェル名 コマンド" で外部コマンドを実行
'shellxescape' 'sxe'
'shellxescape' 'sxe' 文字列 (既定では: ""
MS-Windows: "\"&|<>()@^")
グローバル
'shellxquote' が "(" に設定されているとき、このオプションで指定された
文字は '^' 文字でエスケープされる。これによって cmd.exe を使ってほとん
どの外部コマンドを実行できるようにする。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellxquote' 'sxq'
'shellxquote' 'sxq' 文字列 (既定では "";
Win32 で 'shell' が cmd.exe なら: "("
Win32 で 'shell' が powershell.exeなら: "\""
Win32 で 'shell' に "sh" が含まれるなら: "\""
Unixで system() を使っているなら: "\"")
グローバル
"!" や ":!" 等のコマンドでコマンドをシェルに渡すときに、コマンドを囲む
引用符(の列)。リダイレクトの指示もこの中に含む。リダイレクトの指示を含
めないようにするには、オプション 'shellquote' を参照。両方のオプション
を設定するのは、おそらく良い方法ではない。
値が '(' なら末尾に ')' が追加される。値が '"(' なら ')"' が追加され
る。
値が '(' のときの動作に付いては 'shellxescape' も参照。
このオプションはほとんどのシステムでは初期設定は空になるが、Win32 版で
自動的にコマンドの最初と最後のクォート文字を取り除く cmd.exe,
powershell.exe または pwsh.exe を使う場合や、設定値が "\"" となる必要
のあるMKS Korn Shell や bash などのサードパーティ製のシェルを使う場合
に役立つことが知られている。ユーザーがこのオプションを設定する必要がな
いように、初期設定は 'shell' に適した値が設定される。dos-shell を参
照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shiftround' 'sr' 'noshiftround' 'nosr'
'shiftround' 'sr' 切替 (既定ではオフ)
グローバル
インデントをオプション 'shiftwidth' の値の倍数に丸める。コマンド ">"
と "<" に適用される。挿入モードでの CTRL-T と CTRL-D では、インデント
は常に 'shiftwidth' の倍数に丸められる (これはVi互換の動作である)。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'shiftwidth' 'sw'
'shiftwidth' 'sw' 数値 (既定では 8)
バッファについてローカル
(自動)インデントの各段階に使われる空白の数。オプション 'cindent', コマ
ンド >>, << 等に使われる。
0 の場合は、'tabstop' の値が使われる。実際に使われる値を取得するには
shiftwidth() 関数を使う。
'shortmess' 'shm'
'shortmess' 'shm' 文字列 (Vimの既定値: "filnxtToOS", Viの既定値: "S",
POSIX の既定値: "AS")
グローバル E1336
このオプションは、コマンド CTRL-G 等によるファイル関連のメッセージで、
「継続」プロンプト hit-enter を避けるのに役立つ。またその他のメッセー
ジを避けるのにも役立つ。
値は以下のフラグのリストである。
フラグ 効果
f "(file 3 of 5)" の代わりに "(3 of 5)" を表示 shm-f
i "[Incomplete last line]" の代わりに "[noeol]" を表示 shm-i
l "999 行, 888 バイト" の代わりに "999L, 888B" を表示 shm-l
m "[Modified]" の代わりに "[+]" を表示 shm-m
n "[New File]" の代わりに "[New]" を表 shm-n
r "[readonly]" の代わりに "[RO]" を表示 shm-r
w 書き込みコマンドには "書込み" の代わりに "[w]" を、 shm-w
コマンド':w >> file' には "追加" の代わりに "[a]" を表示
x "[dos format]" の代わりに "[dos]", "[unix format]" shm-x
の代わりに "[unix]", "[mac format]" の代わりに "[mac]" を表示
a 上記の省略を全て行う shm-a
o ファイルの書き込み時のメッセージを、その後のファイル shm-o
の読み込み時のメッセージで上書きする (":wn" を使うときやオプ
ション 'autowrite' がオンのときに便利である)
O ファイルの読み込み時のメッセージや Quickfix 関係の shm-O
メッセージ (例えば ":cn") がその前のメッセージを必ず上書きする
s "下まで検索したので上に戻ります" と "上まで検索した shm-s
ので下に戻ります" というメッセージを表示しない。検索件数を使用
する場合、件数メッセージの前に "W" が表示されない(下記の
shm-S を参照)
t ファイル間連のメッセージが長すぎてコマンドラインに shm-t
収まらないときは、先頭を切り詰める。先頭には "<" が表示される。
Exモードでは無視される
T その他のメッセージが長すぎてコマンドラインに収まら shm-T
ないときは、中央を切り詰める。中央には "..." が表示される。Ex
モードでは無視される
W ファイルの書き込み時に "書込み" や "[w]" を表示しない shm-W
A スワップファイルがすでにあることが発見されたときに shm-A
"注意" メッセージを表示しない
I Vimの開始時に挨拶メッセージを表示しない :intro shm-I
c ins-completion-menu 関連のメッセージを表示しない。 shm-c
例えば、"-- XXX補完 (YYY)"、"1 番目の該当 (全該当 2 個中)"、
"唯一の該当"、"パターンは見つかりませんでした"、"始めに戻る"、
など
C "scanning tags" など、挿入モードの補完項目のスキャン shm-C
中にメッセージを表示しない
q "記録中 @a" の代わりに "記録中" を表示 shm-q
F コマンドに対する :silent のように、ファイルを編集中 shm-F
にファイル情報を表示しない。note これは autocommand および
'autoread' の再読み込みからのメッセージにも影響する
S 検索時に検索件数メッセージを表示しない。例えば shm-S
"[1/5]"。"S" フラグが指定されない (例えば、検索件数が表示され
る) 場合、"search hit BOTTOM, continuing at TOP" および
"search hit TOP, continuing at BOTTOM" メッセージは、検索件数
統計の前に "W" (覚え方: Wrapped) 文字のみで示される。
{訳注: 以下日本語メッセージの場合:
"[Incomplete last line]" "[最終行が不完全]"
"[Modified]" "[変更あり]"
"[New File]" "[新ファイル]"
"[New]" "[新]"
"[readonly]" "[読込専用]"
"[RO]" "[読専]"
"[dos format]" "[dosフォーマット]"
"[unix format]" "[unixフォーマット]"
"[mac format]" "[macフォーマット]"
}
このオプションはバッファを変更するとき <Enter> を打ち込むのを避ける機
会を提供する。が、表示の余裕がある限り有益なメッセージを表示する。
'shm' が空のときと同じようにメッセージ全体を表示するには、コマンド
":file!" を使うこと。
便利な値の例:
shm= メッセージの省略なし
shm=a メッセージを省略するが内容までは省略しない
shm=at メッセージを省略し、必要があれば内容も切りつめる
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'shortname' 'sn' 'noshortname' 'nosn'
'shortname' 'sn' 切替 (既定ではオフ)
バッファについてローカル
ファイル名が8文字に3文字の拡張子を付けたものであると仮定する。ファイル
名には複数のドット '.' は使えない。オンならば、拡張子 (".~" または
".swp") を付けるときにはファイル名の中のドットは下線 '_' に置き換えら
れる。このオプションは、ファイルをMS-DOS互換のシステム (例えば
messydos や crossdos) 上で編集するときに便利である。
'showbreak' 'sbr' E595
'showbreak' 'sbr' 文字列 (既定では "")
グローバル/ウィンドウについてローカル global-local
{+linebreak 機能付きでコンパイルされたときのみ有効}
折り返された行の先頭に表示する文字列。"> " や "+++ " に設定すると便利
である:
意。次のようにするともっと簡単である:
が指定できる (将来のバージョンでは、行末に表示される部分と行頭に表示さ
れる部分の区切りにコンマが使われるかもしれない)。
この文字列は、オプション 'highlight' のフラグ '@' に従って強調表示され
る。
Note 'showbreak' の文字列の次にタブ文字が来たときは、表示方法が異なる
ので注意。
'showbreak' の文字列を行番号の間に表示したいときは、'cpoptions' にフラ
グ "n" を加えること。
ウィンドウローカルの値がグローバルな値を上書きする。もし、グローバルな
値が設定されており、現在のウィンドウでは値を設定したくないときは NONE
を使う:
'showcmd' 'sc' 'noshowcmd' 'nosc'
'showcmd' 'sc' 切替 (Vimの既定値: オン、Unixでの既定値: オフ、
Viの既定値: オフ、defaults.vim 内でオンに設定
される)
グローバル
コマンド (の一部) を画面の最下行に表示する。ユーザーのターミナルの表示
が遅いときにはオフにすること。
ビジュアルモードでは、選択領域のサイズが以下のように表示される。
- 1行の中で選択しているときは、文字数を表示。
文字数とバイト数が違う場合はそれも表示される: 例えば "2-6" なら 2 文
字で 6 バイトという意味になる。
- 2行以上にわたって選択しているときは、行数を表示。
- 矩形選択のときは、画面上の文字数、つまり行数×列数を表示。
この情報は、'showcmdloc' オプションを使って別の場所に表示することがで
きる。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'showcmdloc' 'sloc'
'showcmdloc' 'sloc' 文字列 (既定では "last")
グローバル
このオプションを使用すると、(部分的に) 入力されたコマンドを別の場所に
表示できる。可能な値は以下:
last 画面の最終行 (デフォルト)。
statusline カレントウィンドウのステータス行。
tabline 'showtabline' が有効な場合の画面の最初の行。
このオプションを 'statusline' または 'tabline' に設定すると、コマンド
が変更されるたびに、つまりキーが押されるたびにこれらが再描画されること
になる。
'statusline' の %S 項目は、'statusline' または 'tabline' でテキストを
配置するために使用できる。カスタムの 'statusline' または 'tabline' を
使用しないと、都合のいい場所に表示される。
'showfulltag' 'sft' 'noshowfulltag' 'nosft'
'showfulltag' 'sft' 切替 (既定ではオフ)
グローバル
挿入モードでタグファイルから単語補完をするとき (ins-completion を参
照)、タグ名と整理された検索パターン (あれば) の両方をマッチする限り
表示する。そのため、C言語の関数にマッチすれば、どのような引数を必要と
するかのテンプレートを見ることができる (コーディングスタイルが適当なも
のであれば)。
Note: 'completeopt' に "longest" を含めている場合はこれを同時に使うこ
とはできない。検索パターンからの補完がタイプされたテキストにマッチしな
いことがあるからである。
'showmatch' 'sm' 'noshowmatch' 'nosm'
'showmatch' 'sm' 切替 (既定ではオフ)
グローバル
閉じ括弧が入力されたとき、対応する開き括弧にわずかの間ジャンプする。マッ
チした括弧が画面上に見えているときのみジャンプする。マッチを表示する時
間はオプション 'matchtime' で設定できる。
マッチする閉じ括弧がないときは、ビープ音が鳴る (マッチが見えても見えな
くても)。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
'cpoptions' にフラグ 'm' が含まれていないときは、ジャンプ中に文字を入
力するとカーソルがすぐに元の場所に戻る。
マッチの表示時のカーソルの形状や点滅方法については、'guicursor' の
"sm" の項目を参照。
オプション 'matchpairs' によって対応する文字を指定することができる。対
応する括弧を探すときは 'rightleft' と 'revins' が適用される。
カーソル下の括弧に対応する括弧を強調させる方法については matchparen プ
ラグインを参照 pi_paren.txt。
Note: このオプションの省略形式の名前の使用には、保護者への説明が望まれ
るので注意(笑)
'showmode' 'smd' 'noshowmode' 'nosmd'
'showmode' 'smd' 切替 (Vimの既定値: オン、Viの既定値: オフ)
グローバル
挿入モード、置換モードまたはビジュアルモードで最終行にメッセージを表示
する。このメッセージの強調表示の設定には、オプション 'highlight' のフ
ラグ 'M' を使うこと。
XIM が使用可能なときは、メッセージに "XIM" が含まれる。しかしこれは
実際に XIM が起動しているということではない。特に 'imactivatekey' が設
定されていないときは注意。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'showtabline' 'stal'
'showtabline' 'stal' 数値 (既定では 1)
グローバル
このオプションは、いつタブページのラベルを表示するかを指定する。
0: 表示しない
1: 2個以上のタブページがあるときのみ表示
2: 常に表示
これは GUI 版と非 GUI 版両方に適用される。
タブページについて詳しくは tab-page を参照。
'sidescroll' 'ss'
'sidescroll' 'ss' 数値 (既定では 0)
グローバル
水平スクロールの刻み幅。オプション 'wrap' がオフでカーソルが画面外に出
るときのみ使われる。
値が 0 のときはカーソルを画面の中央に置くようにスクロールする。
遅いターミナルを使っているときは、大きい値または 0 に設定すること。速
いターミナルを使っているときは小さい値または 1 に設定すること。コマン
ド "zh" と "zl" には使われない。
'sidescrolloff' 'siso'
'sidescrolloff' 'siso' 数値 (既定では 0)
グローバル/ウィンドウについてローカル global-local
オプション 'wrap' がオフのとき、カーソルの右または左には、最低でもこの
数だけの列が表示される。'sidescroll' を 1 以上に設定しているときにこの
オプションも 1 以上にすると、水平スクロールをしている周辺のテキストが
見えるようになる (行頭の近くにいるとき以外)。とても大きい値 (999等)に
すると、カーソルの置かれた列は常にウィンドウの中央に表示される (行頭の
近くにいるとき以外)。
ローカル値を使用した後は、次の2つのうちいずれかを使用してグローバル値
に戻る:
例: 次の例のように、このオプションを 'sidescroll' と 'listchars' と一
緒に設定し、カーソルを "extends" の文字の上に決して来ないようにし
てみる。
'signcolumn' 'scl'
'signcolumn' 'scl' 文字列 (既定では "auto")
ウィンドウについてローカル
{+signs 機能付きでコンパイルされたときのみ有効}
目印桁を表示するかどうかを指定する。有効な値は以下のとおり:
"auto" 表示すべき目印があるときのみ
"no" 常に表示しない
"yes" 常に表示する
"number" 目印を 'number' カラムに表示する。行番号カラムが表示さ
れていないのならば、"auto" のように振る舞う。
'smartcase' 'scs' 'nosmartcase' 'noscs'
'smartcase' 'scs' 切替 (既定ではオフ)
グローバル
検索パターンが大文字を含んでいたらオプション 'ignorecase' を上書きする。
検索パターンがキーボードから打ち込まれたときに 'ignorecase' がオンの場
合にのみ使われる。適用されるコマンドは "/", "?", "n", "N", ":g", ":s"
である。"*", "#", "gd" やタグ検索などには適用されない。"*" や "#" の後
で "/" を使い、検索パターンの履歴を呼び出して <Enter> を打ち込むことで、
'smartcase' の効果を適用することができる。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'smartindent' 'si' 'nosmartindent' 'nosi'
'smartindent' 'si' 切替 (既定ではオフ)
バッファについてローカル
新しい行を作ったときに高度な自動インデント smart autoindenting を行う。
C言語系のプログラミング言語で有効だが、他のプログラミング言語にも使え
る。オプション 'cindent' でも似たことができ、より多くの場面で適切に動
作するが、'cindent' の方がこちらより厳密である。 C-indenting を参照。
'cindent' がオンか 'indentexpr' が設定されているときは 'si' をオンにし
ても効果はない。'indentexpr' を使うとさらに高度な動作が実現できる。
'smartindent' を使うときは、'autoindent' もオンに設定するべきである。
インデントは、以下のときに自動的に挿入される。
- '{' で終わる行で新しい行を作ったとき。
- 'cinwords' 内のキーワードで始まる行の次に新しい行を作ったとき。
- '}' で始まる行の上に新しい行を作ったとき (コマンド "O" のみ)。
新しい行の先頭に '}' を入力すると、そこのインデントは対応する '{' と等
しくなる。
新しく作った行の最初の文字が '#' のとき、その行のインデントは取り除か
れ、'#' は最前列に置かれる。次の行のインデントは '#' の行の前と同じに
なる。こうしてほしくないなら、次のマッピングを使うこと。
":inoremap # X^H#"
ここで ^H は CTRL-V CTRL-H と打ち込むと入力される。
コマンド ">>" を使ったとき、'#' で始まる行は右に移動しない。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
'smarttab' 'sta' 'nosmarttab' 'nosta'
'smarttab' 'sta' 切替 (既定ではオフ)
グローバル
オンのときは、行頭の余白内で <Tab> を打ち込むと、'shiftwidth' の数だけ
空白が挿入される。他の場所では 'tabstop' または 'softtabstop' の数だけ
空白が挿入される。<BS> を使うと行頭の 'shiftwidth' 分のスペースを削除
する。
オフのときは、<Tab> を打ち込むと常に 'tabstop' または 'softtabstop' の
数だけ空白が挿入される。'shiftwidth' はテキストを右左にずらすときのみ
使われるshift-left-right。
挿入される文字 (タブ文字または空白) は 'expandtab' によって変わる。
ins-expandtab も参照。'expandtab' がオフのときは、<Tab> を打ち込むと
空白の数が最小になる {訳注: できる限り空白をタブ文字で置き換える}。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'smoothscroll' 'sms' 'nosmoothscroll' 'nosms'
'smoothscroll' 'sms' 切替 (既定ではオフ)
ウィンドウについてローカル
スクロールはスクリーン行で動作する。'wrap' が設定されており、ウィンド
ウの最初の行が折り返されている場合、その一部がウィンドウの上にあるかの
ように表示されないことがある。"<<<" が最初の行の先頭に表示され、
hl-NonText で強調表示される。
最後の行をできるだけ多く表示するには、'display' オプションに
"lastline" を追加することもできる。
NOTE: 部分的に実装されており、gj および gk ではまだ動作しない。
'softtabstop' 'sts'
'softtabstop' 'sts' 数値 (既定では 0)
バッファについてローカル
編集で <Tab> の幅として使用する空白の数。<Tab> を挿入したり <BS> を
使ったときに適用される。普通に <Tab> を挿入するような使用感でありなが
ら、実際にはスペース文字と <Tab> 文字が混ぜて使用される。これは 'ts'
を標準値の 8 にしたままで、編集作業では <Tab> 幅として他の値を使いたい
ときに便利である。その場合でも "x" 等のコマンドは実際の文字に対して動
作する。
'sts' がゼロならこの機能は無効になる。
'sts' がマイナスなら 'shiftwidth' の値が使われる。
'softtabstop' は、'paste' オプションがオンになった時には0に設定され、
'paste' オプションがリセットされた際には復元される。
ins-expandtab も参照。'expandtab' がオフのときは、<Tab> を打ち込むと
空白の数が最小になる {訳注: できる限り空白をタブ文字で置き換える}。
'cpoptions' にフラグ 'L' を含めると、'list' がオンのとき、タブの扱い方
が変わる。
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
Vim が +vartabs 機能付きでコンパイルされている場合、'varsofttabstop'
が空文字列以外の何かに設定されていると 'softtabstop' の値は無視される。
'spell' 'nospell'
'spell' 切替 (既定ではオフ)
ウィンドウについてローカル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
これがオンのときはスペルチェックが行われる。spell を参照。
その言語は 'spelllang' で指定する。
'spellcapcheck' 'spc'
'spellcapcheck' 'spc' 文字列 (既定では "[.?!]\_[\])'" \t]\+")
バッファについてローカル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
文の末尾を見つけるのに使うパターン。その次の単語が大文字で始まるかどう
かチェックされる。大文字でなければ、その単語が SpellCap hl-SpellCap
で強調される (その単語がスペリングミスともみなされていなければ)。
このチェックを行いたくなければ、このオプションを空にすること。
'spell' がオンのときだけ適用される。
特殊な文字について注意すること。スペースとバックスラッシュを含める方法
については option-backslash を参照。
言語に応じて自動的にこのオプションをオンにする方法については
set-spc-auto を参照。
'spellfile' 'spf'
'spellfile' 'spf' 文字列 (既定では空)
バッファについてローカル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
コマンド zg, zw で単語を追加するための単語リストファイルの名前。こ
のファイル名の末尾は ".{encoding}.add" でなければならない。ここにパス
を含める必要がある。そうしないと、カレントディレクトリにそのファイルが
作られる。
パスには、'isfname'、スペース、コンマ、'@' の文字を含めることができる。
E765
このオプションの値はファイル名のコンマ区切りのリストであってもよい。
コマンド zg と zw に与えるカウントによって、そのリストのどれにアク
セスするかを指定することができる。これによって、個人用の単語リストファ
イルとプロジェクト用の単語リストファイルを使い分けることができる。
このオプションが空なのに単語が追加されたときは、Vim が自動的に値を設定
する: 書き込み可能な最初の 'runtimepath' のディレクトリを使用する。そ
こに "spell" というディレクトリがなければ作成する。ファイル名には
'spelllang' に現れる最初の言語名が使われ、地域名は無視される。
そうして作られる ".spl" ファイルがスペルチェックに作られる。このファイ
ルは 'spelllang' に入っていなくてもよい。
普通は全ての地域に対して1つのファイルが使われるが、望むなら地域名を追
加することもできる。しかしその場合、'spellfile' がそのファイル名に設定
されているときだけ使われる。'spelllang' のエントリに対しては地域名を省
いたファイルだけが使われる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'spelllang' 'spl'
'spelllang' 'spl' 文字列 (既定では "en")
バッファについてローカル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
コンマ区切りの単語リスト名のリスト。オプション 'spell' がオンのとき、
これらの言語に対してスペルチェックが行われる。例:
は強調される。
単語リスト名は、英数字、ダッシュ、またはアンダースコアで構成する必要が
ある。コンマやドットを含めてはならない。2文字の言語名と詳細を区切るの
にダッシュを使うことが推奨される。つまり、"en-rare" は頻度の低い(rare)
英語となる。
地域名は最後に書いて、"_xx" という形でなければならない。ここで "xx" は
小文字で2文字の地域名である。複数の地域名を列挙することもできる:
"en_us, en_ca" とすると US 英語とカナダ英語の両方に対応する。しかし
オーストラリア、ニュージーランド、英国に固有の単語には対応しない。
(Note: 現在のところ en_au と en_nz の辞書は en_ca, en_gb そして en_us
のものよりも古い)
"cjk" という名前が含まれる場合は、東アジアの文字はスペルチェックから除
外される。これは、アジアの文字を含むようなテキストを編集する際に便利で
ある。
Note "medical" 辞書は存在せず、これは単に長い名前の例でしかない。
E757
特別な場合として、.spl ファイルの名前をそのまま指定することができる。
その名前の最初の "_xx" は除去され、地域名として使われる (_xx はアン
ダースコア、2文字、そしてその後にアルファベットでないものが続くことを
意味する)。これは主にテスト用のためである。正しいエンコーディングが使
われているかどうか Vim はチェックしないので、ユーザーが確認しなければ
ならない。
'encoding' が設定されると、単語リストは再読み込みされる。そのため、2度
読み込むのを避けるため、'encoding' の後で 'spelllang' を設定するとよい。
関係するスペルファイルがどう探されるかについてはここで説明されている:
spell-load.
プラグイン spellfile.vim が動作しているならば、'runtimepath' に .spl
ファイルが見つからない言語名が指定されたとき、このプラグインによりユー
ザーに対してファイルをダウンロードするかどうか問い合わせが行われる。
このオプションの設定が成功すると、'runtimepath' の "spell/LANG.vim" が
読み込まれる。"LANG" は 'spelllang' の値のASCII文字でも数字でもなく、
ダッシュでもない最初の文字までである。
set-spc-auto を参照。
'spelloptions' 'spo'
'spelloptions' 'spo' 文字列 (既定では "")
バッファについてローカル
{+syntax機能付きでコンパイルされたときのみ有効}
スペルチェックのオプションのコンマ区切りのリスト:
camel 単語がCamelCasedの時、"Cased" は分割された単語とみな
す: 1語の中の後に小文字が続く大文字すべてが新たな単語
の開始を示している。
'spellsuggest' 'sps'
'spellsuggest' 'sps' 文字列 (既定では "best")
グローバル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
スペリング候補の方法を指定する。コマンド z= と関数 spellsuggest()
の両方に適用される。次の要素のコンマ区切りのリストになる:
best 英語にもっともよく対応している内部メソッド。"fast" 方
式と同じように相異点を発見した上で、音の近さによるスコ
ア判定を少し用いて順序を改善する。
double 2つの方法を用い、その結果を混合させる内部メソッド。第
一の方法は "fast" で、第二の方法は候補と修正対象の音が
どれだけ似ているかを計算する。これは言語が sound
folding を明示するときだけ機能する。時間がかかるかもし
れず、必ずしもよい結果を出すとは限らない。
fast 文字の挿入、削除、交換など、単純な相異だけを判定する内
部メソッド。単純なタイプミスに対してよく機能する。
{number} z= でリストされる候補の最大数。spellsuggest() には
適用されない。候補の数は決して 'lines' の値 - 2 を超え
ない。
timeout:{millisec} サジェスト検索の時間を {millisec} ミリ秒に制限す
る。以降の方法に適用される。省略時は5000になる。負数の
ときは制限無しになる。{+reltime 機能付きでコンパイル
されたときのみ有効}
file:{filename} {filename} を読み込む。そのファイルにはスラッシュで
区切られた2つの列が書いていなければならない。第1列に間
違った単語が書かれ、第2列に候補となる正しい単語が書か
れている。
例:
theribal/terrible
内部メソッドでは候補リストの上の方には出てこない、あり
がちなミスのためにこれを使う。スラッシュを含まない行は
無視されるのでコメントとすることができる。
第 2 列の単語は正しいものでない場合は、それは使われな
い。その単語がスペルミスとして扱われている場合は
".add" ファイルにその単語を追加する。
このファイルは全ての言語に対して使われる。
expr:{expr} 式 {expr} を評価する。スペースによるトラブルを避けるた
め、関数を使うこと。引数なしで関数を呼び出すのが最善で
ある。expr-option-function を参照。
v:val が間違ってつづられた単語を保持する。この式を評
価した結果が候補とスコアからなるリストのリストにならな
ければならない。
例:
[['the', 33], ['that', 44]]
'verbose' をオンにして z= を使うと内部メソッドが使う
スコアを見ることができる。スコアは低いほどよい。
一時的に 'spellsuggest' から "expr:" の部分を除くなら
ば spellsuggest() を呼び出してもよい。
オプション 'verbose' が非0になっていない限り、エラーは
警告無しに無視される。
"best", "double", "fast" は、どれか1つだけ指定できる。他のものはどんな
順序で何回指定してもよい。例:
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'splitbelow' 'sb' 'nosplitbelow' 'nosb'
'splitbelow' 'sb' 切替 (既定ではオフ)
グローバル
オンのとき、ウィンドウを横分割すると新しいウィンドウはカレントウィンド
ウの下に開かれる :split。
'splitkeep' 'spk'
'splitkeep' 'spk' 文字列 (既定では "cursor")
グローバル
このオプションの値は、水平分割を開いたり閉じたりサイズ変更したりすると
きのスクロール動作を決定する。
可能な値は以下:
cursor 同じ相対カーソル位置を維持する。
screen テキストを同じスクリーン行に維持する。
topline トップラインを同じに維持する。
"screen" と "topline" の値は、必要に応じてカーソル位置が変更される。こ
の場合、ジャンプリストには前のカーソル位置が設定される。"screen" の場
合、'wrap' が有効な場合、テキストは常に同じスクリーン行に維持されるわ
けではない。
'splitright' 'spr' 'nosplitright' 'nospr'
'splitright' 'spr' 切替 (既定ではオフ)
グローバル
オンのとき、ウィンドウを縦分割すると新しいウィンドウはカレントウィンド
ウの右に開かれる :vsplit。
'startofline' 'sol' 'nostartofline' 'nosol'
'startofline' 'sol' 切替 (既定ではオン)
グローバル
オンのときは、以下のコマンドで移動すると、カーソルは行内の最初の非空白
文字に移動する。オフのときは、カーソルは (可能ならば) 同じ列に置かれる。
適用されるコマンド:
- CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", "L", "gg"
- 行単位で行うときの "d", "<<", "==", ">>"
(operator-resulting-pos)
- カウントを指定したときの "%"
- バッファ変更コマンド (CTRL-^, :bnext, :bNext 等)
- 行番号のみの Ex コマンド (例えば ":25" や ":+")。
バッファ変更コマンドの場合は、カーソルはそのバッファが最後に編集された
ときの列に置かれる。
NOTE: このオプションは、'compatible' がオンになるとオンになるので注意。
{訳注: 実際の動作はドキュメントとかなり違う。移動先が1列目の場合と余白
以外の最初の文字の場合が混在している。ただ、オンのときはカーソルが元い
た列を無視して先頭の「方に」移動するのは確か}
'statusline' 'stl' E540 E542
'statusline' 'stl' 文字列 (既定では空)
グローバル/ウィンドウについてローカル global-local
{+statusline 機能付きでコンパイルされたときのみ有効}
値が空でないとき、このオプションはステータス行の表示内容を設定する。
status-line も参照。
値は、普通のテキストに挟まれた関数 printf 形式の項目からなる。項目の形
式は以下の通りである。
%-0{minwid}.{maxwid}{item}
{item} 以外の欄は指定しなくてもよい。パーセント記号そのものを表示する
には "%%" とする。
このオプションの先頭が "%!" である場合は式とみなされ、評価した結果がオ
プションの値となる。例:
に設定される。
この結果が %{} を含んでいると、それも評価される。
Note "%!" 式は現在のウィンドウとバッファのコンテキストで評価され
る。%{} アイテムは対象のウィンドウのコンテキストで評価される。
オプションを評価している間にエラーが発生すると、それ以降のエラーを避け
るためにオプションに空が設定される。そうしないと画面更新がループに陥っ
てしまう。
結果に印刷不可能な文字が含まれる場合、結果は予測できない。
Note このオプションが設定されているとき (さらにオプション 'laststatus'
が 2 であるとき) は、'ruler' にはコマンド CTRL-G の出力を設定する効
果しかないことに注意。
欄 意味
- その項目を左寄せする。minwid が項目の長さより大きい場合は、
既定では右寄せになる。
0 数値の頭に0を表示する。欄 '-' が優先する。
minwid 項目の長さの最小値。余白の穴埋めは '-' と '0' で設定する。
50以下でなければならない。
maxwid 項目の長さの最大値。文字列の項目の切り詰めでは '<' が左に
表示される。数値の項目は maxwid-2 文字に切り詰められ、それ
に ">数" が続く。ここで "数" は表示されなかった文字数であ
り、指数表記に似ている。
item 以下で説明するアルファベット1文字。
以下は、指定可能なステータス行の item の説明である。"item" の2文字目は
その item の種類を表す。
N 数値
S 文字列
F 以下で説明するフラグ
- 実際に表示されるものではない
item 意味
f S バッファ内のファイルのパス(入力された通り、またはカレントディレ
クトリに対する相対パス)
F S バッファ内のファイルのフルパス。
t S バッファ内のファイルのファイル名 (パスを除く)。
m F 修正フラグ。表示されるのは "[+]"。'modifiable' がオフのときは
"[-]"
M F 修正フラグ。表示されるのは ",+" または ",-"。
r F 読み込み専用フラグ。表示されるのは "[RO]"。
{訳注: 日本語メッセージの場合: "[読専]"}
R F 読み込み専用フラグ。表示されるのは ",RO"。
h F ヘルプバッファフラグ。表示されるのは "[help]"。
{訳注: 日本語メッセージの場合: "[ヘルプ]"}
H F ヘルプバッファフラグ。表示されるのは ",HLP"。
w F プレビューウィンドウフラグ。表示されるのは "[Preview]"。
{訳注: 日本語メッセージの場合: "[プレビュー]"}
W F プレビューウィンドウフラグ。表示されるのは ",PRV"。
y F バッファ内のファイルのタイプ。例えば "[vim]"。'filetype' を参照。
Y F バッファ内のファイルのタイプ。例えば ",VIM"。'filetype' を参照。
q S "[Quickfix List]"、"[Location List]" または空文字。
{訳注: 日本語メッセージの場合:
"[Quickfix List]" "[Quickfixリスト]"
"[Location List]" "[Locationリスト]"
}
k S 他言語用マッピング :lmap が使われているとき、変数
"b:keymap_name" または 'keymap' を "<keymap>" と表示する。
n N バッファ番号。
b N カーソル下の文字の文字コードの10進数表現。
B N 同上、ただし16進数表現。
o N カーソル下の文字がファイル内で何バイト目であるか。先頭では1。
覚え方: ファイル先頭からの隔たり (に1を足したもの)
{+byte_offset 機能付きでコンパイルされたときのみ有効}
O N 同上、ただし16進数表現。
N N 印刷時のページ番号 ('printheader' 内でのみ有効)。
l N 何行目にカーソルがあるか。
L N バッファ内の総行数。
c N 何列目にカーソルがあるか。(バイトインデックス)
v N 画面上の何列目にカーソルがあるか。(列番号)
V N 画面上の何列目にカーソルがあるか。表示形式は -{num}。値が 'c' と
等しければ表示されない。
p N 現在行がファイル内の何%の位置にあるか (CTRL-G と同様)
P S 現在表示されているウィンドウ内のテキストが、ファイル内の何%の位
置にあるか。これは 'ruler' で説明されているものに似ている。翻訳
されていない限り、値は常に3文字である {訳注: 日本語版では全角2文
字になりうる}。
S S 'showcmd' の内容、'showcmdloc' を参照。
a S 既定のタイトルと同様の引数ファイルリストを
"({current} of {max})" と表示する。ファイル引数の数が0または1の
ときは空。
{ NF '%{' と '}' の間の expression を評価し、結果に置き換える。
閉じ括弧 '}' の前には '%' がつかないことに注意。expression は
'}' の文字を含むことができないので、これを回避するには関数呼び出
しを使用すること。下記 stl-%{ を参照。
{% - これは expression の結果を statusline フォーマットの文字列として
再評価する以外は { とほぼ同じ。その結果式の戻り値が % の項目
を含む場合はそれが展開される。
expression は } 文字を含むことができ、expression の終了を意味す
るのは %} である。
例:
stl=%{%Stl_filename()%} 結果は "現在のファイル名"
%} - {% expression の終了
( - 項目グループの開始。グループ内の項目全てに対する幅と寄せ方の設定
に使える。どこかで %) で閉じられなければならない。
) - 項目グループの終了。欄 width は指定できない。
T N 'tabline' 用: ラベル「タブページ N」の開始。最後のラベルの後に
%T を書くこと。この情報はマウスクリックに使われる。
X N 'tabline' 用: ラベル「タブ N を閉じる」の開始。ラベルの後に %X
を書くこと。例: %3Xclose%X。%999X は「カレントタブを閉じる」を
意味する。この情報はマウスクリックに使われる。
< - 行が長すぎるときに切り詰める位置。既定では先頭。欄 width は指定
できない。
= - 整列セクション間の分離点。各セクションは同数のスペースで区切られ
る。%= が 1 つあると、その後に続くものが右揃えになる。%= が 2 つ
あると中央部分があり、その左右に空白がある。
欄 width は指定できない。
# - ハイライトグループを設定する。この後に名前を書き、その後にまた #
を書く。つまり、%#HLname# と書くと、ハイライトグループ HLname に
なる。カレントウィンドウ以外のステータスラインに対しても同じ強調
が施される。
* - 使われるハイライトグループを User{N} に設定する。ここで {N} は欄
minwid から取られる。例えば %1* と設定する。%* や %0* で通常の強
調表示を復元する。ハイライトグループ User{N} と StatusLine の違
いは非カレントウィンドウのステータス行にはハイライトグループ
StatusLineNC が適用されることである。数 N は 1 以上 9 以下であ
る。hl-User1..9 を参照。
フラグを表示するとき、そのフラグがプレーンテキストの直後にあるな
ら、その先頭にコンマがある場合は削除される。そうすることによって以下の
例のようなフラグの使い方をしたとき、きれいに表示されるようになっている。
あるグループ内の全ての項目が空文字列 (つまり設定されていないフラグ) に
なり、かつそのグループに minwid が指定されていなかったときは、グループ
全体が空になる。これにより、次のようなグループは、フラグがどれも設定さ
れていないときは全く表示されない。
されるということだ。
stl-%{ g:actual_curbuf g:actual_curwin
%{} を評価する際、あるバッファまたはウィンドウのステータス行が描画され
ている最中は、一時的にそのバッファまたはウィンドウがカレントバッファま
たはカレントウィンドウに設定され、そこで expression が評価される。変数
"g:actual_curbuf" は、本当のカレントバッファで関数 bufnr() が返す値
に設定され、"g:actual_curwin" は実際のカレントウィンドウの window-ID
に設定される。これらの値は文字列である。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'statusline' を評価している間にテキストを変更したり他のウィンドウにジャ
ンプすることは許されていない textlock。
ステータス行が望みの時点 (例えば expression 内で使われる変数の設定をし
た後) で更新されていない場合は、:redrawstatus を使用することで強制的
に更新できる。
全て数字で返された結果は、表示用の数値と見なされる。それ以外の結果はフ
ラグ列と解釈され、上記の方法が適用される。
ステータス行で expression を使うときはエラーに気をつけること。Vimの描
画機構が使い物にならなくなるかもしれない!行き詰まってしまったならば、
プロンプトを表示させるために ':' か 'Q' を打ち込む。そしてVimを終了し
たら "vim --clean" として {訳注: エラーを起こす設定を読み込まないよう
にして} ユーザーのファイル .vimrc か何かを編集し、正常に戻す。
例:
'ruler' がオンのときの標準のステータス行に似せる
赤で表示
る。まず
'suffixes' 'su'
'suffixes' 'su' 文字列 (既定では ".bak,~,.o,.h,.info,.swp,.obj")
グローバル
この拡張子を持つファイルは、ワイルドカードに複数のファイルがマッチした
ときの優先度が低くなる。suffixes を参照。拡張子はコンマで区切って指
定する。コンマの後の空白は無視される。またドットは拡張子の始まりと見な
される。ドットやコンマが区切りと見なされないようにするには、前に '\'
を置くこと。値に空白や '\' を含める方法については、option-backslash
を参照。
ファイルを完全に無視するには、オプション 'wildignore' を参照。
リストに拡張子を追加するときにはコマンド :set+=、リストから拡張子を
除くときには :set-= を使うのがよい。こうすると将来のバージョンで異なっ
た既定値が使われるようになったときに、問題が起きるのを防げる。
'suffixesadd' 'sua'
'suffixesadd' 'sua' 文字列 (既定では "")
バッファについてローカル
値は拡張子のコンマ区切りのリスト。その拡張子は "gf", "[I" 等のコマンド
で検索されるファイルのものである。例:
'swapfile' 'swf' 'noswapfile' 'noswf'
'swapfile' 'swf' 切替 (既定ではオン)
バッファについてローカル
バッファでスワップファイルを使用する。このオプションは、特定のバッファ
でスワップファイルを使いたくないときにはオフに設定できる。例えば root
ユーザーさえもアクセスしてはならない機密情報等でオフにする。
注意: テキストは全てメモリ内に格納される。
- この手段は大きいファイルに使わないこと。
- クラッシュからの回復ができなくなる!
スワップファイルが作られるのはオプション 'updatecount' が非0 で、
'swapfile' がオンのときだけである。
'swapfile' がオフになったときは、カレントバッファのスワップファイルは
すぐに削除される。'swapfile' がオンで、'updatecount' が非0 のときは、
スワップファイルはすぐに作られる。
swap-file と 'swapsync' も参照。
スワップファイルを作成せずに新しいバッファを開きたい場合は
:noswapfile 修飾子を使う。
どこにスワップファイルが作成されるかについては、'directory' を参照。
このオプションは、'bufhidden' と 'buftype' と共に、特別な種類のバッファ
を指定するのに使われる。special-buffers を参照。
'swapsync' 'sws'
'swapsync' 'sws' 文字列 (既定では "fsync")
グローバル
値が空でないときは、書き込みの後にディスク上のスワップファイルの内容が
同期される。これにはいくらか時間がかかる。ビジー状態のUnixシステムでは
特にそうだ。
値が空のときは、スワップファイルの一部はメモリ内のままで、ディスクに書
き込まれないかもしれない。システムがクラッシュすると、仕事の成果が余計
ひどく失われるかもしれない。
Unixでは、Vimが求めなくとも時折システムが同期を行うので、これを空にす
ることの不利益は小さい。システムによってはスワップファイルは全く書き込
まれない。Unixシステムでは、値を "sync" にすると既定の関数 fsync() で
はなく関数 sync() を呼び出すが、システムによってはそちらの方がよい。
実ファイルに対してはオプション 'fsync' が適用される。
'switchbuf' 'swb'
'switchbuf' 'swb' 文字列 (既定では "")
グローバル
バッファを切り替えるときの動作を調節する。
主に quickfix コマンド用で、以下で説明するように一部の値は他のコマン
ドにも使用される。
以下の場合に、このオプションがチェックされる
- quickfix コマンド (:cc、:cn、:cp 等) によるエラーへのジャン
プ。
- stagコマンドを使ってタグにジャンプする。
- CTRL-W_f または CTRL-W_F コマンドを使ってファイルを開く。
- バッファ分割コマンド (:sbuffer, :sbnext, :sbrewind 等) を使っ
てバッファにジャンプする。
指定可能なキーワードは以下の通りである (コンマ区切りのリストにする)。
useopen これが含まれていれば、指定されたバッファを含むカレント
タブページの最初に開いているウィンドウにジャンプする
(もし存在すれば)。そうでなければ、他のウィンドウを調べ
ない。
usetab "useopen" と同様だが、他のタブページで開かれているウィ
ンドウも考慮する。
split これが含まれていると、quickfix コマンドでエラーを表
示するときに、バッファを読み込む前にカレントウィンドウ
を分割する。
含まれていないときは、分割はされない。カレントウィンド
ウが使われる (quickfix ウィンドウで使用されたとき: 前
に使われていたウィンドウ、もしくは他のウィンドウがない
場合は分割する)。
vsplit "split" と同様だが、垂直に分割する。
newtab "split" と同様だが、新しいタブページを開く。"split" と
両方指定された場合はこちらが優先される。
uselast これが含まれていると、quickfix コマンドでエラーにジャ
ンプするときに、前に使われたウィンドウにジャンプする。
ウィンドウで 'winfixbuf' が有効になっている場合、'switchbuf' は現在の
ところ分割ウィンドウには適用されない。
'synmaxcol' 'smc'
'synmaxcol' 'smc' 数値 (既定では 3000)
バッファについてローカル
{+syntax機能付きでコンパイルされたときのみ有効}
構文アイテムを検索する桁数の最大値。長い行において、この桁以降のテキス
トは強調されない。また構文の状態がクリアされるため、これ以下の行は正し
く強調されない可能性がある。
これは長い行を持つXMLファイルの描画が非常に遅くなるのを避けるために役
に立つ。
ゼロにするとその制限がなくなる。
'syntax' 'syn'
'syntax' 'syn' 文字列 (既定では "")
バッファについてローカル local-noglobal
{+syntax 機能付きでコンパイルされたときのみ有効}
このオプションが設定されたとき、コマンド ":syntax off" で構文強調表示
が無効にされていない限り、値の名前の構文定義が読み込まれる。
このオプションは、その時点以外では使われている構文定義を常に反映する訳
ではない (常に反映するのは変数 b:current_syntax)。
このオプションは、構文が自動的に認識されないファイルのモードラインで使
うのが最も便利である。例えば、IDLファイルでは次のようにする。
/* vim: set syntax=idl : */
このオプションの値にドットを含めると、ファイルタイプの区切りとなる。
例:
/* vim: set syntax=c.doxygen : */
こうするとまず最初に "c" の構文を使い、次に "doxygen" の構文を使うよう
になる。2番目のファイルタイプは追加として読み込まれるように準備されて
いなければならない。そうでないとスキップされる。ドットは1つ以上現れて
もよい。カレントファイルに対する構文強調表示を無効にするにはこうする。
このオプションの値を引数にして発生するということだ。
'cpoptions' のフラグ 's' や 'S' にかかわらず、このオプションの値は別の
バッファにはコピーされない。
英数字、'.'、'-'、'_' のみ使用できる。
'tabclose' 'tcl'
'tabclose' 'tcl' 文字列 (既定では "")
グローバル
このオプションは、タブページを閉じるときの動作を制御する (例:
:tabclose を使用)。空の場合、Vim は次 (右) のタブページに移動する。
可能な値 (コンマ区切りのリスト):
left 含まれている場合、次のタブページではなく前のタブページ
に移動する。
uselast 含まれている場合、可能であれば以前に使用したタブページ
に移動する。このオプションは他のオプションよりも優先さ
れる。
'tabline' 'tal'
'tabline' 'tal' 文字列 (既定では "")
グローバル
このオプションが空でないとき、Vimウィンドウの上にあるタブページ行の表
示内容を指定する。空のときは、既定のタブページ行が使われる。より詳しく
はsetting-tablineを参照。
タブページ行はオプション 'showtabline' で指定されたとき、またGUIのタブ
行がないときだけ表示される。'guioptions' に 'e' が入っていて、GUIがタ
ブ行に対応しているときは代わりに 'guitablabel' が使われる。Note: この
二つのタブページ行はかなり異なる。
このオプションの値は 'statusline' と同じように評価される。tabpagenr(),
tabpagewinnr(), tabpagebuflist()を使えば表示されるテキストを把握す
ることができる。1番目のラベルには "%1T"、2番目のラベルには "%2T" など。
閉じラベルにはアイテム "%X" を使う。
'tabline' で使用されているものを変更しても、タブページ行が更新されるト
リガーとならない場合は、:redrawtabline を使用すること。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
アクティブなタブページは1つだけである。他のタブページは表示されず、そ
の中のウィンドウにジャンプすることはできない。
'tabpagemax' 'tpm'
'tabpagemax' 'tpm' 数値 (既定では 10)
グローバル
コマンドライン引数-pや ":tab all" で開かれるタブページの最大数。
tabpage
'tabstop' 'ts'
'tabstop' 'ts' 数値 (既定では 8)
バッファについてローカル
ファイル内の <Tab> が対応する空白の数。コマンド :retab とオプション
'softtabstop' も参照 {訳注: このオプション説明の最後も参照}。
Note: 'tabstop' を 8 以外の数に設定すると、多くの場合、例えば印刷時に
ユーザーのファイルが間違って表示されうるので注意。
値は0より大きく10000未満である必要がある。
Vimでは、タブの主な使い方には以下の5種類がある。
1. 'tabstop' を常に 8 に保ち、'softtabstop' と 'shiftwidth' を 4 (また
は 3 等の好きな値) に設定し、'expandtab' をオフにする。するとVimは
タブと空白の両方を使うが、<Tab> と <BS> を打ち込むと、タブが 4 (ま
たは 3) 文字ごとに現れているかのように表示される。
これは推奨される方法であり、ファイルは他のツールでも、ターミナルで
一覧表示する場合も同じように見える。
2. 'softtabstop' と 'shiftwidth' を任意に設定し、'expandtab' を使用す
る。この方法では、常にスペースを挿入することになる。'tabstop' を変
更しても書式が崩れることはない (念のため 8 のままにしておく)。ファ
イルは少し大きくなる。
ファイル内にタブが存在しないかどうかを確認する必要がある。最初に
'expandtab' を設定し、%retab! を使用して、'tabstop' の値が正しく
設定されていることを確認することで、これらを取り除くことができる。
3. 'tabstop' と 'shiftwidth' を好きなように設定し、'expandtab' をオン
にする。この方法では常に空白が挿入される。'tabstop' が変更されても、
整形されたテキストはめちゃめちゃにならない。
直前の項目と同様に、ファイル内にタブが存在しないかどうかを確認する
必要がある。
4. 'tabstop' と 'shiftwidth' を好きなように設定し、再びファイルを編集
するときにはモードライン modeline でこれらを設定する。Vim を使用
してファイルを編集する場合にのみ機能し、他のツールは、タブストップ
が 8 スペースに相当すると仮定している。
5. 常に 'tabstop' と 'shiftwidth' を等しく設定し、'expandtab' をオフに
する。すると (1回目のインデントのみだが) どのタブ幅でもうまく働く。
こうするにしても、余白より後の最初の文字より後にタブ文字を挿入する
ときは、空白文字として挿入されるようにするとよいだろう。そうしない
と、'tabstop' が変更されたときに、整形されたコメントの形がおかしく
なる。
{訳注: 'shiftwidth' は自動インデントやコマンド "<<", ">>" でずれる幅。
'softtabstop' は <Tab> や <BS> を打ち込んだときにカーソルが動く幅。
'tabstop' は画面上でタブ文字が占める幅の設定}
Vim が +vartabs 機能付きでコンパイルされている場合、'vartabstop'
が空文字列以外の何かに設定されていると 'tabstop' の値は無視される。
'tagbsearch' 'tbs' 'notagbsearch' 'notbs'
'tagbsearch' 'tbs' 切替 (既定ではオン)
グローバル
タグを検索するとき (例えば :ta コマンド)、Vim は tags ファイル内で二
分探索か線形探索のどちらかを使用する。二分探索はタグの検索が「大幅に」
速くなるが、タグファイルが適切に整列されていないときには線形探索の方が
より多くのタグを発見できる。
Vim は普通はタグファイルが整列されているか、整列されていないことが明示
されているものと想定している。そうなっていない場合は 'tagbsearch' オプ
ションをオフに設定する必要がある。
'tagbsearch' がオンのときは、最初に tags ファイル内で二分探索が使われ
る。特定の状況下では、Vim は特定のファイルに対しては線形探索を使った
り、全てのファイルを線形探索で再試行したりする。'tagbsearch' がオフの
ときは線形探索のみが使われる。
タグファイルの先頭に、それが整列されていないことを示す行があったとき
は、そのファイルでは線形探索が使われる。
二分探索が完了し、'tags' で列挙されたどのファイルからもマッチが見つか
らなかった場合、かつ大文字小文字が無視される場合、もしくはその検索がタ
グ名による検索ではなくパターンによる検索であれば、線形探索を使って検索
が再試行される。
整列されていないタグファイル内のタグや、大文字と小文字の違いのあるマッ
チは、再試行でのみ見つかるだろう。
タグファイルが大文字・小文字を無視して整列されていることを示しているな
ら、'ignorecase' のための線形探索はしなくてもよくなる。それには
"!_TAG_FILE_SORTED" 行の値として '2' を使う。ほとんどの Unix では
"sort" にオプション -f をつけることで大文字・小文字を無視してタグファ
イルを整列することができる。そのコマンドは次のようになる: "sort -f -o
tags tags"。Universal ctags と Exuberant ctags のバージョン 5.x 以降
(少なくとも 5.5 以降) ではオプション --sort=foldcase をつけることでこ
れと同様のことができる。Note: これが機能するために文字は大文字にまとめ
られる。
デフォルトではタグ検索は大文字小文字を区別する。'ignorecase' が設定済
みで 'tagcase' が "followic" もしくは "ignore" に設定されている時は、
大文字小文字の違いが無視される。
'tagcase' が "followscs" で 'smartcase' が設定されている時、もしくは
'tagcase' が "smart" でパターンが小文字でのみ構成されている場合も、同
様に大文字小文字の違いが無視される。
'tagbsearch' がオフの場合、完全なマッチがあるときはタグの検索はより遅
くなるが、完全なマッチがないときは検索はより速くなる。整列されていない
タグファイル内のタグは 'tagbsearch' がオフでないと見つからないかもしれ
ない。
タグファイルが整列されていない、あるいは間違った順に整列されている
(ASCII コード順になっていない) ときは、'tagbsearch' をオフにするべきで
ある。またはタグファイル内に上記の行が含まれていなければならない。
このオプションは、マッチするすべてのタグを検索するようなコマンド (例え
ばコマンドライン補完や ":help") には影響しない。
'tagcase' 'tc'
'tagcase' 'tc' 文字列 (既定では "followic")
グローバル/バッファについてローカル global-local
このオプションはタグファイルを探索する際に大文字小文字をどの様に取り扱
うかを指定する:
followic オプション 'ignorecase' に従う
followscs 'smartcase' 及び 'ignorecase' オプションに従う
ignore 大文字小文字の違いを無視する
match 大文字小文字をマッチする
smart 大文字を使わない限りは、大文字小文字の違いを無視する
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'tagfunc' 'tfu'
'tagfunc' 'tfu' 文字列 (既定では "")
バッファについてローカル
{+eval 機能付きでコンパイルされたときのみ有効}
このオプションは、タグ検索を実行するために使用される関数を指定する。こ
の関数はタグパターンを取得し、一致するタグのリストを返さなければならな
い。tag-function を参照。関数の書き方と例の説明がある。値として関数
名、lambda、Funcref が使える。詳細は option-value-function を参
照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'taglength' 'tl'
'taglength' 'tl' 数値 (既定では 0)
グローバル
非0 のときは、タグ名のうち、前からこの値の文字数までが意味を持つ。
'tagrelative' 'tr' 'notagrelative' 'notr'
'tagrelative' 'tr' 切替 (Vimの既定値: オン、Viの既定値: オフ)
グローバル
オンのとき、タグファイルを別のディレクトリから使うと、そのタグファイル
でのタグ名は、タグファイルのあるディレクトリに対して相対的になる。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'tags' 'tag' E433
'tags' 'tag' 文字列 (既定では "./tags,tags",
+emacs_tags 機能付きでコンパイルされたとき
の既定値: "./tags,./TAGS,tags,TAGS")
グローバル/バッファについてローカル global-local
タグを使うコマンドで必要とするタグファイルの名前の、空白またはコンマ区
切りのリスト。ファイル名に空白やコンマを使うときは、'\' を前に置くこと
(値に空白/コンマや '\' を含める方法については、option-backslash を
参照)。
ファイル名が "./" で始まるときは、'.' はカレントファイルのパスに置き換
えられる。ただしそれはオプション 'cpoptions' にフラグ 'd' が含まれてい
ないときのみである。環境変数は展開される :set_env。tags-option も
参照。
"*" や "**" などのワイルドカードを使い、ディレクトリツリーの下に向かっ
てタグファイルを検索できる。file-searching を参照。例えば、
"/lib/**/tags" なら "/lib" 以下の "tags" という名前がすべて検索され
る。ファイル名自体にはワイルドカードを含めることはできない (そのまま使
われる)。例えば "/lib/**/tags?" なら "tags?" という名前のファイルが検
索される。
関数tagfiles()を使うと実際に使われるファイル名のリストを取得すること
ができる。
Vimが +emacs_tags 機能付きでコンパイルされたときは、Emacs形式のタグ
ファイルも利用できる。形式は自動的に認識される。そのときの既定値は、大
文字と小文字の区別がないシステム (MS-Windows) 以外では
"./tags,./TAGS,tags,TAGS" となる。emacs-tags
リストにファイル名を追加するときにはコマンド :set+=、リストからファ
イル名を除くときにはコマンド :set-= を使うのがよい。こうすると将来の
バージョンで異なった既定値が使われるようになったときに、問題が起きるの
を防げる。
'tagstack' 'tgst' 'notagstack' 'notgst'
'tagstack' 'tgst' 切替 (既定ではオン)
グローバル
オンのときは、タグスタック tagstack が通常通りに使われる。オフのとき
は、引数付きのコマンド ":tag" または ":tselect" は、タグをタグスタック
にプッシュしない。その後に引数無しの ":tag" や、":pop" 等のタグスタッ
クを使うコマンドを使うと、修正されていないタグスタックが使われるが、ア
クティブな項目へのポインタは変更される。
このオプションをオンにするのは、":tag" をマッピング内で使っていて、タ
グスタックを変更すべきでないときに便利である。
'tcldll'
'tcldll' 文字列 (既定値はビルドに依存)
グローバル
{+tcl/dyn 機能付きでコンパイルされたときのみ有効}
Tcl 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_TCL_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'term' E529 E530 E531
'term' 文字列 (既定では $TERM、それが失敗したら
GUI版では: "builtin_gui"
Amigaでは: "amiga"
Haikuでは: "xterm"
Macでは: "mac-ansi"
Unixでは: "ansi"
VMSでは: "ansi"
Win32では: "win32")
グローバル
ターミナルの名前。ターミナル制御文字の選択に使われる。環境変数は展開さ
れる :set_env。
例:
'termbidi' 'tbidi'
'notermbidi' 'notbidi'
'termbidi' 'tbidi' 切替 (既定ではオフ、"mlterm" のときはオン)
グローバル
{+arabic 機能付きでコンパイルされたときのみ有効}
端末がテキストの双方向性 (Bi-directionality) (Unicode による定義) をサ
ポートしていることを示す。端末はいくつかの言語 (例えばアラビア語) で必
要とされている変形文字 (shaping) も処理することが期待される。
このオプションをオンなっている場合、'arabic' をオンに設定しても
'rightleft' はオンにならず、そして 'arabicshape' の値は無視される。
Note: 'termbidi' を設定するとすぐに 'arabicshape' が無視されるようにな
るが、'rightleft' は自動的には変更されない。
このオプションは GUI を開始するとリセットされる。
詳細は arabic.txt を参照のこと。
'termencoding' 'tenc'
'termencoding' 'tenc' 文字列 (既定では ""; GTK+ GUI では "utf-8")
グローバル
ターミナルで使われるエンコーディング名。このオプションは、どの文字エン
コーディングをキーボードが生成し、どの文字エンコーディングをディスプレ
イが理解できるかを指定する。GUI版ではキーボードにのみ適用される (ディ
スプレイにはオプション 'encoding' が使われる)。
E617 E950
Note: これはGTK+ GUIには適用されない。GUIの初期化に成功した後で強制的
に 'termencoding' が "utf-8" に設定される。
これを他の値に設定しようとしても失敗し、エラーメッセージが表示される。
Win32 GUIとコンソールでは 'termencoding' は使用されない。Win32では常に
Unicode文字が渡されるからである。
空のときは、'encoding' で指定されたエンコーディングが使われる。これが
通常の値である。
'termencoding' と 'encoding' の組み合わせが全て正しいわけではない。
encoding-table を参照。
このオプションの値は、内部変換または関数 iconv() でサポートされていな
ければならない。iconv() が値を扱えないときは、変換はなされず、非ASCII
文字で問題が生じるだろう。
例: ユーザーは euc-jp (日本語) に設定されたロケールで作業していて、
UTF-8 のファイルを編集したいとする。
がこのように設定する必要がある。
'termguicolors' 'tgc' 'notermguicolors' 'notgc' E954
'termguicolors' 'tgc' 切替 (既定ではオフ)
グローバル
{+termguicolors 機能付きでコンパイルされたときのみ有
効}
オンのとき、highlight-guifg と highlight-guibg がターミナル内で使
われる(24ビットカラー)。
ISO-8613-3 互換なターミナルが必要。このオプションを設定しても機能しな
い (色が UI に付かない) 場合は、xterm-true-color を読むと助けになる
かもしれない。
Win32 のコンソールでは、Windows 10 version 1703 (Creators Update) より
も新しいバージョンが必要である。以下のように確認する:
Note "cterm" の特徴はまだ使われているが、"gui" はそうではないことに注
意。
Vim を Windows Terminal で使用する場合、通常、Windows Terminal の背景
は Vim の背景色で塗りつぶされる。'termguicolors' を設定し、Normal ハイ
ライトグループの guibg を NONE に設定すると、背景が透明になる:
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'termwinkey' 'twk'
'termwinkey' 'twk' 文字列 (既定では "")
ウィンドウについてローカル
ターミナルウィンドウ内で CTRL-W コマンドを開始するキー。他のキーはウィ
ンドウ内で動作しているジョブに送られる。
キーは、単一文字、key-notation (例: <Up>、<C-F>)、またはキャレットで
始まる文字 (例: ^F は CTRL-F) で指定できる:
も良い。
未設定の場合は CTRL-W が使用されるため、CTRL-W : でコマンドラインに移
動する。'termwinkey' が CTRL-L に設定されている場合は、CTRL-L : でコマ
ンドラインに移動する。
'termwinscroll' 'twsl'
'termwinscroll' 'twsl' 数値 (既定では 10000)
バッファについてローカル
{+terminal 機能なしでコンパイルされた場合は無効}
保持されるスクロールバック行の数。この制限を超えた場合、最初の 10% の
スクロールバック行が削除される。これはメモリの使用を削減するためだけの
ものである。Terminal-Normal を参照。
また、1回の書き込みで端末に送信されるテキストの制限としても使え、列数
* 3(1表示幅あたりの平均バイト数)になる。
'termwinsize' 'tws'
'termwinsize' 'tws' 文字列 (既定では "")
ウィンドウについてローカル
terminal ウィンドウが開かれるときに利用するサイズ。書式:
{rows}x{columns} もしくは {rows}*{columns}
- 空の場合、ターミナルはウィンドウからサイズを取得する。
- "x" で設定されている場合 (例えば "24x80")、ターミナルのサイズはウィ
ンドウサイズに調節されない。ウィンドウがそれより小さい場合、左上の部
分のみ表示される。
- "*" で設定されている場合 (例えば "10*50")、ターミナルのサイズはウィ
ンドウサイズに従うが、指定された行および/もしくは列よりは小さくなら
ない。
- 行がゼロなら、ウィンドウの高さを使う。
- 列がゼロなら、ウィンドウの幅を使う。
- "0x0" もしくは "0*0" の場合、空の場合と同じになる。
- term_start() 内のオプション "term_rows" と "term_cols" によって無
視される。
例:
"30x0" は 30 行と、現在のウィンドウの幅を使用する。
"20*0" は少なくとも 20 行と、現在のウィンドウの幅を使用する。
"0*40" は現在のウィンドウの高さと、少なくとも 40 列を使用する。
Note ターミナルウィンドウ中で動作しているコマンドはターミナルのサイズ
を黙って変更するかもしれない。この場合、Vim のウィンドウは可能ならばそ
のサイズに調節される。
'termwintype' 'twt'
'termwintype' 'twt' 文字列 (既定では "")
グローバル
{Vim が MS-Windows 上で terminal 機能付きでコンパイ
ルされたときのみ有効}
端末ウィンドウを開くときに使われる仮想コンソール(pty)を指定する。
設定可能な値:
"" ConPTY が安定していればそれを使う。それ以外は winpty
が使われる。
"winpty" winpty を使う。サポートされていない場合は失敗する
"conpty" ConPTY を使う。サポートされていない場合は失敗する
ConPTY のサポートはプラットフォーム次第である。Windows 10 October
2018 Update は、ConPTYをサポートする最初のバージョンだが、それでもまだ
不安定と考えられている。Windows 10 の次のリリースでは、ConPTY が安定す
る可能性がある。winpty のサポートはインストールする必要がある。どちら
もサポートされていない場合は、端末ウィンドウを開くことはできない。
'terse' 'noterse'
'terse' 切替 (既定ではオフ)
グローバル
オンのときは、オプション 'shortmess' にフラグ 's' を追加する (こうする
とファイルの端まで検索してしまったときのメッセージが表示されなくなる)。
オフのときは、オプション 'shortmess' からフラグ 's' を取り除く。
'textauto' 'ta' 'notextauto' 'nota'
'textauto' 'ta' 切替 (Vimの既定値: オン、Viの既定値: オフ)
グローバル
このオプションは時代遅れである。オプション 'fileformats' を使うこと。
後方互換性のため、'textauto' がオンのときは、'fileformats' はシステム
の既定値に設定される。'textauto' がオフになったときは、'fileformats'
は空になる。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'textmode' 'tx' 'notextmode' 'notx'
'textmode' 'tx' 切替 (Win32では: 既定ではオン、
他のシステムでは: 既定ではオフ)
バッファについてローカル
このオプションは時代遅れである。オプション 'fileformat' を使うこと。
後方互換性のため、'textmode' がオンのときは、'fileformats' は "dos" に
なる。'textmode' がオフのときは、'fileformats' は "unix" になる。
'textwidth' 'tw'
'textwidth' 'tw' 数値 (既定では 0)
バッファについてローカル
入力されているテキストの最大幅。行がそれより長くなると、この幅を超えな
いように空白の後で改行される。値を 0 に設定すると無効になる。
'textwidth' は、'paste' オプションがオンになった時には0が設定され、
'paste' オプションがリセットされた際には復元される。
オプション 'textwidth' が 0 のときは、'wrapmargin' が使われる場合があ
る。'formatoptions' と ins-textwidth を参照。
'formatexpr' が設定されている場合、その値を使って改行される。
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
'thesaurus' 'tsr'
'thesaurus' 'tsr' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
同義語補完コマンド i_CTRL-X_CTRL-T で単語の検索に使われるファイルの
名前の、コンマ区切りのリスト。compl-thesaurus を参照。
'thesaurusfunc' がバッファまたはグローバルで設定されている場合、このオ
プションは使用されない。
ファイル名にコンマを含めるときは、その前に '\' を置くこと。コンマの後
の空白は無視されるが、それ以外では空白はそのままファイル名に含まれる。
値に空白や '\' を含める方法については、option-backslash を参照。リス
トにディレクトリを追加または削除する場合は :set+= および :set-= を
使うのがよい。こうすると将来のバージョンで異なった既定値が使われるよう
になったときに、問題が起きるのを防げる。セキュリティ上の理由から、バッ
ククォート (`) をこのオプションの値に使うことはできない。
'thesaurusfunc' 'tsrfu'
'thesaurusfunc' 'tsrfu' 文字列 (既定では空)
グローバル/バッファについてローカル global-local
{+eval 機能付きでコンパイルされたときのみ有効}
このオプションは CTRL-X CTRL-T での同義語補完で利用する関数を指定する。
i_CTRL-X_CTRL-T compl-thesaurusfunc を参照。
値として関数名、lambda、Funcref が使える。詳細は
option-value-function を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'tildeop' 'top' 'notildeop' 'notop'
'tildeop' 'top' 切替 (既定ではオフ)
グローバル
オンのとき、チルダコマンド "~" が operator のように使用できる。
{訳注: 普通チルダは、打ち込まれた時点でカーソル下のアルファベットの大
文字/小文字を変換するが、このオプションがオンのときは、"d" 等のように
範囲を指定されるまで変換しない。このオプションがオフでも、"g~{motion}"
なら範囲を指定できる。case を参照}
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'timeout' 'to' 'notimeout' 'noto'
'timeout' 'to' 切替 (既定ではオン)
グローバル
'ttimeout' 'nottimeout'
'ttimeout' 切替 (既定ではオフ、defaults.vim 内でオンに設定さ
れる)
グローバル
これら2個のオプションは共に、Vimがマッピングされたキー列やキーコードの
一部を受け取ったときの動作を決定する。
'timeout' 'ttimeout' 動作
オフ オフ タイムアウト (時間切れ) を設けない
オン オンまたはオフ マッピングとキーコードにタイムアウトあり
オフ オン キーコードにタイムアウトあり
両方オフのときは、完全なマッピングやキー列を受け取るか、受け取った文字
列に対応するマッピングやキー列はないと明らかになるまで、Vimは待つ。例
えば "vl" をマッピングして 'v' を入力したとき、'v' の次に 'l' が来るか
どうか判断するには次の文字が入力されることが必要である。
どちらかがオンのとき、Vimは次の文字が入力されるまで約1秒待つ。その後入
力された文字をそれぞれ単一の文字として解釈する。待ち時間はオプション
'timeoutlen' で設定できる。
遅いターミナルや非常にビジーなシステムでは、時間切れを設けるとカーソル
キーの動作がおかしくなることがある。両方オフのときは、<Esc> で始まるキー
コードがあるとVimは <Esc> が入力された後ずっと待ち状態になる。ユーザー
は <Esc> を2回打ち込まなければならない。キーコードに問題はないが、マッ
ピングされたキー列を1秒でタイムアウトにされたくなければ、'ttimeout' を
オン、'timeout' をオフにすること。
NOTE: 'ttimeout' は、'compatible' がオンになるとオフになるので注意。
'timeoutlen' 'tm'
'timeoutlen' 'tm' 数値 (既定では 1000)
グローバル
'ttimeoutlen' 'ttm'
'ttimeoutlen' 'ttm' 数値 (既定では -1、defaults.vim 内で100に設定され
る)
グローバル
キーコードやマッピングされたキー列が完了するのを待つ時間 (ミリ秒単位)。
すでにコマンドの一部がタイプされているとき、CTRL-\ CTRL-NとCTRL-\
CTRL-Gにも適用される。
普通、オプション 'timeoutlen' のみが使われ、'ttimeoutlen' は -1 に設定
される。キーコードに対して異なった待ち時間を設定したいときは、
'ttimeoutlen' を非負の値に設定すること。
ttimeoutlen マッピング待ち キーコード待ち
負 'timeoutlen' 'timeoutlen'
0以上 'timeoutlen' 'ttimeoutlen'
タイムアウト (時間切れ) になるのは、'timeout' と 'ttimeout' でそう設定
されているときのみである。便利な設定は次の通り。
'title' 'notitle'
'title' 切替 (既定ではオフ、
タイトルが復元できるときにはオン)
グローバル
オンのとき、ウィンドウのタイトルがオプション 'titlestring' の値 (空で
なければ) になる。空の場合は次のようになる。
filename [+=-] (path) - VIM
ここでの意味は以下の通り。
filename 編集されているファイルの名前
- ファイルが変更できない、つまり 'ma' がオフであ
ることを表す
+ ファイルが変更を受けたことを表す
= ファイルが読み込み専用であることを表す
=+ ファイルが読み込み専用であるが変更を受けたこと
を表す
(path) 編集されているファイルのパス
- VIM サーバー名、変数 v:servername の値または "VIM"
ターミナルがウィンドウタイトルを設定できるもののときのみ有効である
(現在のところAmigaとWin32のコンソール版、全てのGUI版と 't_ts' が空でな
いターミナルのみ --- これらは既定では Unix xterm と iris-ansi であり、
このときターミナルオプション 't_ts' は組み込み termcap から取られる)。
X11
Vimが HAVE_X11 が定義された状態でコンパイルされた場合は、可能ならば元
のタイトルが復元される。HAVE_X11 が定義されていたら、コマンド
":version" の出力には "+X11" が含まれ、定義されていなかったら "-X11"
が含まれる。これはアイコン名 'icon' にも働く。
しかしVimが引数 -X 付きで起動した場合は、タイトルは復元されない (GUI
版を除く)。
タイトルを復元できないときは、'titleold' がタイトルになる。その場合は
Vimの外でタイトルを復元したいと思うかもしれない。ネットワーク越しに
xterm を使っているときは、次のコマンドが使える。
すると環境変数 $WINDOWID の値が受け継がれ、ウィンドウのタイトルは、Vim
の終了後に戻るべき状態に戻る。
'titlelen'
'titlelen' 数値 (既定では 85)
グローバル
ウィンドウタイトルが占める列の割合 (パーセント単位)。タイトルがこれよ
り長かったときは、パス名の後ろの部分のみが表示される。この切り詰めを示
すためには、パス名の前に文字 '<' が表示される。
割合で指定しているため、タイトルが占める長さはウィンドウの幅に従って調
整できる。しかし完全にその通りになる訳ではない。それは実際に利用できる
文字数は、使われているフォントやタイトルバー内の他のものによっても変わ
るからだ。値が 0 のときは、フルパスが使われる。フルパスを使わないとき
は 1 以上 30000 以下の数を指定する。
このオプションはオプション 'titlestring' にも使われる。
'titleold'
'titleold' 文字列 (既定では "Vim を使ってくれてありがとう")
グローバル
このオプションの値は、Vimの終了時に元のウィンドウタイトルが復元できな
い場合のタイトルに使われる。オプション 'title' がオンであるか
'titlestring' が空でないときのみ有効である。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'titlestring'
'titlestring' 文字列 (既定では "")
グローバル
空でないとき、ウィンドウタイトルに使われる。オプション 'title' がオン
のときのみ有効である。
ターミナルがウィンドウタイトルを設定できるもののときのみ有効である (現
在のところAmigaとWin32のコンソール版、全てのGUI版とターミナルオプショ
ン 't_IS' が空でないターミナルのみ)。
Vimが HAVE_X11 が定義された状態でコンパイルされた場合は、可能ならば元
のタイトルが復元される X11。
値に関数 printf 形式の '%' による書式指定が含まれているときは、
'statusline' と同じ方法で展開される。無効な '%' 形式が含まれている場
合、値はそのまま使用され、値が設定される時にエラーや警告は表示されな
い。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
例:
使われる。
ファイル名を最初に表示したい人は、こう設定する。
ていることに注意。"%( %)" は、区切りの空白を必要なときだけ加えるために
使われている。
NOTE: 'titlestring' に特殊な文字 (例えば文字 <CR> や文字 <NL>) を使う
と、表示がおかしくなることがあるので注意。
{+statusline 機能付きでコンパイルされたときのみ有効}
'toolbar' 'tb'
'toolbar' 'tb' 文字列 (既定では "icons,tooltips")
グローバル
{Vimの +GUI_GTK版, +GUI_Motif版, +GUI_Photon版の
み}
ツールバーの様々な設定を行う。指定可能な値は以下の通り。
icons ツールバーのボタンにアイコンが表示される。
text ツールバーのボタンに名前が表示される。
horiz ツールバーのボタンのアイコンとテキストが水平に
配置される。{GTK+ 2 GUIでのみ利用可能}
tooltips ツールバーのボタンでツールチップが表示される。
ツールチップとは、マウスカーソルがツールバーのボタン上にしばらく置かれ
たときに飛び出す、ヘルプテキストのことである。
ツールバーにアイコンと名前を両方表示したいときは、このように設定する。
示される。
オプション 'toolbar' が空であるか、適切な値が一つもないときは、このオ
プションは無視される。ツールバーを無効にしたいときは、'guioptions' を
設定する必要がある。例:
'toolbariconsize' 'tbis'
'toolbariconsize' 'tbis' 文字列 (既定では "small")
グローバル
{GTK+ GUI版でのみ利用可能}
ツールバーのアイコンのサイズを制御する。設定可能な値は次の通り:
tiny 最も小さいアイコンを使用する。
small 小さいアイコンを使用する(既定値)。
medium 中程度のアイコンを使用する。
large 大きいアイコンを使用する。
huge さらに大きいアイコンを使用する。
giant 非常に大きいアイコンを使用する。
各種アイコンサイズのピクセル単位での正確な大きさは、使用しているテーマ
に依存する。共通の大きさはgiant=48x48、huge=32x32、large=24x24、
medium=24x24、small=20x20、tiny=16x16である。
'toolbariconsize' が空のときは、ユーザーの設定または現在使用しているテー
マによって決定されるグローバルなデフォルトサイズが使用される。
'ttybuiltin' 'tbi' 'nottybuiltin' 'notbi'
'ttybuiltin' 'tbi' 切替 (既定ではオン)
グローバル
オンのときは、外部の termcap の前に組み込みの termcap を探す。
オフのときは、外部の termcap の後に組み込みの termcap を探す。
このオプションが変更されたときは、変更を有効にするため、次にオプション
'term' を設定する必要がある。例:
関連情報: このオプションは既定ではオンである。それは普通、組み込み
termcap のエントリの方が良いものだからだ (多くのシステムでおかしな
xterm エントリが含まれている...)。
'ttyfast' 'tf' 'nottyfast' 'notf'
'ttyfast' 'tf' 切替 (既定ではオン)
グローバル
高速ターミナル接続を行う。再描画のとき、行挿入/削除コマンドを使う代わ
りに、より多くの文字が画面に送られる。複数のウィンドウが開かれており、
なおかつターミナルが部分スクロールをサポートしていないとき、再描画が滑
らかになる。
また折り返された行のそれぞれの行末で、文字の extra writing {訳注: 端末
に行の折り返しを認識させ、複数行にまたがった文字列をコピーする際、余分
な改行が含まれてしまうことを防ぐテクニック} を有効にする。これは xterm
等のターミナルで、マウスを使ってコピーやペーストをするときに役立つ。
{訳注: "tty" とは、昔のコンピュータに使われていたテレタイプ (TeleTYpe)
端末 (コンソールみたいなもの) から来た言葉である}
以前は一部の端末名にのみデフォルトが設定されていたが、最近ではほぼすべ
ての端末が高速になったため、デフォルトが "on" になった。接続が遅い場合
は、このオプションを off に設定するとよい。例えば、ホスト名に応じて次
のようになる:
'ttymouse' 'ttym'
'ttymouse' 'ttym' 文字列 (既定値は 'term' によって異なる)
グローバル
{VimのUnix版とVMS版でのみ使用可能で、GUI版では無効。
Vimが +mouse 機能付きでコンパイルされたときのみ有効}
マウスコードが、このオプションで指定したターミナル名に従って認識される。
現在のところ、以下のターミナル名を設定できる。
xterm-mouse
xterm xterm 風にマウスを扱う。マウスが生成するコードは
"<Esc>[Mscr" である。ここで "scr" は次のような3バイト
のコードである。
"s" = ボタンの状態
"c" = 桁数足す 33
"r" = 行数足す 33
これは223桁までしか機能しないことに注意。解決策につい
ては "dec"、"urxvt"、"sgr" を参照。
xterm2 "xterm" と動作が似ているが、ドラッグ中もマウス位置を返
すような xterm に対して働く。こちらの方がずっと動作が
速く、正確である。これを使うには、ユーザーの xterm が
最低でもパッチレベルが 88 で XFree 3.3.3 に対応してい
なければならない。Vimがこれを自動認識する方法について
は、以下を参照。
netterm-mouse
netterm NetTerm 風にマウスを扱う。マウスの左クリックが生成する
コードは"<Esc>}r,c<CR>" である。ここで "r,c" は、それ
ぞれ行数と桁数を表す10進数である。他のマウスイベントは
サポートされていない。
dec-mouse
dec DEC terminal 風にマウスを扱う。マウスが生成するのは、
"<Esc>[" で始まるかなり複雑なコードである。
Xtermが "--enable-dec-locator" つきでconfigureされてい
るならば、Xtermでもこれを利用できる。
jsbterm-mouse
jsbterm JSB term 風にマウスを扱う。
pterm-mouse
pterm QNX pterm 風にマウスを扱う。
urxvt-mouse
urxvt urxvt (rxvt-unicode) 風にマウスを扱う。
端末がこのエンコードスタイルをサポートしているときのみ
機能する。"xterm" や "xterm2" のような 223 桁の制限は
ない。
sgr-mouse
sgr SGR スタイルのマウスレポートを発行するターミナル用に
マウスを扱う。xterm のバージョン 277 かそれ以降で動作
する。マウスは 223 桁を超えても機能する。このオプショ
ンは "xterm2" と後方互換性がある。このスタイルでは
"xterm2" スタイルのマウスコードもデコードできる。
マウスを使用するには、コンパイル時に +mouse_xterm +mouse_dec
+mouse_netterm +mouse_jsbterm +mouse_urxvt +mouse_sgr 等のどれ
かの機能を有効にしておかなければならない。
本当に認識されるのは "xterm"(2) のみである。NetTerm のマウスコードは、
コンパイル時に有効にされていれば必ず認識される。DEC terminal のマウス
コードは、コンパイル時に有効にされ、かつオプション 'ttymouse' が
"xterm"、"xterm2"、"urxvt"、"sgr" でないときのみ認識される (dec マウス
コードはそれらのコードと競合するため)。
このオプションが自動的に "xterm" に設定されるのは、'term' が "xterm"、
"mlterm"、"screen"、"tmux"、"st" (完全一致のみ)、"st-"、"stterm" のい
ずれかで始まり、'ttymouse' がまだ設定されていないときである。
terminfo/termcap エントリ "XM" が存在し、最初の番号が "1006" の場合、
'ttymouse' は "sgr" に設定される。これは多くの最新の端末で機能する。
加えて、Vim が +termresponse 機能付きでコンパイルされていて、t_RV
に xterm のバージョン番号を要求するためのエスケープシーケンスが設定さ
れているときは、さらに高度な判定が行われる。
xterm バージョンが 95 以上、276 以下であると報告されたときは "xterm2"
に設定される。Vim が Mac Terminal.app, iTerm2 もしくは mintty を検出し
たときと、xterm バージョンが 277 以上のときは "sgr" に設定される。
'ttymouse' を "xterm2" や "sgr" に自動的に設定したくないときは、次のよ
うに t_RV を空に設定する。
'ttyscroll' 'tsl'
'ttyscroll' 'tsl' 数値 (既定では 999)
グローバル
画面をスクロールする行数の最大値。この行数以上スクロールするときは、ウィ
ンドウが再描画される。スクロールがとても遅いが再描画は遅くないようなター
ミナルでは、表示を高速化するため、このオプションを 3 等の小さい数にす
るとよい。
'ttytype' 'tty'
'ttytype' 'tty' 文字列 (既定値は $TERM によって決まる)
グローバル
上記のオプション 'term' の別名。
'undodir' 'udir'
'undodir' 'udir' 文字列 (既定値は ".")
グローバル
{+persistent_undo 機能付きでコンパイルされたときのみ
有効}
アンドゥファイル用のディレクトリをコンマ区切りのリストで指定する。
書式についての詳細は 'backupdir' を参照。
"." はファイルのディレクトリを意味する。アンドゥファイルの名前は例えば
"file.txt" なら ".file.txt.un~" になる。
別ディレクトリに保存される場合は、アンドゥファイルの名前は対象のファイ
ルの絶対パスのパス区切り文字を "%" で置換した名前になる。
保存するとき: 最初に見つかった、存在するディレクトリが使われる。"." は
常に有効なので "." 以降に指定されたディレクトリは使用されない。読み込
むとき: アンドゥファイルを探すためにすべてのエントリが試行される。最初
に見つかったファイルが使用される。見つかったファイルが読めなかったりエ
ラーが発生したりしても、それ以降のエントリは使用されない。
undo-persistence 参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'undofile' 'noundofile' 'udf' 'noudf'
'undofile' 'udf' 切替 (既定ではオフ)
バッファについてローカル
{+persistent_undo 機能付きでコンパイルされたときのみ
有効}
オンにすると、バッファをファイルに保存したときにアンドゥ履歴がアンドゥ
ファイルに自動的に保存され、そして、後でそのファイルを開いたときにアン
ドゥファイルからアンドゥ履歴が復元される。
アンドゥファイルが保存されるディレクトリは 'undodir' で設定する。
この機能の詳細は undo-persistence を参照のこと。
'undoreload' の処理の過程でファイルが読み込まれるときはアンドゥファイ
ルは読み込まれない。
'undofile' がオフに設定されたときアンドゥファイルは削除「されない」。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'undolevels' 'ul'
'undolevels' 'ul' 数値 (既定では 100、
Unix, VMS, Win32での既定値は 1000)
グローバル/バッファについてローカル global-local
アンドゥ可能な変更の最大値。アンドゥをするための情報はメモリに蓄えられ
るため、大きい数を設定するとメモリの消費量も多くなる。にもかかわらず、
1回の変更ですでに大量のメモリを使用する可能性がある。
Vi互換にするには、次のように 0 にすること。アンドゥは 1 回だけ可能で、
もう 1 回 "u" を使うとアンドゥがアンドゥ {訳注: リドゥ} される。
もよい。こうするとコマンド CTRL-R でリドゥできる。
undo-two-ways も参照。
アンドゥを無効にするには、-1 にすること。現在のバッファに対してだけ
無効にするには次のようにする。
グローバルな値が使われる場合、ローカルな値が -123456 に設定される。
clear-undo も参照。
'undoreload' 'ur'
'undoreload' 'ur' 数値 (既定は 10000)
グローバル
リロードするときにアンドゥのためにバッファ全体を保存する。これは ":e!"
コマンドを実行したときや、バッファが Vim の外で変更されたためにそれを
リロードするときに使用される。 FileChangedShell
保存は、オプションの値が負数に設定されているか、行数が設定値より少ない
場合にのみ実行される。
リロードのアンドゥを無効化するにはこのオプションをゼロに設定する。
リロードのためにアンドゥが保存されるときは、アンドゥファイルは読み込ま
れない。
Note: この機能によってバッファ全体がメモリに保持される。メモリ不足が起
こる場合はこのオプションに小さい値を設定すること。
'updatecount' 'uc'
'updatecount' 'uc' 数値 (既定では 200)
グローバル
この回数だけ文字を打ち込むと、スワップファイルがディスクに書き込まれる。
0 にすると、スワップファイルは全く作られない (復旧に関する章
crash-recovery を参照)。Vimを引数 "-n" 付きで起動すると、オプション
'updatecount' を 0 に設定できる。startup を参照。読み込み専用モード
で編集しているときは、このオプションは 10000 に初期化される。
'swapfile' により、スワップファイルをバッファごとに無効化できる。
'updatecount' が 0 から 非0 に変更されたときは、'swapfile' がオンになっ
ている全てのバッファで、スワップファイルが作られる。'updatecount' が 0
になったときは、既存のスワップファイルは削除されない。
'swapsync' も参照。
'buftype' が "nofile" や "nowrite" であるようなバッファでは、このオプ
ションの意味はない。
'updatetime' 'ut'
'updatetime' 'ut' 数値 (既定では 4000)
グローバル
この時間の間 (ミリ秒単位) 入力がなければ、スワップファイルがディスクに
書き込まれる (crash-recovery を参照)。また autocommand のイベント
CursorHold にも使われる。
'varsofttabstop' 'vsts'
'varsofttabstop' 'vsts' 文字列 (既定では "")
バッファについてローカル
{+vartabs 機能付きでコンパイルされている場合のみ有効}
<Tab> の挿入や <BS> の使用などの編集における、1 つの <Tab> に相当する
空白の数のリスト。可変幅の <Tab> が挿入されるように感じられる動作だが、
実際には空白と <Tab> が混合して使用される。タブ幅はコンマで区切られ、
最後の値は後ろに続くすべてのタブに適用される。
例えば、9 列目からステートメントが、41 列目からコメントが始まるアセン
ブリ言語のファイルを編集する際、以下のように使用すると便利だろう:
して 8 個の空白に設定する。
Note: 'varsofttabstop' が設定されている場合、'softtabstop' の値は無
視される。
'vartabstop' 'vts'
'vartabstop' 'vts' 文字列 (既定では "")
バッファについてローカル
{+vartabs 機能付きでコンパイルされている場合のみ有効}
ファイルの中において、1 つの <Tab> に相当する空白の数をコンマで区切っ
たリスト。それぞれの値は 1 つのタブに対応し、最後の値は後ろに続くすべ
てのタブに適用される。例:
白、続くすべてのタブを 8 個の空白に変換する。
Note: 'vartabstop' が設定されている場合、'tabstop' の値は無視される。
'verbose' 'vbs'
'verbose' 'vbs' 数値 (既定では 0)
グローバル
値が 0 より大きいとき、Vimは実行中の動作に関するメッセージを表示する。
現在のところ、以下のメッセージが表示される。
1以上 ファイル viminfo が読み書きされたとき。
2以上 コマンド ":source" でファイルを読み込んだとき。
4以上 シェルコマンド。
5以上 検索されたタグファイルとインクルードファイル全て。
8以上 autocommand のグループが実行されたファイル。
9以上 実行された autocommand 全て。
11以上 パス上のアイテム検索。
12以上 実行された関数全て。
13以上 例外が発生/捕捉/終了/破棄されたとき。
14以上 ":finally" 節において保留されている全て。
15以上 スクリプトから実行された Ex コマンド全て (200 文字から後は切り
捨て)。
16以上 実行された Ex コマンド全て。
このオプションは、引数 "-V" でも設定できる。-V を参照。
このオプションは、コマンド :verbose でも設定できる。
'verbosefile' が設定されている場合、verboseのメッセージは表示されない。
'verbosefile' 'vfile'
'verbosefile' 'vfile' 文字列 (既定では "")
グローバル
このオプションが空でないとき、全てのメッセージはこの名前のファイルに書
き出される。ファイルが既に存在するときは、そこに追加される。
ファイルへの書き出しはVimが終了したときか、または 'verbosefile' が空に
設定されたとき終了する。書き込みはバッファされるので出力が欠けることが
ある。
'verbosefile' を新しい値に設定すると、最初に空に設定したのと同じことに
なる。:redirとの違いは、'verbosefile' が設定されているとき冗長なメッ
セージは画面に表示されないことである。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'viewdir' 'vdir'
'viewdir' 'vdir' 文字列 (既定値 Amiga用: "$VIM/vimfiles/view",
Win32用: "$HOME/vimfiles/view",
Unix用: "$HOME/.vim/view" または
"$XDG_CONFIG_HOME/vim/view"
VMS用: "sys$login:vimfiles/view")
グローバル
{+mksession 機能付きでコンパイルされたときのみ有効}
コマンド :mkview によるファイルを格納するディレクトリの名前。
$XDG_CONFIG_HOME については、xdg-base-dir を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'viewoptions' 'vop'
'viewoptions' 'vop' 文字列 (既定では "folds,options,cursor,curdir")
グローバル
{+mksession 機能付きでコンパイルされたときのみ有効}
コマンド :mkview の効果を変更する。値はキーワードのコンマ区切りのリ
ストである。キーワードは、ある項目の保存と復元を有効にする。
キーワード 復元される項目
cursor ファイル/ウィンドウ内のカーソル位置
folds 手動で作られた折り畳み、折り畳みの開閉の区別、折り畳み
関連のローカルなオプション
options ウィンドウまたはバッファについてローカルなオプションと
マッピング (ローカルなオプションのグローバルな値は含め
ない)
localoptions "options" と同じ
slash ファイル名内の '\' がスラッシュに置換される
unix Windows上でも、Unix形式の end-of-line (1個の <NL>) を
使う
curdir :lcd で設定されていた場合のウィンドウローカルなディ
レクトリ
"slash" と "unix" は、MS-Windows上でビューファイルをUnixと共有するとき
に便利である。Unix版のVimはdos形式のスクリプトを読み込めないが、
MS-Windows版のVimはunix形式のスクリプトを読み込めるからだ。
'viminfo' 'vi' E526 E527 E528
'viminfo' 'vi' 文字列 (Viの既定値は "", Vimの既定値は、
MS-Windowsでは: '100,<50,s10,h,rA:,rB:,
Amigaでは: '100,<50,s10,h,rdf0:,rdf1:,rdf2:
他のシステムでは: '100,<50,s10,h)
グローバル
{+viminfo 機能付きでコンパイルされたときのみ有効}
値が空でないとき、viminfo ファイルが起動に先立って読み込まれ、また終了
時に書き出される (viminfo-file を参照)。ただし、'viminfofile' が
"NONE" の時は除く。
値は指定部のコンマ区切りのリストである。指定部には、効果を指定するフラ
グ 1 文字の次に、その値を指定する数または文字列を指定する。指定されな
かったものについては、既定値が使われる。フラグとその動作の一覧は、以下
の通りである。
フラグ 動作
viminfo-!
! これが含まれると、アルファベットの大文字で始まり、小文字を含ま
ないグローバル変数を保存・復元する。つまり "KEEPTHIS" と
"K_L_M" は保存されるが、"KeepThis" と "_K_L_M" は保存されない。
入れ子になったリストと辞書は正しく復元されず、空文字列になる。
viminfo-quote
" 各レジスタで保存される行数の最大値。これはフラグ '<' の古い表
記である。この表記の不利点は、(エスケープのために)バックスラッ
シュを " の前に書かないといけないことである。そうしないとコメ
ントの開始と見なされてしまう!
viminfo-%
% これが含まれると、バッファリストを保存・復元する。Vimの起動時
にファイル名が引数に含まれていると、バッファリストは復元されな
い。Vimの起動時にファイル名が引数に含まれていないと、バッファ
リストが viminfo ファイルから復元される。Quickfix ('buflisted')
と非リスト対象 ('buflisted') 無名バッファおよびリムーバブルメ
ディア上のバッファ (viminfo-r) は保存されない。
このフラグの後に続けて数値を書くと、保存されるバッファ数の最大
値を指定することができる。数値が書かれていない場合、全てのバッ
ファが保存される。
viminfo-'
' マークが復元されるファイル履歴の最大値。オプション 'viminfo'
が空でないときは、常にこれを設定しなければならない。
また、このオプションを設定するとジャンプリスト jumplistと
changelist も viminfo ファイルに蓄えられることになる。
viminfo-/
/ 保存される検索パターンの履歴の最大値。非0 の値を指定すると、前
回の検索パターンと置換パターンも保存される。これが含まれないと
きは、'history' の値が使われる。
viminfo-:
: 保存されるコマンドライン履歴の最大値。これが含まれないときは、
'history' の値が使われる。
viminfo-<
< 各レジスタで保存される行数の最大値。0 にすると、レジスタは保存
されなくなる。'"' はこのフラグの古い表記である。
下記のフラグ 's' も参照: 's' はKbyte単位で最大値を指定する。
viminfo-@
@ 保存される input-line 履歴の最大値。これが含まれないときは、
'history' の値が使われる。
viminfo-c
c これが含まれると、viminfo ファイル内のテキストを、書き込まれた
ときのエンコーディングから現在のエンコーディングに変換する。
viminfo-encoding {訳注: および 'encoding'} を参照。
viminfo-f
f ファイルマークを保存するかどうか。0 を指定すると、ファイルマー
ク ('0 から '9, 'A から 'Z) は保存されない。これが含まれなかっ
たり、値が非0 のときは、みな保存される。'0 は (終了時やコマン
ド ":wviminfo" の実行時の) カーソル位置の保存に使われる。
viminfo-h
h viminfo ファイルの読み込み時に、'hlsearch' を無効にする。含ま
れないときは、最後の検索コマンド以来、コマンド ":nohlsearch"
が使われたかどうかによる。
viminfo-n
n これでファイル viminfo の名前を指定する。名前は 'n' のすぐ後に
続けて指定する。'viminfo' の最後に指定しなければならない!もし
も 'viminfofile' オプションが設定されていると、その
('viminfofile' で設定された) 名前は、ここの 'viminfo' で指定さ
れた名前を上書きする。環境変数はオプションの設定時ではなく、
ファイルの読み込み時に展開される。
viminfo-r
r リムーバブルメディア {訳注: USBメモリ、CD-ROM等の取り外せる記
憶装置。この中身は取り替えてしまえば全く変わるので、ファイル履
歴の意味がない} の指定。引数は文字列 (次の ',' まで) である。
これは複数個指定できる。それぞれがマーク履歴の対象外になるパス
の先頭部を指定する。これはリムーバブルメディアを避けるためであ
る。MS-Windowsでは "ra:,rb:", Amigaでは "rdf0:,rdf1:,rdf2:" と
するとよい。ここに一時ファイルを指定することもできる (Unixの例:
"r/tmp")。大文字と小文字の区別はない。それぞれの 'r' の引数の
最大長は 50 文字である。
viminfo-s
s Kbyte単位でのフラグの最大値。0のときレジスタは保存されない。現
在のところこれはレジスタにのみ適用される。既定値の "s10" の状
態では、10Kbyteを超えるテキストを持つレジスタは除外される。上
記のフラグ '<' も参照: '<' は行数で制限値を指定する。
例:
'50 最近編集した 50 ファイル内のマークは保存される。
<1000 レジスタの中身 (それぞれ 1000 行まで) は保存される。
s100 100Kbyteを超えるテキストを持つレジスタは保存されない。
:0 コマンドラインの履歴は保存されない。
n~/vim/viminfo 使用するファイル名は "~/vim/viminfo" である。
'/' がない '/' が指定されていないので、既定値が使われる。つまり全
ての検索履歴や前回の検索パターン、置換パターンが保存さ
れる。
'%' がない バッファリストは、保存も復元もされない。
'h' がない 'hlsearch' による強調表示は復元される。
'viminfo' を空の値から他の値へ変更するとき、:rviminfoを使うと、その
ファイルの中身を読み込むことができる。これは自動的には行われない。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
NOTE: このオプションは 'compatible' がオフになるとVimの既定値に設定さ
れるので注意。
'viminfofile' 'vif'
'viminfofile' 'vif' 文字列 (既定では: "")
グローバル
{+viminfo 機能付きでコンパイルされたときのみ有効}
値が空でないとき、viminfo で使われているファイル名を上書きする。
"NONE" のとき、viminfo の読み込みも書き込みもされない。
このオプションはコマンドラインの -i フラグで設定することができる。
コマンドラインからの --clean フラグはこれを "NONE" に設定する。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'virtualedit' 've'
'virtualedit' 've' 文字列 (既定では "")
グローバル/ウィンドウについてローカル global-local
値は、以下のキーワードのコンマ区切りのリストである。
block 矩形ビジュアルモードで仮想編集を有効にする。
insert 挿入モードで仮想編集を有効にする。
all 全てのモードで仮想編集を有効にする。
onemore 行末の1文字先までカーソルを移動できるようにする。
none ローカルの値で使うとき、グローバルの値が設定されていた
としても仮想編集を有効にしない。グローバルの値で使うと
き、"none" は "" と同じ。
NONE "none" の代替記法。
仮想編集とは、実際に文字がないところにもカーソルを置けるようにすること
である。つまりタブ文字の内部や行末より後ろにカーソルを移動できる。ビ
ジュアルモードで長方形を選択するときや、表を編集するときに便利である。
{訳注: フリーカーソルモードとも呼ばれる}
"onemore" は同じではない。"onemore" は単にカーソルを行の最後の文字の直
後まで移動できるようにするだけである。これによっていくつかのコマンドが
より一貫性を持つようになる。以前は、空行では常にカーソルは行末を越えて
いた。しかしこれはVi互換からはほど遠い。これを設定すると動かなくなるプ
ラグインや Vim script もあるかもしれない。例えばlでカーソルが最後の
文字の後に移動できるためである。よく注意して使うこと!
コマンド $ はカーソルを行の最後の文字へ移動させる。最後の文字を越え
はしない。そのため、$ によってカーソルが左へ移動することもありえる!
コマンド g$ はスクリーン行の最後に移動するだろう。
"all" と "onemore" を同時に設定することは意味がないが、そのように設定
しても警告は出ない。
他の値と合せて使うとき、"none" は無視される。
NOTE: このオプションは、'compatible' がオンになると "" になるので注意。
'visualbell' 'vb' 'novisualbell' 'novb' beep
'visualbell' 'vb' 切替 (既定ではオフ)
グローバル
ビープ音に、実際は音でなくビジュアルベル {訳注: 画面フラッシュ} を使う。
ビジュアルベルに使われるターミナルコードは、ターミナルオプション
't_vb' で指定される。音もフラッシュも使いたくないならば、次のようにす
ること {訳注: しかしエラーが分からなくなるという諸刃の剣}。
フラッシュを速くしたり遅くしたりすることができる。
Note: Vim はベルを 0.5 秒毎に制限する。これは、例えばキーリピートのよ
うな多くのベルがあった時に、フラッシュのためのフラッシュ待ちを回避す
る。'visualbell' が設定されていなくても生じることに注意。
GUI 版では、't_vb' の既定値は "<Esc>|f" であり、画面の色を 20 ミリ秒だ
け反転させる。違った時間を設定したいときは、"<Esc>|40f" とすること。こ
こで 40 の所にはミリ秒単位で時間を設定する。
Note: GUIが開始するとき、't_vb' は既定値に設定されることに注意。
gvimrc ファイルで再設定する必要があるだろう。
Amigaではこのオプションは無効で、常に画面フラッシュが使われる。
'errorbells' も参照。
'warn' 'nowarn'
'warn' 切替 (既定ではオン)
グローバル
バッファが変更される間にシェルコマンドが使われたら、警告メッセージを表
示する。
'weirdinvert' 'wiv' 'noweirdinvert' 'nowiv'
'weirdinvert' 'wiv' 切替 (既定ではオフ)
グローバル
このオプションは termcap オプション 't_xs' と同じ効果を持つ。これは
Vim version 4.x との後方互換性のためのものである。
このオプションをオンにすると、't_xs' が非0 になる。またこのオプション
をオフにすると、't_xs' が 0 になる。GUI版では効果がない。
'whichwrap' 'ww'
'whichwrap' 'ww' 文字列 (Vimの既定値: "b,s"、Viの既定値: "")
グローバル
カーソルを左右させるキーのうち、ここで指定したものでは、カーソルが行頭
/末にあるときに前/次行に移動できるようになる。以下のキーでこれを有効
にするには、文字を連結すること {訳注: はて?以下の文字を値に加えろとい
うことか?}。
フラグ キー モード
b <BS> ノーマルとビジュアル
s <Space> ノーマルとビジュアル
h "h" ノーマルとビジュアル (非推奨)
l "l" ノーマルとビジュアル (非推奨)
< <Left> ノーマルとビジュアル
> <Right> ノーマルとビジュアル
~ "~" ノーマル
[ <Left> 挿入と置換
] <Right> 挿入と置換
例:
移動キーが削除オペレータや変更オペレータと共に使われたときは、<EOL> も
文字に含まれる。このためカーソルが行末を通るときは、"3h" の動きと
"3dh" の動きは異なる。これは "x" と "X" にも当てはまる。それは、それら
のコマンドは "dl" と "dh" と同様に働くからだ。これを使うときは、バック
スペースでカーソル前の文字を削除できるようにするため、マッピング
":map <BS> X" を使うとよい。
値に 'l' が含まれているとき、(空行でない)行末でオペレータの後にlを使う
と、カーソルが次行に移動しない。これによって "dl", "cl", "yl" などが普
通に動作する。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'wildchar' 'wc'
'wildchar' 'wc' 数値 (Vimの既定値: <Tab>、Viの既定値: CTRL-E)
グローバル
コマンドラインで、オプション 'wildmode' で指定したようにワイルドカード
を展開するために打ち込まなければならない文字。
より詳しくは cmdline-completion を参照。
その文字はマクロ内では認識されない。それには 'wildcharm' を参照。
CTRL-C, <CR> や Enter などのいくつかのキーは機能しない。
<Esc> も使用できるが、2 回続けて押すと、フェイルセーフ対策としてコマン
ドラインが終了する。
'wc' は数値オプションだが、数値、単一文字、key-notation (例: <Up>、
<C-F>)、またはキャレットで始まる文字 (例: ^F は CTRL-F) で指定でき
る:
'compatible' がオフになるとVimの既定値に設定されるので注意。
'wildcharm' 'wcm'
'wildcharm' 'wcm' 数値 (既定では空 (0))
グローバル
このオプションはオプション 'wildchar' と全く同様に働くが、こちらはマク
ロ内でも認識される点が異なっている。ex-edit-index を探せば、このオプ
ションに適した「予備」コマンドラインキーが見つかるだろう。普通、ユーザー
が実際に 'wildcharm' で指定されたキーを打ち込むことはない。自動的に補
完モードを呼び出すマッピング内でのみ使うこと。例えば次のようにする。
'wildignore' 'wig'
'wildignore' 'wig' 文字列 (既定では "")
グローバル
ファイルパターンのリスト。パターンのどれかにマッチしたファイルは、ワイ
ルドカード (wildcards) の展開時と、ファイル/ディレクトリ名の補完時
に無視される。また、フラグを与えて無効化しない限り、expand(),
glob(), globpath() の結果に影響する。
パターンは :autocmd と同様のものである。autocmd-patterns を参照。
オプション 'suffixes' も参照。
例:
ンを除くときにはコマンド :set-= を使うのがよい。こうすると将来のバー
ジョンで異なった既定値が使われるようになったときに、問題が起きるのを防
げる。
'wildignorecase' 'wic' 'nowildignorecase' 'nowic'
'wildignorecase' 'wic' 切替 (既定ではオフ)
グローバル
オンのとき、ファイル名やディレクトリを補完するときに大文字と小文字が無
視される。
'fileignorecase' が設定されているときは効果は無い。
ワイルドカードの展開にシェルが使用されるとき (特殊文字が含まれていると
き) はこのオプションは適用されない。
'wildmenu' 'wmnu' 'nowildmenu' 'nowmnu'
'wildmenu' 'wmnu' 切替 (既定ではオフ、defaults.vim 内で
オンに設定される)
グローバル
オンのとき、コマンドライン補完が拡張モードで行われる。オプション
'wildchar' で指定されたキー (普通 <Tab>) を打ち込むと補完を開始し、コ
マンドラインのすぐ上に可能性のあるマッチが表示される。
'wildoptions' に "pum" が含まれている場合、補完マッチはポップアップメ
ニューに表示される。それ以外の場合は、コマンドラインのすぐ上に表示さ
れ、最初にマッチしたものがハイライトされる (ステータス行がある場合は上
書きされる)。
<Tab> や CTRL-P /CTRL-N 等の前/次のマッチを表示するキーは、強調部分を
適切なマッチに移動させる。
'wildmode' が有効なときは、"full" が指定されたところで "wildmenu" モー
ドが使われる。"longest" と "list" では "wildmenu" モードは開始されない。
現在のモードは wildmenumode() で確認できる。
1行に収め切れない程マッチがあるときは、{訳注: その後にマッチがあるなら}
文字 ">" が右端に表示され、{訳注: その前にマッチがあるなら} 文字 "<"
が左端に表示される。ステータス行は必要に応じてスクロールする。
"wildmenu" モードは、補完候補の選択に使われないキーが打ち込まれた時点
で終了する。
"wildmenu" がアクティブな間、以下のキーは特別な意味を持つ:
CTRL-P - 前のエントリへ移動
CTRL-N - 次のエントリへ移動
<CR> - メニュー補完時、カーソルがドットの直後にあるとき: サ
ブメニューに移動する。
CTRL-E - 補完を終了し、マッチ選択の前の状態に戻る。
CTRL-Y - 現在選択しているマッチに決定し、補完を停止する。
コマンドライン補完のポップアップメニューを使用しない場合、以下のキーは
特別な意味を持つ:
<Left> <Right> - 前/次のマッチを選択 (CTRL-P/CTRL-N と同じ)
<Up> - ファイル名/メニュー名補完時: 親ディレクトリ/親メ
ニューに移動する。
<Down> - ファイル名/メニュー名補完時: サブディレクトリ/サブ
メニューに移動する。
コマンドライン補完でポップアップメニューを使用する場合、以下のキーは特
別な意味を持つ:
<Up> <Down> - 前/次のマッチを選択 (CTRL-P/CTRL-N と同じ)
<PageUp> - いくつかのエントリを遡ってマッチするものを選択する。
<PageDown> - いくつかのエントリを進んでマッチするものを選択する。
<Left> - ファイル名/メニュー名補完時: 親ディレクトリ/親メ
ニューに移動する。
<Right> - ファイル名/メニュー名補完時: サブディレクトリ/サブ
メニューに移動する。
これにより、メニューがコンソールから扱える console-menus。
<Left> や <Right> キーで、別のマッチに移動するのではなく、カーソルを移
動させたいときは、次のようにする。
現在のマッチの表示には、ハイライトグループ "WildMenu" が使われる
hl-WildMenu。
'wildmode' 'wim'
'wildmode' 'wim' 文字列 (Vimの既定値は "full")
グローバル
オプション 'wildchar' で指定されたキーで開始する補完モード。値は、キー
ワードの4個までのコンマ区切りのリストである。それぞれのキーワードで、
連続して 'wildchar' を使ったときの動作を指定する。1個目のキーワードが
'wildchar' を1回目に使ったときの動作を指定し、2個目のキーワードが2回目
の動作を指定、等となる。
各部分はコロンで区切られたリストで次の可能な値で構成される:
"" 最初のマッチのみを補完する。
"full" 次のマッチを完全に補完する。最後のマッチの次には元の文
字列が使われ、その次は再び最初のマッチが補完される。
'wildmenu' が有効ならばそれも開始する。
"longest" 共通する最長の文字列までが補完される。それ以上長い文字
列を補完できないときは、次の候補に移る。
"list" 複数のマッチがあるときは、全てのマッチを羅列する。
"lastused" バッファ名が補完され1より多くマッチした時、バッファを
最終利用時刻でソートする (カレントバッファ以外)。
マッチが1個しかないときは、どの場合でも完全に補完される。
コロン区切りで利用できる例:
"longest:full" "longest" と似ているが、'wildmenu' が有効ならばそれも
開始する。次の完全なマッチを補完しない。
"list:full" 複数のマッチがあるときは、全てのマッチを羅列し、最初の
マッチを補完する。
"list:longest" 複数のマッチがあるときは、全てのマッチを羅列し、共通す
る最長の文字列までが補完される。
"list:lastused" 複数のバッファが一致する場合、一致する全バッファを最終
利用時刻でソートし羅列する (カレントバッファ以外)。
例:
より詳しくは cmdline-completion を参照。
'wildoptions' 'wop'
'wildoptions' 'wop' 文字列 (既定では "")
グローバル
コマンドライン補完 cmdline-completion の挙動を変える単語のリスト。
以下の値をサポートする:
fuzzy 補完のマッチ検索にファジーマッチ fuzzy-matching を使
用する。この値が設定された場合、補完でワイルドカード展
開が使用されなくなる。マッチ結果はアルファベット順ソー
トの代わりに "ベストマッチ" のソートになる。
これはワイルドカード展開より多くマッチすることがある。
現在、ファイルとディレクトリ名にはファジーマッチベース
の補完はサポートされておらず、かわりにワイルドカード展
開が使用される。
pum 補完のマッチの表示に補完ポップアップメニュー
ins-completion-menu と同じようにポップアップメニュー
を使う。
tagfile CTRL-Dでマッチするタグを一覧表示するとき、タグの種類と
そのタグのファイル名が表示される。1行につき1つのマッチ
が表示される。よく使われるタグの種類は次の通り:
d #define マクロ
f 関数
'winaltkeys' 'wak'
'winaltkeys' 'wak' 文字列 (既定では "menu")
グローバル
{VimのWin32版、Motif版、GTK版、Photon GUI版でのみ有効}
GUI版では、メニュー内で下線付きで表示されている文字とALTキーを組み合わ
せて使うことで、メニューの項目にアクセスできるものがある。これはマッピ
ングや特殊な文字の入力にALTキーを使うことと衝突する。このオプションは、
そのときの動作を指定する。
no ALTキーをメニューに使わない。ALTキーを使った組み合わせはマッピ
ングに使えるが、自動的にメニューの操作に使われることはない。こ
のときメニューの操作は、コマンド :simalt で可能である。
yes ALTキーの扱いはウィンドウシステムに任される。ALTキーとのキーの
組み合わせは、マッピングには使えない。
menu メニューのショートカットキーになっている文字と組み合わせてALT
キーを使うとウィンドウシステムが扱うが、他のキーはマッピングに
使える。
オプション 'guioptions' からフラグ 'm' が取り除かれ、メニューが無効に
なっていると、ALT キーはメニューには全く使われない。
このオプションは<F10>には適用されない; Win32版とGTK版では、マッピング
されていない限り<F10>を押すとメニューが選択される。
'wincolor' 'wcr'
'wincolor' 'wcr' 文字列 (既定では "")
ウィンドウについてローカル
通常の色 hl-Normal の代わりにこのウィンドウに使用するハイライトグルー
プ名。
'window' 'wi'
'window' 'wi' 数値 (既定では: 画面の高さ - 1)
グローバル
ウィンドウが1つだけで、このオプションの値が 'lines' - 1 より小さいと
き、CTRL-F と CTRL-B にこのウィンドウの高さが使われる。'window' -
2 行(ただし最小値は1行)だけ画面がスクロールする。
'window' が 'lines' - 1 に等しいとき、CTRL-F と CTRL-B は折り返された
行を考慮したより賢い方法でスクロールする。
Vimウィンドウをリサイズするときに、このオプションの値が1より小さいか
'lines' 以上ならば 'lines' - 1 に設定される。
Note: Vim のウィンドウの高さと混同しないこと。それには 'lines' を利用
する。
'winfixbuf'
'winfixbuf' 'wfb' 切替 (既定ではオフ)
ウィンドウについてローカル
有効にすると、ウィンドウとそれが表示しているバッファがペアになる。
例えば、:edit を使用してバッファを変更しようとすると失敗する。
ウィンドウのバッファを変更する :cnext のような他のコマンドも
'winfixbuf' が有効なウィンドウをスキップする。ただし、Ex コマンドに
"!" 修飾子がある場合は、バッファを強制的に切り替えることができる。
'winfixheight' 'wfh' 'nowinfixheight' 'nowfh'
'winfixheight' 'wfh' 切替 (既定ではオフ)
ウィンドウについてローカル local-noglobal
'equalalways' をオンにしてウィンドウを開閉したとき、ウィンドウの高さを
保つ。CTRL-W_=に対しても同様。preview-windowとquickfix-windowに
対してはデフォルトでオンになる。
これをオンにしていても、利用できる高さが不足している場合には高さが変わ
る。
'winfixwidth' 'wfw' 'nowinfixwidth' 'nowfw'
'winfixwidth' 'wfw' 切替 (既定ではオフ)
ウィンドウについてローカル local-noglobal
'equalalways' がオンになっていてウィンドウを開閉したとき、ウィンドウの
幅を保つ。CTRL-W_=に対しても同様。
これをオンにしていても、利用できる幅が不足している場合には幅が変わる。
'winheight' 'wh' E591
'winheight' 'wh' 数値 (既定では 1)
グローバル
カレントウィンドウの行数の最小値。これは絶対的な最小値ではなく、余裕の
ないときには行数はこれよりも少なくなる。この指定より小さいウィンドウに
フォーカスが移動すると、他のウィンドウの行数を減らしてそのウィンドウを
大きくする。
通常の編集時には 'winheight' を小さい値にしておくこと。
値を 999 にすると、常にカレントウィンドウが画面のほとんどを占め、ほか
のウィンドウは 'winminheight' の高さになる。
(ただしこうすると ":all" を使ったときウィンドウが2つしか作られないとい
う難点もある)。"vim -o 1 2 3 4" としたとき2個のウィンドウしか作られな
いのを避けるには、イベント VimEnter を使って、スタートアップが行われ
た後にこのオプションを設定すればよい:
カレントウィンドウの高さを変更するコマンドの後では、ウィンドウの高さは
調整されない。
'winheight' はカレントウィンドウに適用される。他のウィンドウの高さの最
小値の設定には、'winminheight' を使うこと。
'winminheight' 'wmh'
'winminheight' 'wmh' 数値 (既定では 1)
グローバル
カレントウィンドウではないウィンドウの高さの最小値。これは絶対的な最小
値であり、ウィンドウは決してこれより低くはならない。
0 に設定すると、ウィンドウは必要に応じて高さゼロに「潰される」 (つまり、
ステータス行のみになる)。ウィンドウがアクティブになると、高さは最低 1
行にはなる (カーソルの居場所が必要なため)。
カレントウィンドウの高さの最小値の設定には、'winheight' を使うこと。
このオプションの効果があるのは、ウィンドウを小さくするときだけである。
大きな値を使わないこと。そうするとウィンドウを幾つも開いたときにエラー
になる。値は 0 から 3 までが適当である。
'winminwidth' 'wmw'
'winminwidth' 'wmw' 数値 (既定では 1)
グローバル
カレントウィンドウではないウィンドウの幅の最小値。これは絶対的な最小値
であり、ウィンドウは決してこれより狭くはならない。
0 に設定すると、ウィンドウは必要に応じて幅ゼロに「潰される」 (つまり、
垂直分割の区切りのみになる)。ウィンドウがアクティブになると、幅は最低
1 列にはなる (カーソルの居場所が必要なため)。
カレントウィンドウの幅の最小値の設定には、'winwidth' を使うこと。
このオプションの効果があるのは、ウィンドウを小さくするときだけである。
大きな値を使わないこと。そうするとウィンドウを幾つも開いたときにエラー
になる。値は 0 から 12 までが適当である。
'winptydll'
'winptydll' 文字列 (既定では "winpty32.dll" または "winpty64.dll")
グローバル
{Vim が MS-Windows 上で terminal 機能付きでコンパイ
ルされたときのみ有効}
:terminal コマンドで使われる winpty 共有ライブラリの名前を指定する。
デフォルトは Vim が 32-bit 用もしくは 64-bit 用向けにビルドされている
かどうかに依存する。もしも見つからなければ、"winpty.dll" にフォールバッ
クしようとする。
環境変数は :set_env で展開される。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'winwidth' 'wiw' E592
'winwidth' 'wiw' 数値 (既定では 20)
グローバル
カレントウィンドウの列数の最小値。これは絶対的な最小値ではなく、余裕の
ないときには列数はこれよりも少なくなる。カレントウィンドウの列数が指定
したものより少ないときは、他のウィンドウの列数を減らしてそれを増やす。
カレントウィンドウが常に画面を埋めるようにするには、999 に設定すること。
普通の編集時には小さい値に設定すること。
カレントウィンドウの幅を変更するコマンドの後では、ウィンドウの幅は調整
されない。
'winwidth' はカレントウィンドウに適用される。他のウィンドウの幅の最小
値の設定には、'winminwidth' を使うこと。
'wrap' 'nowrap'
'wrap' 切替 (既定ではオン)
ウィンドウについてローカル
このオプションは、テキストの表示方法を変える。これはバッファ内のテキス
トには変更を与えない。それについてはオプション 'textwidth' を参照。
オンのときは、ウィンドウの幅より長い行は折り返され、次の行に続けて表示
される。オフのときは、折り返しは行われず、長い行は一部のみが表示される。
カーソルが表示されていない部分に移動すると、画面は水平スクロールする。
行の分割は、必要であれば単語の中ででも行われる。折り返しを単語の境界で
行うには、'linebreak' を参照。
水平スクロールをもっと便利にするには、次のようにしてみるとよい。
オプション 'diff' がオンの場合、モードライン modeline からこのオプ
ションを設定することはできない。
'wrapmargin' 'wm'
'wrapmargin' 'wm' 数値 (既定では 0)
バッファについてローカル
ウィンドウの右端からこの文字数だけ離れたところで折り返しが始まる。この
境界を超えてテキストを入力すると、<EOL> が挿入され、挿入は次行に続く。
'number' や 'foldcolumn' など幅をとるオプションを使用していると、テキ
ストの幅がこの値より少なくなる。これはVi互換の動作である。
オプション 'textwidth' が非0 のときは、このオプションは使われない。
このオプションは 'paste' オプションがオンになった時には0が設定され、
'paste' オプションがリセットされた際には復元される。
'formatoptions' と ins-textwidth も参照。
'wrapscan' 'ws' 'nowrapscan' 'nows'
'wrapscan' 'ws' 切替 (既定ではオン) E384 E385
グローバル
検索がファイル末尾まで進んだら、ファイル先頭から再び検索する。スペリン
グミスを検索する]sと[sにも適用される。
'write' 'nowrite'
'write' 切替 (既定ではオン)
グローバル
ファイルの書き込みを有効にする。オフのときは、書き込みができない。読込
専用モードに使える。ただしファイルの編集は可能である。コマンドライン引
数 -m や -M を使ってオフに設定できる。テキストをフィルタにかけるこ
とも可能であり、一時ファイルの書き込みも可能である。
'writeany' 'wa' 'nowriteany' 'nowa'
'writeany' 'wa' 切替 (既定ではオフ)
グローバル
いかなるファイルも "!" なしに書き込みができる。
'writebackup' 'wb' 'nowritebackup' 'nowb'
'writebackup' 'wb' 切替 (+writebackup 機能付きでコンパイルされたなら
既定値はオン、そうでないなら既定値はオフ)
グローバル
ファイルの上書きの前にバックアップを作る。オプション 'backup' がオンで
ない限り、バックアップは上書きに成功した後削除される。
警告: このオプションをオフにするということは、すなわち、何らかの理由で
Vim がバッファを正しく保存できなかったときに、そのまま Vim を終了して
しまうと、あなたは元のファイルと新しく書いた内容の両方を失うということ
を意味する。例えばファイルシステムが一杯で書き込みができないような場合
のみこのオプションをオフにすること (そして、保存が成功するまで Vimを終
了してはならない)。
他の説明は backup-table を参照。
'backupskip' のパターンがマッチしたら、バックアップは作られない。
バックアップが新しいファイルになるか、元のファイルがリネームされる (そ
して新しいファイルが書かれる) かは 'backupcopy' に依存する。
NOTE: このオプションは、'compatible' がオンになると既定値に設定される
ので注意。
'writedelay' 'wd'
'writedelay' 'wd' 数値 (既定では 0)
グローバル
打ち込まれた文字が画面に送られるまでの遅延時間を、ミリ秒単位で指定す
る。非0 のときは、文字は画面に一つ一つ送られる。これはデバッグ用のオプ
ションである。
'xtermcodes' 'noxtermcodes'
'xtermcodes' 切替 (既定ではオン)
グローバル
termresponse メカニズムで xterm のパッチレベル141以上を検出し、かつ、
このオプションが設定されている場合、Vim は実際の端末のキーコードと色数
を端末に要求する。これは、termlib/terminfo エントリから取得できない端
末の様々な構成オプションの面倒を見るものである。xterm-codes 参照。
副作用として、t_Co が変更されると Vim が表示を再描画する。
vim:tw=78:ts=8:noet:ft=help:norl:
VIMリファレンスマニュアル by Bram Moolenaar
オプション options
1. オプションの設定 set-option
2. オプションの自動設定 auto-setting
3. オプションの要約 option-summary
オプションの概要については、quickref.txt option-list を参照。
Vimには、特別な働きをさせるための多くの内部変数とスイッチがある。それらのオプ
ションには3種類ある。
boolean toggle
切替 boolean オプション オンかオフかのどちらかの値をとる
数値 number オプション 数値の値を取る
文字列 string オプション 文字列の値を取る
{訳注: このヘルプの中で多く出てくる語句で、分かりにくいものを説明する。
- ローカルな:
あるバッファまたはウィンドウにのみ適用されるような、という意味。
- ローカルオプション:
あるバッファまたはウィンドウ内の設定のみを変え、その他のバッファまたは
ウィンドウの設定に影響しないようなオプション。
- ウィンドウについてローカルな:
あるウィンドウにのみ適用されるような、という意味。バッファについてロー
カルな、も同様な意味を持つ。
- グローバルな:
Vim全体に適用されるような、または、Vim全体で共通の値を使うような、とい
う意味。
上の4項目については option-summary も参照。
- non-printable, unprintable:
文字が画面に表示可能なフォントに対応していないこと。具体的には <CTRL>
などを押しながら入力した文字や <ESC> が例である。主に制御に利用される。
訳語で、さらに相応しいものがあればご提案を下さい。}
==============================================================================
1. オプションの設定 set-option E764
:se :set
:se[t][!] 既定値と違う値のオプションを全て表示する。
[!] がある場合、それぞれのオプションは独立した行に表示
される。
:se[t][!] all ターミナルオプション以外の全てのオプションを表示する。
[!] がある場合、それぞれのオプションは独立した行に表示
される。
:se[t] termcap ターミナルオプションを全て表示する。Note GUIバージョン
では、キーコードは表示されないので注意。なぜなら、キー
コードは内部的に生成され、変更が不可能だからだ。それに、
GUIバージョンでターミナルコードを変更するのは便利とは
言えない...
オプションの形式は t_AB である。terminal-options を
参照。
:se[t]! termcap 同様だが、複数列を使用しない。
E518 E519
:se[t] {option}? {option} の値を表示する。
:se[t] {option} 切替オプション: セット、すなわちオンに切り替える。
数値オプション: 値を表示する。
文字列オプション: 値を表示する。
:se[t] no{option} 切替オプション: リセット、すなわちオフに切り替える。
:set-! :set-inv
:se[t] {option}! または
:se[t] inv{option} 切替オプション: オンとオフを切り替える。
:set-default :set-& :set-&vi :set-&vim
:se[t] {option}& オプションを既定値に設定する。オプション 'compatible'
のその時点の値によって違うかもしれない。
:se[t] {option}&vi オプションをViの既定値に設定する。
:se[t] {option}&vim オプションをVimの既定値に設定する。
:se[t] all& 全てのオプションを既定値に設定する。ただし以下のオプ
ションについては変更しない。
t_ で始まる端末用のオプション全部
'columns'
'cryptmethod'
'encoding'
'key'
'lines'
'term'
'ttymouse'
'ttytype'
警告: これにはたくさんの副作用があるだろう。
:set-args :set= E487 E521
:se[t] {option}={value} または
:se[t] {option}:{value}
数値および文字列オプションの値を {value} に設定する。
数値オプションの値は、10進数、(0x を頭に付けて) 16進数、
または ('0' か '0o' を頭に付けて) 8進数で指定できる。
オプション 'wildchar' で指定された文字 (既定では
<Tab>、オプション 'compatible' がオンならば CTRL-E)
を打ち込むと、古い値を挿入できる。固定された構文と名前
を持つ多くの文字列オプションは、既知の値の補完もサポー
トしている。cmdline-completion と
complete-set-option を参照。
{option} と '=' の間には空白を入れることができる。それ
らは無視される。'=' と {value} の間に空白を入れてはい
けない。
{value} 内での空白や '\' の使用に関しては、
option-backslash を参照 {訳注: 文書先頭も参照}。
:se[t] {option}+={value} :set+=
数値オプションに対しては {value} だけその値を増す。文
字列オプションに対しては後ろに {value} を追加する。オ
プションがコンマ区切りのリストのときは、値が空でない限
り、元の値と {value} の間にコンマが付け加えられる。
オプションがフラグのリストであるときは、冗長なフラグは
取り除かれる。すでに入っているフラグを加えようとしたと
きは、そのオプションの値は変わらない。
上の :set-args も参照。
:se[t] {option}^={value} :set^=
数値オプションに対してはその値を {value} 倍する。文字
列オプションに対しては前に {value} を追加する。オプショ
ンがコンマ区切りのリストのときは、{value} と元の値の間
にコンマが付け加えられる。
上の :set-args も参照。
:se[t] {option}-={value} :set-=
数値オプションに対しては {value} だけその値を減らす。
文字列オプションに対しては {value} を (それが含まれて
いたら) 取り除く。
そのとき {value} が含まれていなくても、警告やエラーは
出ない。オプションがコンマ区切りのリストであり、取り除
くオプションが唯一の値でない限り、間のコンマも削除され
る。
オプションがフラグのリストであるときは、{value} は値の
中に現れるままに、正確に指定しなければならない。問題が
起こるのを避けるために、フラグを取り除くときは1個ずつ
指定すること。
コンマで区切られたリストやフラグのリストにある個々の値
は、'wildchar' をタイプすることで挿入できる。
complete-set-option を参照のこと。
上の :set-args も参照。
1回のコマンド ":set" に対し、複数の {option} を引数に指定できる。例:
:set ai nosi sw=3 ts=3
引数の中にエラーがあると、エラーメッセージが現れ、エラーの元になったオプション以降は無視される。
:set-verbose
オプション 'verbose' の値が非0 なら、オプションの値を表示するとき、同時に、そ
のオプションが最後に設定されたのはどこであったかも分かる。例:
:verbose set shiftwidth cindent?
shiftwidth=4Last set from modeline line 1
cindent
Last set from /usr/local/share/vim/vim60/ftplugin/c.vim line 30
これは特定のオプション名が指定されたときのみ機能する。コマンド ":set all" や、
引数のないコマンド ":verbose" ではメッセージが現れない。
オプションが手動で設定されていると、メッセージ "Last set" は現れない。
オプションが関数やユーザーコマンド、自動コマンド autocommand の実行中に設定さ
れたときは、それらが定義されているスクリプト名が報告される。
Note 'compatible' を設定すると副作用として他のオプションも設定されることがあ
る。
以下のような特殊なメッセージがある:
Last set from modeline line 1
モードライン modeline の中でオプションが設定された。
Last set from --cmd argument
コマンドライン引数 --cmd または + によりオプションが設定され
た。
Last set from -c argument
コマンドライン引数 -c, +, -S, -q によりオプションが設定
された。
Last set from environment variable
環境変数、$VIMINIT、$GVIMINIT、$EXINIT によりオプションが設定
された。
Last set from error handler
オプションを評価中にエラーが発生し、クリアされた。
{+eval 機能付きでコンパイルされたときのみ有効}
:set-termcap E522
Termcap オプションを設定するには、{option} に "t_xx" の形式を使ってもよい。こ
れは termcap による値を上書きする。これはマッピングの中で利用することもできる。
"xx" の部分が特別な文字を含むときは、<t_xx> の形式を使うこと:
:set <t_#4>=^[Ot
これは特殊なコードを普通のキーに変換する際にも使われる。例えば Alt-b が <Esc>bを出力するなら、次のようにすること:
:set <M-b>=^[b
(ここで ^[ は本物の <Esc> である。入力には CTRL-V <Esc> を使うこと)マッピングの利点は、どんなときにも機能することである。
キーコードを定義することができる。例:
:set t_xy=^[foo;
未知のキーコード名を使っても警告は表示されない。これらのキーコードに対してマップを定義できる:
:map <t_xy> something
E846キーコードが設定されていない場合、それは存在しないのと同じである。その値を取得
しようとするとエラーになる:
:set t_kb=
:set t_kb
E846: Key code not set: t_kb:set t_kb
セキュリティ上の理由から、t_xx 形式のオプションを modeline または sandbox
内で設定することはできない。
コマンド ":set" によるリスト表示の外見は、Viとは違う。長い文字列オプションはリ
ストの終わりに現れる。オプションの数も極めて多い。コマンド "set all" による表
示は、画面に収まらないだろう。そうしたとき、Vimは「継続」プロンプト
more-prompt を出す。
option-backslash
文字列オプションの値に空白を含めるには、空白の前に '\' を置く必要がある。値に
'\' を含めるには、2個繰り返す。結果的には、オプションの値の中の '\' の数は半分
になる (端数は切り捨て)。
オプション 'path', 'cdpath', および 'tags' では、オプションがコンマかスペース
で区切られるバージョン 3.0 との互換性のために、スペースの前にバックスラッシュ
を 3 つ置く必要がある。
'backupdir' や 'tags' のようなコンマで区切られたオプションでは、コンマを 2 つ
のバックスラッシュでエスケープする必要があるが、'makeprg' のようなコンマで区切
られていないオプションでは必要ない。
:let や literal-string を使ってオプションを設定する場合は、バックスラッシュ
を 1 つ少なくする必要がある。
例をいくつか挙げる:
:set makeprg=make\ file 結果は "make file"
:let &makeprg='make file' (同上)
:set makeprg=make\\\ file 結果は "make\ file"
:set tags=tags\ /usr/tags 結果は "tags" と "/usr/tags"
:set tags=tags\\\ file 結果は "tags file"
:let &tags='tags\ file' (同上)
:let &makeprg='make file' (同上)
:set makeprg=make\\\ file 結果は "make\ file"
:set tags=tags\ /usr/tags 結果は "tags" と "/usr/tags"
:set tags=tags\\\ file 結果は "tags file"
:let &tags='tags\ file' (同上)
:set makeprg=make,file 結果は "make,file"
:set makeprg=make\\,file 結果は "make\,file"
:set tags=tags,file 結果は "tags" と "file"
:set tags=tags\\,file 結果は "tags,file"
:let &tags='tags\,file' (同上)
:set makeprg=make\\,file 結果は "make\,file"
:set tags=tags,file 結果は "tags" と "file"
:set tags=tags\\,file 結果は "tags,file"
:let &tags='tags\,file' (同上)
文字 "|" によって、コマンド ":set" を後に続くコマンドと分けることができる。文
字列オプションの値に "|" を含めるには、代わりに "\|" を使うこと。次の例ではオ
プション 'titlestring' の値を "hi|there" に設定している:
:set titlestring=hi\|there
しかし次の例では、2個のオプション 'titlestring', 'iconstring' をそれぞれ "hi","there" に設定している:
:set titlestring=hi|set iconstring=there
また、旧来のスクリプトではダブルクォート文字はコメントを開始する。オプションの
値に '"' を含めるには '\"' と書くこと。次の例は 'titlestring' を 'hi "there"'
に設定する:
:set titlestring=hi\ \"there\"
Vim9 script ではもっとシンプルで、コメントは '#' 文字で始まり、かつ前に空白
文字があるときだけである。バックスラッシュが必要になる頻度は少なくなる:
vim9script
set titlestring=hi\ "there"
set titlestring=hi#there#
set titlestring=hi\ \#there#
set titlestring=hi\ "there"
set titlestring=hi#there#
set titlestring=hi\ \#there#
Win32では、ファイル名の中の '\' は大抵は取り除かれない。正確に言うと、値にファ
イル名を取るオプション (環境変数が展開されるもの) では、通常のファイル名に使わ
れる文字の前の '\' は取り除かれない。しかし、特別な文字 (空白、'\' そのもの、
コンマ等) の前の '\' は、上で説明した通りの働きをする。
オプションの値が "\\" で始まるときは、特別な状態になる:
:set dir=\\マシン名\パス の結果は "\\マシン名\パス"
:set dir=\\\\マシン名\\パス の結果は "\\マシン名\パス"
:set dir=\\パス\\ファイル の結果は "\\パス\ファイル" (間違い!)
最初の例では、始まりの部分の '\' はそのまま保たれている。しかし2番目の例では、:set dir=\\\\マシン名\\パス の結果は "\\マシン名\パス"
:set dir=\\パス\\ファイル の結果は "\\パス\ファイル" (間違い!)
'\' の数は半分になっている。つまり、'\' をそのまま保ちたいときでも、半分にした
いときでも、どちらがよいか指定できることが分かる。3番目の結果は、おそらく希望
通りのものではないだろう。このやり方は避けること。
add-option-flags remove-option-flags
E539 E550 E551 E552
値がフラグのリストからなるオプションもある。そういったオプションにフラグを追加
したいとき、既存の値を変更したくないならば、こうすること:
:set guioptions+=a
オプションからフラグを取り除くには、こうすること: :set guioptions-=a
これはオプション 'guioptions' からフラグ 'a' を取り除く。Note フラグは1個ずつ追加したり取り除いたりするよう注意。オプション
'guioptions' が "ab" という値であるとき、"set guioptions-=ba" は機能しない。な
ぜなら、"ba" という文字列は現れていないからである。
:set_env expand-env expand-environment-var
特定の文字列オプションでは環境変数が展開される。'$' とそれに続く環境変数名が、
その値に置き換えられる (その環境変数が存在するとき)。環境変数が存在しないとき、
'$' とそれに続く変数名は変更を受けない。識別子に使えない non-id 文字 (英字、数
字、'_' 以外) なら、どれでも環境変数名の後に続けることができる。識別子に使えな
い文字とそれに続く文字は、環境変数の値の後ろにそのまま追加される。例:
:set term=$TERM.new
:set path=/usr/$INCLUDE,$HOME/include,.
コマンド ":set opt-=値" でオプションから文字列を取り除いたり、コマンド ":set:set path=/usr/$INCLUDE,$HOME/include,.
opt+=値" でオプションに文字列を追加したりするときには、環境変数の展開が行われ
てからそうした操作がなされる。
ローカルオプションの扱い local-options
Note: 以下は global-local オプションにも適用される。
いくつかのオプションは、1つのウィンドウや1つのバッファのみに適用される。それぞ
れのウィンドウやバッファは、そうしたオプションの独自のコピーを保持しているため、
独自の値を持つことができる。これにより、あるウィンドウ内では 'list' オプション
をオンにするが、他のウィンドウではオフにする、ということが可能になる。またオプ
ション 'shiftwidth' を、あるバッファ内では 3 にし、他では 4 にすることもできる。
以降では、特定の状況下でそれらのローカルオプションがどうなるかを説明する。実際
には、それらを全て知る必要はない。なぜなら、Vimはおそらくユーザーが予想する通
りにオプションの値を使うからである。残念ながら、ユーザーの予想通りに働くのは、
いくらか複雑なことである...
ウィンドウを分割すると、ローカルオプションは新しいウィンドウにコピーされて引き
継がれる。そのため、ウィンドウを分割した直後には、2つのウィンドウの内容は同じ
ように見える。
新しいバッファを編集するとき、そのバッファのローカルオプションは初期化されなけ
ればならない。その以前のカレントバッファのローカルオプションは、そのバッファの
みに適用すべきものかもしれないので、新しいバッファには適用されない。その代わり、
バッファについてローカルなオプションにはそれぞれグローバルな値があり、新しいバッ
ファにはそれが適用される。コマンド ":set" によって、ローカルな値とグローバルな
値の両方が変更される。コマンド "setlocal" はローカルな値のみを変更するので、そ
れで指定した値は新しいバッファには適用されない。
すでに編集されているバッファを編集するときは、最後に閉じられたウィンドウ内のロ
ーカルオプションが再び使われる。このバッファがこのウィンドウ内ですでに編集され
ていたなら、そのときの値が再び用いられる。そうでなければ、そのバッファが最後に
編集されて閉じられたウィンドウ内の値が用いられる。
特定のバッファの種類についてウィンドウ内のローカルオプションを設定することも可
能である。同じウィンドウ内で別のバッファを編集するときは、ウィンドウについてロー
カルなオプションを使い続けたくはないだろう。そのためVimはウィンドウについてロー
カルなオプションのグローバルな値を記憶しており、別のバッファの編集時にはそれを
用いる。ウィンドウはそれぞれ、それらの値の独自のコピーを持っている。そのため、
それらのオプションはウィンドウについてはローカルであるが、そのウィンドウ内の全
てのバッファについてグローバルである。それらを用いて、次のようなことが可能であ
る:
:e 一つ目
:set list
:e 二つ目
こうするとオプション 'list' はバッファ "二つ目" にも適用される。コマンド:set list
:e 二つ目
":set list" により、グローバルな値もオンになったからである。
:set nolist
:e 一つ目
:setlocal list
:e 二つ目
今度はバッファ "二つ目" ではオプション 'list' はオフである。なぜならコマンド:e 一つ目
:setlocal list
:e 二つ目
":set nolist" がグローバルな値をオフにしたが、コマンド ":setlocal list" はバッ
ファ "一つ目" についてローカルな値をオンにしただけで、":e 二つ目" ではグローバ
ルな値が適用されるからである。 Note 次にこうすると:
:e 一つ目
最後にバッファ "一つ目" を編集したときの通りにオプション 'list' の値が戻る。ウィンドウについてローカルなオプションはバッファ毎に記憶される。バッファがロー
ドされていなくても同様に記憶されている。ただし、バッファが破棄 (:bwipe) され
たときは設定は消える。
特別なローカルウィンドウオプション local-noglobal
以下のローカルウィンドウオプションは、新しいウィンドウが作成されたときにコピー
されないため、若干異なる動作をする:
オプション 理由
'previewwindow' 1つしか存在できない
'scroll' 既存のウィンドウに固有のもの
'winfixbuf' 既存のウィンドウに固有のもの
'winfixheight' 既存のウィンドウに固有のもの
'winfixwidth' 既存のウィンドウに固有のもの
特別なローカルバッファオプション
以下のローカルバッファオプションは、新しいバッファが作成されるときにコピーされ
ないため、若干異なる動作をする:
オプション 理由
'filetype' 自動コマンドによって明示的に設定される
'syntax' 自動コマンドによって明示的に設定される
'bufhidden' special-buffers である
'buftype' special-buffers である
'readonly' 自動的に検出される
'modified' 自動的に検出される
:setl :setlocal
:setl[ocal][!] ... コマンド ":set" と似ているが、カレントバッファ/ウィン
ドウについてローカルな値のみを設定する。全てのオプショ
ンがローカルな値を持つわけではない。オプションがローカ
ルな値を持たないときは、グローバルな値が設定される。
引数が "all" のとき: 全てのローカルオプションのローカ
ルな値を表示する。
引数がないとき: 全てのローカルオプションのローカルな値
で、既定値と異なるものを表示する。
特定のローカルオプションを表示するときは、ローカルな値
も表示する。グローバルまたはローカルな切替オプションに
対しては、グローバルな値が表示される場合には、オプショ
ン名の前に "--" が表示される。
グローバルオプションに対しては、グローバルな値が表示さ
れる (しかし、これは将来変更されるかもしれない)。
:se[t] {option}< {option} の実効値をそのグローバル値に設定する。
文字列の global-local オプションの場合、ローカル値は
削除され、グローバル値が使用されるようになる。
他のすべてのオプションの場合、グローバル値がローカル値
にコピーされる。
:setl[ocal] {option}< {option} の実効値をそのグローバル値に設定する。
数値および真偽値の global-local オプションの場合、
ローカル値が削除され、グローバル値が使用される。
文字列の global-local オプションを含む他のすべてのオ
プションでは、グローバル値がローカル値にコピーされる。
Note global-local オプションの挙動は、文字列ベースのオプションと数値ベースの
オプションでは若干異なることに注意。
:setg :setglobal
:setg[lobal][!] ... コマンド ":set" と似ているが、ローカルオプションのグロー
バルな値のみを設定し、ローカルな値は変更しない。
オプションの値を表示するときは、グローバルな値が表示さ
れる。
引数が "all" のとき: 全てのローカルオプションのグロー
バルな値を表示する。
引数がないとき: 全てのローカルオプションのグローバルな
値で、既定値と異なるものを表示する。
バッファ/ウィンドウについてローカルなオプションに対して:
コマンド グローバルな値 ローカルな値 条件
:set option=value set set
:setlocal option=value - set
:setglobal option=value set -
:set option? - display ローカル値設定あり
:set option? display - ローカル値設定なし
:setlocal option? - display
:setglobal option? display -
ローカルな値を持つグローバルオプション global-local
オプションがグローバルであるというのは、一つの値を全てのバッファとウィンドウに
用いるような場合である。いくつかのグローバルオプションでは、ローカルな別の値を
持てると便利である。ローカルな値は、コマンド ":setlocal" で設定できる。すると
コマンド ":setlocal" を実行したバッファとウィンドウではローカルな値が用いられ
るが、他のバッファでは引き続きグローバルな値が用いられる。
例えば、あなたは2つのウィンドウを開き、両方でC言語のソースファイルを編集してい
るとする。グローバルなオプション 'makeprg' は両方に適用される。そこでウィンド
ウの片方で
:set makeprg=gmake
とすると、別のウィンドウでも同じ値が用いられる。別のウィンドウに移ってオプション 'makeprg' を設定する必要はない。
しかし、新しいウィンドウでPerlのソースファイルの編集を始めると、'makeprg' に別
の値を設定したくなる。しかしCソースに適用された値を変えたくはない。そんなとき
には次のようにする:
:setlocal makeprg=perlmake
次のようにローカルな値を空にすると、グローバルな値に戻る: :setlocal makeprg=
ただし、この方法は文字列オプションにしか使えない。数値または切替オプションには、次のように "<" フラグを使う必要がある:
:setlocal autoread<
Note: 非切替かつ非数値オプションの変更で "<" を使うと、グローバルな値がローカルな値にコピーされるが、それはグローバルな値を使うようにするのとは少し違うこと
に注意 (これは後でグローバルな値が変更されたときに問題になる。{訳注: グローバ
ルな値が変更されても、"<" でコピーした値までは変更されない。あくまでもローカル
な値だから})。次を使うこともできる:
:set path<
これは 'path' のローカルな値を空にし、グローバルな値が使われるようにする。すなわち、次と同じことをする:
:setlocal path=
Note: 将来的に、より多くのグローバルオプションが global-local になる可能性がある。そうなるとグローバルオプションに対する ":setlocal" の動作が変わるかもし
れない。
option-value-function
いくつかのオプション ('completefunc', 'findfunc', 'imactivatefunc',
'imstatusfunc', 'omnifunc', 'operatorfunc', 'quickfixtextfunc', 'tagfunc'
および 'thesaurusfunc') は関数名もしくは関数への参照もしくはラムダ関数を設定す
る。ラムダを使う場合は内部名へ変換される、例えば "<lambda>123"。
例:
set opfunc=MyOpFunc
set opfunc=function('MyOpFunc')
set opfunc=funcref('MyOpFunc')
set opfunc={a\ ->\ MyOpFunc(a)}
set opfunc=function('MyOpFunc')
set opfunc=funcref('MyOpFunc')
set opfunc={a\ ->\ MyOpFunc(a)}
スクリプトローカル関数を設定:
set opfunc=s:MyLocalFunc
set opfunc=<SID>MyLocalFunc
Vim9 script では、関数がスクリプト内に存在する場合、"s:" や "<SID>" を省略でset opfunc=<SID>MyLocalFunc
きる:
set opfunc=MyLocalFunc
関数への参照の変数を用いて設定:
let Fn = function('MyTagFunc')
let &tagfunc = Fn
let &tagfunc = Fn
ラムダ式を用いて設定:
let &tagfunc = {t -> MyTagFunc(t)}
ラムダ式を含む変数を用いて設定:
let L = {a, b, c -> MyTagFunc(a, b , c)}
let &tagfunc = L
let &tagfunc = L
Vim9 script において、コンパイル済み関数内では、ラムダを使うことができるが、ク
ロージャは動作しない。なぜなら、関数が定義された位置のコンテキストを持たずに呼
ばれることになるためである。
ファイルタイプの設定
:setf[iletype] [FALLBACK] {filetype} :setf :setfiletype
オプション 'filetype' に対して {filetype} を設定する。
ただし autocommand の中 (入れ子になっているときは、外
側も含めて) でまだ実行されていないときのみ有効である。
これは以下のコマンドの略である:
:if !did_filetype()
: setlocal filetype={filetype}
:endif
このコマンドは filetype.vim の中で使われ、オプション: setlocal filetype={filetype}
:endif
'filetype' が2度設定されて別の設定や構文ファイルが読み
込まれることがないようにしている。
任意の引数 FALLBACK が存在すると、後の :setfiletype コ
マンドは 'filetype' を上書きする。これはファイルタイプ
の決定を正確に推測するために使われる。did_filetype()
はこのコマンドの後では false を返すだろう。
option-window optwin
:bro[wse] se[t] :set-browse :browse-set :opt :options
:opt[ions] 全てのオプションを表示したり設定するためのウィンドウを
開く。
オプションは機能ごとにまとめられている。
ここではオプションの短い説明が読める。その上で <CR> を
打ち込むと、そのオプションについてのヘルプウィンドウが
開き、詳しい説明が読める。
表示されている値を修正した後に "set" 行の上で <CR> を
打ち込むと、新しい値を設定できる。ウィンドウやバッファ
固有のオプションについては、変更した値は最後に使用した
ウィンドウに適用される。そのウィンドウがヘルプウィンド
ウだったときは、変更した値はヘルプウィンドウの (オプショ
ンウィンドウを抜かして) 1つ下のウィンドウに適用される。
{+eval 機能付きでコンパイルされたときのみ有効}
$HOME
"~" は "$HOME" と同様に扱われるが、こちらは値の先頭にあるか、空白かコンマの後
にあるときのみ認識される。
Unix系のシステムでは "~user" も使える。これは "user" というユーザーのホームディ
レクトリに置き換えられる。例:
:set path=~mool/include,/usr/include,.
Unix系のシステムでは "${HOME}" という形式も使える。ここで {} の間には識別子に
使えない文字 {訳注: 上を参照} が入ってもよい。 Note これをコマンド "gf" のため
に使いたいなら、文字 '{' と '}' をオプション 'isfname' に追加する必要がある。
NOTE: 環境変数と "~/" の展開はコマンド ":set" のときのみ行われる。":let" でオ
プションに値を代入するときは展開されない。
$HOME-windows
MS-Windows では、$HOME 環境変数が定義されていない場合は Vim の起動時に
$HOMEDRIVE$HOMEPATH という値で定義される。
もしも $HOMEDRIVE が設定されていなければ $USERPROFILE が使われる。
この展開された値は環境変数にはエクスポートされない。これは外部コマンドを動作し
ているときに問題となる:
:echo system('set | findstr ^HOME=')
そして :echo luaeval('os.getenv("HOME")')
は、exists(’$HOME’) が真であるにもかかわらず何も出力しないだろう (空文字列)。$HOME に空ではない何らかの文字列を設定すると、それはサブプロセスにエクスポート
されるだろう。
Note 展開されるオプションの値の長さ制限に注意。システムごとに異なるが、大抵は
256文字や1024文字等の長さである {訳注: これは半角の場合で、全角では半分}。
:fix :fixdel
:fix[del] ターミナルオプション 't_kD' {訳注: デリートキー} の値
を設定する。
't_kb' が のとき 't_kD' は
CTRL-? CTRL-H
CTRL-?以外 CTRL-?
(CTRL-? は8進数で 0o177、16進数で 0x7f)
ターミナルのデリートキーのキーコードが違っているが、バッ
クスペースのキーコードは正しいときは、次のコマンドをファ
イル .vimrc に加えればよい:
:fixdel
これはバックスペースのキーコードが実際に何であっても有効である。
バックスペースのキーコードが違っていたら、以下のように
する:
:if &term == "termname"
: set t_kb=^V<BS>
: fixdel
:endif
ここで "^V" は CTRL-V、"<BS>" はバックスペースを表す: set t_kb=^V<BS>
: fixdel
:endif
(実際に「^」「V」などのキーを押さないこと)。"termname"
にはユーザーの使うターミナル名を当てはめる。
<Delete> キーが奇妙なキーコード列 (CTRL-? でも CTRL-H
でもない) を送るときは、コマンド ":fixdel" ではなく以
下の方法を使う:
:if &term == "termname"
: set t_kD=^V<Delete>
:endif
ここで "^V" は CTRL-V、"<BS>" はデリートキーを表す: set t_kD=^V<Delete>
:endif
(実際に「^」「V」などのキーを押さないこと)。"termname"
にはあなたの使うターミナルの種類を当てはめる。
Linux-backspace
Note Linuxについての注意: 既定ではバックスペースキーは
CTRL-? を送るが、これは違っている。これを修正するには、
ファイル rc.local に次の行を加える:
echo "keycode 14 = BackSpace" | loadkeys
NetBSD-backspace
Note NetBSDについての注意: バックスペースキーが正しい
キーコードを送らないとき、これを試すこと:
xmodmap -e "keycode 22 = BackSpace"
有効だったら、ファイル .Xmodmap に次の行を加えること: keysym 22 = BackSpace
これを有効にするには、再起動する必要がある。==============================================================================
2. オプションの自動設定 auto-setting
コマンド ":set" によるオプションの設定の他に、3通りの方法で、1つまたは複数のファ
イルに自動的にオプションを設定できる。
1. Vimを起動したとき、様々な場所から初期化設定を読み込ませることができる。
initialization を参照。多くの設定は編集セッション全てに適用されるが、いく
つかはVimを起動したディレクトリによって異なる。初期化設定ファイルはコマンド
:mkvimrc, :mkview, :mksession で生成できる。
2. 新しいファイルの編集を始めたとき、自動的に実行されるコマンドがある。
これを使うと、特定のパターンにマッチするファイルに対してオプションを設定し
たり、様々なことが可能である。autocommand を参照。
3. 新しいファイルの編集を始めたときオプション 'modeline' がオンなら、ファイル
の先頭と末尾の数行ずつがモードラインとして読み込まれる。それをここで説明す
る。
modeline vim: vi: ex: E520
モードラインには2つの形式がある。1つ目の形式は次の通りである。
[text{white}]{vi:|vim:|ex:}[white]{options}
[text{white}] 空または、1個以上の余白 (<Space> または <Tab>) が続く
任意のテキスト; "ex:" は常に少なくとも1個の空白が必要
{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列
[white] 空白、なくても良い
{options} オプション設定が、空白か ':' で区切られて並んだもので、
':' の間の部分はコマンド ":set" の引数である(空でもよい)
例:
vi:noai:sw=3 ts=6
vim: tw=77
2つ目の形式は次の通りである (Viのバージョンによってはこの形式と互換性がある)。
[text{white}]{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
[text{white}] 空または、1個以上の余白 (<Space> または <Tab>) が続く
任意のテキスト; "ex:" は常に少なくとも1個の空白が必要
{vi:|vim:|Vim:|ex:} "vi:" か "vim:" か "Vim:" か "ex:" という文字列
[white] 空白、なくても良い
se[t] "set " または "se " という文字列 (終わりの空白に注意);
"Vim" が使われているときは "set" でなければならない
{options} オプション設定が空白で区切られて並んだもので、コマンド
":set" の引数である
: コロン
[text] 任意のテキスト、なくても良い
例:
/* vim: set ai tw=75: */
/* Vim: set ai tw=75: */
{vi:|vim:|Vim:|ex:} の前には空白が必要である。これが "lex:" 等の普通の言葉を誤
認する可能性を低めている。ただし例外があり、"vi:" と "vim:" は行頭に来てもよい
(バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モードラインとは見なさ
れない ("example:" の略かもしれないから)。
モードラインの中でモードラインを無効にした場合、後続のモードラインは無視され
る。これはファイルごとにモードラインをオフにできるようにするためである。これは
行がモードラインに見えるがそうでない時に便利である。例えば "vim:" のような文字
列を含む YAML ファイルは次のように始めるとよい
# vim: nomodeline
これはモードラインの誤検出を回避する。モードラインが無効化後も、同じ行の後続の
オプションがあれば依然として評価される(通常は何もないだろうが)。
modeline-local
オプションは ":setlocal" を使った時のように設定される。つまり設定した値は、そ
のバッファとそれを開いているウィンドウにのみ適用される。モードラインからグロー
バルオプションを設定することは不可能ではないが、普通そういうことはしない。2つ
のウィンドウを開いていて、それぞれのファイルが同じグローバルオプションを違う値
に設定しようとしたときは、後に開かれたウィンドウが優先される。
既に読み込まれているファイルを開くときは、モードラインからはウィンドウローカル
なオプションだけが設定される。つまり、ファイルを開いた後に手動でバッファローカ
ルなオプションを変更したら、そのバッファを別なウィンドウで開いてもそのオプショ
ンは変更されないが、ウィンドウローカルなオプションは変更される。
modeline-version
モードラインの内容が、Vimのバージョンによって使用可能だったり不可能だったりす
る場合には、"vim:" または "Vim:" のところでバージョンを指定できる。
vim{vers}: バージョン {vers} 以降 (そのバージョンを含む)
vim<{vers}: バージョン {vers} より前
vim={vers}: バージョン {vers} のみ
vim>{vers}: バージョン {vers} より後 (そのバージョンを含まない)
{vers} に 700 を指定するとVim 7.0を表す (メジャー・バージョンナンバーの100倍足
すマイナー・バージョンナンバー)。
例えば、Vim 7.0でのみモードラインを使うにはこうする:
/* vim700: set foldmethod=marker */
Vim 7.2より新しいバージョンでのみモードラインを使うにはこうする:
/* vim>702: set cole=2: */
"vim" と ":" の間に空白があってはならない。
モードラインを探す行数はオプション 'modelines' で設定できる。オプション
'modeline' がオフであるかオプション 'modelines' の値が 0 だと、モードラインを
探さない。
Note 1番目の形式では、行全体がオプション指定に使われることに注意。そのため次の
ようにすると、行末の "*/" のためにエラーメッセージが現れる。
/* vi:ts=4: */
その代わり、こうすればよい。
/* vi:set ts=4: */
エラーが発見されると、その行の残りは無視される。
コマンド "set" の引数に ':' を含めたいときは、その前に '\' を置くこと。':' の
前の '\' は取り除かれる。例:
/* vi:set fillchars=stl\:^,vert\:\|: */
これはオプション 'fillchars' を "stl:^,vert:\|" に変更する。':' の前に '\' が
置かれたとき、取り除かれるのは1個だけである。だからオプションの値に "\:" を含
めたいなら "\\:" を指定すること。
E992
安全上の理由から、コマンド "set" 以外は使用できない (誰かがテキストファイルで
「トロイの木馬」を作るかもしれないから)。また、すべてのオプションを設定できる
わけではない。一部のオプションではフラグが設定されているため、値が使用されると
sandbox が有効になる。'modelineexpr' が設定されている場合、一部のオプション
はモードラインからしか設定できない。(デフォルトはオフ)
しかしそれでもモードラインが問題を引き起こす可能性はわずかに残る。例えば、悪意
のある誰かが 'textwidth' を5にすると、ファイルの全ての行が予期せず折り返されて
しまう。そのため、信用できないファイルを編集する前にはモードラインを無効にする
こと。例えばmail ftpluginはそれを行っている。
ヒント: ファイルを読み込みときにオプション設定以外を行いたいなら、ファイル内の
特定の文字列を調べる autocommand を定義すればよい。例:
au BufReadPost * if getline(1) =~ "VAR" | call SetVar() | endif
そして "VAR" を含む行に何かを行うための SetVar() 関数を定義すればよい。==============================================================================
3. オプションの要約 option-summary
以下のリストでは、全てのオプションが、正確な名前と (あれば) 略名で示されている。
どちらの形を使ってもよい。
この文書内では、切替オプションを「オンに」するというのは ":set オプション" を
実行することを表す。切り替えオプションを「オフに」するというのは
":set noオプション" を実行することを表す。
いくつかのオプションには、既定値が2種類あるものがある: 1つ目は "Vim default"
つまりVimの既定値で、オプション 'compatible' がオフになっているときに使われる。
2つ目は "Vi default" つまりViの既定値で、オプション 'compatible' がオンになっ
ているときに使われる。
ほとんどのオプションは全てのウィンドウやバッファで共通である。さてその中には、
テキストがウィンドウ内でどのように表示されるかを定めるものもある。そういったオ
プションは、ウィンドウごとに違う値にできる。例えばオプション 'list' は、あるウィ
ンドウ内でオンにしても、同じテキストを編集している別のウィンドウ内ではオフに
することができる。すると同時に違った表示方法が使える。また、ファイルごとに特定
の値にできるオプションもある。そういったオプションは、ファイルごとまたはバッファ
ごとに違う値にできる。例えばオプション 'textwidth' は、通常のテキストファイル
には78にし、Cプログラムのファイルには0にするようにできる。
グローバル:
一つのオプションが全てのバッファやウィンドウに対して適用される
ウィンドウについてローカル:
ウィンドウがそれぞれ、そのオプションのコピーを独自に持つ
バッファについてローカル:
バッファがそれぞれ、そのオプションのコピーを独自に持つ
{訳注: 上の項目については、文書先頭も参照}
新しいウィンドウを開くとき、ウィンドウ固有のオプションには、その前にアクティブ
だったウィンドウでの値がまず使われる。バッファ固有のオプションは、オプション
'cpoptions' のフラグ 's' とフラグ 'S' によって違ってくる。フラグ 's' が含まれ
ていると (既定ではこうなっている)、新しいバッファが最初にアクティブになったと
きに、その前にアクティブだったバッファでの値がコピーされる。フラグ 'S' が含ま
れていると、バッファがアクティブになる度に値がコピーされる。これはグローバルオ
プションであるようなものである。フラグ 's' もフラグ 'S' も含まれていないときは、
バッファが作られるときに、その前にアクティブだったバッファでの値がコピーされる。
隠しオプション hidden-options
全てのオプションが全てのバージョンでサポートされているわけではない。これは有効
にされている機能とシステムにもよる。これに関しての注意は以下の波括弧の中にある。
もしあるオプションがサポートされていなくても、そのオプションへの設定はエラーに
ならず成功する。これを隠しオプションと呼ぶ。しかし隠しオプションの値は保持され
ていないため、取得することはできない。
オプション "foo" が ":set" で設定できるかどうか判定するにはこのようにする:
if exists('&foo')
これは隠しオプションに対してもtrueを返す。オプション "foo" が本当にサポートされているかを判定するにはこのようにする:
if exists('+foo')
E355
Q_op にはオプションの短い説明付きの表があり、そこからヘルプにジャンプできる。
'aleph' 'al' aleph Aleph
'aleph' 'al' 数値 (既定値はMS-Windowsでは128、それ以外では224)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
ヘブライ語アルファベットの最初の文字を表すASCIIコード。挿入モード(オプ
ション 'hkmap' がオンのとき) と コマンドラインモード (CTRL-_ を打ち込
んだとき) の両方において、ヘブライモードのキーボード配列をマッピングす
るルーチンは、[aleph..aleph+26] の範囲のヘブライ文字を出力する。
'aleph'=128 はPCコード、'aleph'=224 は ISO 8859-8 に使われる。
rileft.txt を参照。
'allowrevins' 'ari' 'noallowrevins' 'noari'
'allowrevins' 'ari' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
挿入モードとコマンドラインモードで CTRL-_ を使用可能にする。これは既定
ではオフになっている。ユーザーが間違って SHIFT-_ ではなく CTRL-_ を打
ち込み、右から左に書いていくモードに入って抜けられなくなる事態を防ぐた
めである。オプション 'revins' を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'altkeymap' 'akm' 'noaltkeymap' 'noakm'
'altkeymap' 'akm' 切替 (既定ではオフ)
グローバル
{+farsi 機能付きでコンパイルされたときのみ有効}
このオプションはペルシア語を使うためのもので、削除された。farsi.txt
を参照。
'ambiwidth' 'ambw'
'ambiwidth' 'ambw' 文字列 (既定では "single")
グローバル
'encoding' が "utf-8" などUnicodeエンコーディングのときのみ効果がある。
East Asian Width Class Ambiguous な文字(ユーロ、登録商標記号、著作権記
号、ギリシャ文字、キリル文字など)をどう扱うかを定める。
現在のところ、設定可能な値は次の2通りである:
"single": US-ASCIIの文字と同じ幅を使う。これはほとんどのユーザー
にとって期待どおりになる。
"double": ASCII文字の2倍の幅を使う。
E834 E835
"double" は 'listchars' や 'fillchars' に指定された文字が全角幅になっ
てしまう場合は使えない。このエラーはまた setcellwidths() を呼ぶことで
も発生するかもしれない。
この値は setcellwidths() で指定された文字では無視される。
これらの文字のグリフの幅を、旧い/伝統的なCJKエンコーディングで何オク
テットを占めるかだけによって決めているCJKフォントがたくさんある。その
エンコーディングではユーロ、登録商標記号、ギリシャ文字、キリル文字は2
オクテットで表現されるので、それらのフォントはこれらの文字に「wideな」
グリフを当てている。これはテキストファイルで表を作るための罫線文字にも
あてはまる。そのためGUI版のVimにCJKフォントを使うときや、CJKフォント
を使うターミナル(エミュレータ)の中でVimを実行するとき(またはオプション
"-cjkwidth" つきで起動されたxtermの中でVimを実行するとき)にはこのオプ
ションを "double" にして、Vimが認識する幅をフォントのグリフの幅に合わ
せなければならない。CJKのMS-WindowsでもシステムのロケールがCJKロケール
のどれかに設定されている場合は多分 "double" にしなければならないだろ
う。
Unicode Standard Annex #11 (http://www.unicode.org/reports/tr11)を参照。
Vim が +termresponse 機能付きでコンパイルされ、t_u7 にカーソル位置
取得のためのエスケープシーケンスが設定されているとき、このオプションの
値は Vim の起動時に自動的に設定される。レスポンスは v:termu7resp の
中に見つけることができる。
'antialias' 'anti' 'noantialias' 'noanti'
'antialias' 'anti' 切替 (既定ではオフ)
グローバル
{VimがmacOSでGUIを有効にしてコンパイルされたときのみ有
効}
このオプションはmacOS v10.2以降の上でGUI版のVimを使うときだけ効果があ
る。これがオンであるとなめらかな(アンチエイリアスされた)フォントが使わ
れる。このフォントはある種のディスプレイ上、あるサイズでは読み易くな
る。
'guifont' が既定値(空文字列)のときこのオプションを設定すると問題が発生
することがある。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'arabic' 'arab' 'noarabic' 'noarab'
'arabic' 'arab' 切替 (既定ではオフ)
ウィンドウについてローカル
{+arabic機能付きでコンパイルされたときのみ有効}
アラビア語のテキストを編集するときにこのオプションを設定することができ
る。
このオプションを設定すると次のことが行われる:
- 'termbidi' がオンでない限り、オプション 'rightleft' をオンにする。
- 'termbidi' がオンでない限り、オプション 'arabicshape' をオンにする。
- オプション 'keymap' を "arabic" に設定する。これによって挿入モードで
CTRL-^を押すと英語とアラビア語のキーマッピングがトグルする。
- オプション 'delcombine' をオンにする。
アラビア語のテキストを編集するには 'encoding' が "utf-8" でなければな
らないことに注意。
このオプションをオフにすると次のことが行われる:
- 'rightleft' をオンにする
- 'keymap' の使用を無効にする(その値は変更しない)
'arabicshape' と 'delcombine' はオフにならない(これらはグローバルオプ
ションである)。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
arabic.txtも参照。
'arabicshape' 'arshape'
'noarabicshape' 'noarshape'
'arabicshape' 'arshape' 切替 (既定ではオン)
グローバル
{+arabic 機能付きでコンパイルされたときのみ有効}
これがオンで 'termbidi' がオフになっているとアラビア語を表示するのに必
要な文字表示補正が行われる。本質的には字形作成(shaping)が有効になる。
この用語は次の事を含む広い用語である。
a) 単語の中の位置(初期、中間、最終、孤立)によって文字を変更/変形させ
る。
b) 文字合成機能の有効化
c) ある文字の組み合わせの有効化
これが無効になっていると、表示がそれぞれの文字の本来の孤立形になる。
アラビア語は他にも設定が必要な複雑な言語である。より詳しくは
arabic.txtを参照。
NOTE: このオプションは、'compatible' がオンになるとオンになるので注意。
'autochdir' 'acd' 'noautochdir' 'noacd'
'autochdir' 'acd' 切替 (既定ではオフ)
グローバル
{Vimのコンパイル時に有効にされたときのみ有効。使用で
きるかどうかは exists("+autochdir") で確認できる}
これがオンであるとファイルを開くとき、バッファを切り替えるとき、バッファ
を削除するとき、ウィンドウを開閉するときに毎回作業ディレクトリが変更さ
れる。開かれた/選択されたファイルを含んでいるディレクトリがカレント
ディレクトリになる。
無名バッファの場合、ディレクトリもないため、そのバッファに移動してもカ
レントディレクトリは変更されない。
Note: このオプションがオンになっていると動かないプラグインがある。
'autoindent' 'ai' 'noautoindent' 'noai'
'autoindent' 'ai' 切替 (既定ではオフ)
バッファについてローカル
新しい行を開始したとき (挿入モードで <CR> を打ち込むか、コマンド "o"
や "O" を使ったとき)、新しい行のインデントを現在行と同じくする。新しい
行で <BS> か CTRL-D 以外を打ち込まずに <Esc>、CTRL-O か <CR> を打ち込
むと、その行のインデントは削除される。'cpoptions' にフラグ 'I' が入っ
ていないかぎり、カーソルを他の行に移動させても同様である。
オプション 'autoindent' がオンのときは、テキストの整形処理 (コマンド
"gq" を使ったり、挿入モードで 1行の文字数がオプション 'textwidth' で指
定した数に届いたとき) には最初の行のインデントが使われる。
オプション 'smartindent' かオプション 'cindent' がオンのときは、インデ
ントの方法は違ってくる。
オプション 'autoindent' はオプション 'paste' がセットされたらリセット
され、オプション 'paste' がリセットされたら復元される。
'autoread' 'ar' 'noautoread' 'noar'
'autoread' 'ar' 切替 (既定ではオフ)
グローバル/バッファについてローカル global-local
ファイルがVimの内部では変更されてないが、Vimの外部で変更されたことが判
明したとき、自動的に読み直す。ファイルが削除されたときにはこれは行われ
ないので、削除される前のテキストが保持される。ファイルが再度現れた場
合、それを読み込む。timestamp
このオプションがローカルな値を持つとき、再びグローバルな値を使うように
するには次のようにする:
:set autoread<
'autoshelldir' 'asd' 'noautoshelldir' 'noasd'
'autoshelldir' 'asd' 切替 (既定ではオフ)
グローバル
オンの時、Vim は端末ウィンドウで動いているシェルのディレクトリが変更さ
れる度に、現在のワーキングディレクトリを変更する。適切な設定がされる必
要があり、シェルが pwd を変更する度に OSC 7 エスケープシーケンスを出力
しないといけない。例として、Linuxなら、あなたのシェルが bash か zsh の
場合 profile で /etc/profile.d/vte.sh を読み込むことができる。
bash の場合は、これでうまくいくはずだ (bash init ファイルに記述する):
if [[ -n "$VIM_TERMINAL" ]]; then
PROMPT_COMMAND='_vim_sync_PWD'
function _vim_sync_PWD() {
printf '\033]7;file://%s\033\\' "$PWD"
}
fi
PROMPT_COMMAND='_vim_sync_PWD'
function _vim_sync_PWD() {
printf '\033]7;file://%s\033\\' "$PWD"
}
fi
または、zsh init ファイルに記述する:
if [[ -n "$VIM_TERMINAL" ]]; then
autoload -Uz add-zsh-hook
add-zsh-hook -Uz chpwd _vim_sync_PWD
function _vim_sync_PWD() {
printf '\033]7;file://%s\033\\' "$PWD"
}
fi
autoload -Uz add-zsh-hook
add-zsh-hook -Uz chpwd _vim_sync_PWD
function _vim_sync_PWD() {
printf '\033]7;file://%s\033\\' "$PWD"
}
fi
fish init ファイルに記述する:
if test -n "$VIM_TERMINAL"
function _vim_sync_PWD --on-variable=PWD
printf '\033]7;file://%s\033\\' "$PWD"
end
end
function _vim_sync_PWD --on-variable=PWD
printf '\033]7;file://%s\033\\' "$PWD"
end
end
別の方法は terminal-autoshelldir にある。
OSC シーケンスのパースに失敗したときは E1179 になる。
'autowrite' 'aw' 'noautowrite' 'noaw'
'autowrite' 'aw' 切替 (既定ではオフ)
グローバル
コマンド :next, :rewind, :last, :first, :previous, :stop,
:suspend, :tag, :!, :make, CTRL-], CTRL-^ を実行したときや、コ
マンド :buffer, CTRL-O, CTRL-I, '{A-Z0-9}, `{A-Z0-9} の移動先が別の
ファイルのとき、ファイルが変更されているなら書き込む。
バッファが書き込まれないのは隠れバッファになったときで、例えば
'bufhidden' が "hide" に設定されていて :next が使われたとき。
Note 'autowrite' が適用されないコマンドもあることに注意。それについて
はオプション 'autowriteall' を参照。
いくつかのバッファは書き込まれない。具体的には 'buftype' が "nowrite",
"nofile", "terminal" または "prompt" の時である。
使用上の注意: 保存したくないバッファに一時的な変更を加えた場合、このオ
プションを使用するとバッファが保存されてしまう可能性がある。":file
{name}" でバッファ名を変更すると、これを回避できる場合がある。
'autowriteall' 'awa' 'noautowriteall' 'noawa'
'autowriteall' 'awa' 切替 (既定ではオフ)
グローバル
オプション 'autowrite' と似ているが、さらにコマンド ":edit", ":enew",
":quit", ":qall", ":exit", ":xit", ":recover" を実行したときや、Vimの
ウィンドウを閉じるときも、ファイルが変更されているなら保存する。このオ
プションをオンにすると、同時に 'autowrite' もオンになったような動作に
なる {訳注: このオプションは 'autowrite' の適用されるコマンド全てに適
用されるので}。
'background' 'bg'
'background' 'bg' 文字列 (既定は "dark" または "light"、下記参照)
グローバル
値が "dark" のときは、Vimは暗い背景によく合う色を使おうとする。値が
"light" のときは、Vimは明るい背景によく合う色を使おうとする。その他の
値は無効である。
Vimは使われているターミナルの種類に従って既定の値を定めるが、常に正し
いとは限らない。
このオプションを変更しても背景色は変わらない。これはただVimに背景色が
どのようなものかを伝えるだけである。背景色の変更には :hi-normal を参
照。
オプション 'background' が変更されると、Vimは既定の色設定グループをそ
の値に合わせて調整する。しかし構文強調表示に使われる色設定は変化しな
い。 g:colors_name
カラースキームが読み込まれているとき (つまり変数 "g:colors_name" が設
定されているとき) 'background' を変更するとカラースキームが再び読み込
まれる。カラースキームが 'background' に対応していればこれは適用され
る。しかしカラースキームが 'background' 自体を設定しているときは効果が
ない。必要ならば変数 "g:colors_name" を消去すること。
'background' を次のようにして既定値に戻したとき、
:set background&
Vimはその値を推測する。GUI版ならばうまくいくはずだが、そうでなければ正しい値を推測できないかもしれない。
GUIがダークテーマをサポートしている場合、'guioptions' で "d" フラグを
使用できる。'go-d' を参照。
t_RB オプションが設定されると、Vim はターミナルから背景色をリクエスト
するために使われる。もしも返された RGB の値が dark/light であり、
'background' が dark/light でなかったなら、'background' が設定されて画
面が再描画される。これは副作用があるかもしれない。問題があると疑わしき
場合は、.vimrc の t_BG を空にしよう。t_RB へのレスポンスは
v:termrbgresp の中に見つけることができる。
GUIを開始したとき、'background' の既定値は "light" である。値がファイ
ル .gvimrc で定められておらず、Vimが背景色は実際は暗いと判断したときは、
'background' は "dark" になる。しかしこれは .gvimrc が読み込まれた「後」
に行われる (実際の背景色を知るためにウィンドウが開かれる必要があるか
ら)。これを避けるには、コマンド ":gui" を .gvimrc の中の 'background'
の値が使われる前に置いて (例えば ":syntax on" の前) GUIウィンドウを強
制的に開かせればよい。
MS-Windows では初期設定は "dark" である。
他のシステムでは 'term' が "linux"、"screen.linux"、"cygwin"、または
"putty" であるか、$COLORFGBG によって暗い背景が推奨されていれば初期設
定は "dark" になる。そうでなければ初期設定は "light" である。
:terminal コマンドと term_start() 関数は、ターミナルウィンドウが白
もしくは黒の背景でスタートするかどうかを決めるために 'background' の値
を使う。
通常、このオプションは .vimrc 内で設定される。おそらく、設定はターミナ
ルの名前に依存する。例:
:if &term == "pcterm"
: set background=dark
:endif
このオプションが設定されると、強調表示の既定の設定が変更される。他の設: set background=dark
:endif
定を使いたいなら、'background' を設定した「後」にコマンド ":highlight"
を置くこと。
このオプションはファイル "$VIMRUNTIME/syntax/syntax.vim" 内でも、構文
強調表示のための色を選択するのに使われる。このオプションを設定した後は
syntax.vim を再読み込みしないと結果が分からない。これにはコマンド
":syntax on" を実行すればよい。
'backspace' 'bs'
'backspace' 'bs' 文字列 (既定では ""、defaults.vim 内で
"indent,eol,start" にセットされる)
グローバル
挿入モードでの <BS>, <Del>, CTRL-W, CTRL-U の働きに影響する。値はキー
ワードのコンマ区切りのリストである。それぞれのキーワードがバックスペー
スの働く対象を定めている。
値 効果
indent autoindent を超えてバックスペースを働かせる
eol 改行を超えてバックスペースを働かせる (行を連結する)
start 挿入区間の始めでバックスペースを働かせるが CTRL-W と CTRL-U は
挿入区間の始めでいったん止まる
nostop start に似ているが CTRL-W と CTRL-U は挿入区間の始めで止まらな
い
値が空のときは、バックスペースの働きはVi互換になり、上記で述べている項
目の方法はどれも不可能となる。
バージョン 5.4 またはそれ以前との互換性を保つには次のようにする。
値 効果
0 ":set backspace=" と同じ (Vi互換)
1 ":set backspace=indent,eol" と同じ
2 ":set backspace=indent,eol,start" と同じ
3 ":set backspace=indent,eol,nostop" と同じ
<BS> や <Del> で望み通りの動作ができないときは :fixdel を参照。
NOTE: このオプションは、'compatible' がオンになると "" になるので注意。
'backup' 'bk' 'nobackup' 'nobk'
'backup' 'bk' 切替 (既定ではオフ)
グローバル
ファイルを上書きする前にバックアップを作る。書き込みが成功してもバック
アップはそのまま取っておく。バックアップを取っておきたくはないが、書き
込み中にはバックアップが欲しいときには、このオプションをオフにしてオプ
ション 'writebackup' をオンにすること (既定ではそうなっている)。全くバッ
クアップが要らないなら両方をオフにすること (ユーザーのファイルシステム
がほとんど満杯ならこうするとよい)。詳しくは backup-table を参照。
どちらにしてもオプション 'backupskip' のパターンがマッチすると、バック
アップは作られない。オプション 'patchmode' がオンのときは、バックアッ
プはリネームされてファイルの最も古いバージョンになることがある。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'backupcopy' 'bkc'
'backupcopy' 'bkc' 文字列 (UnixでのViの既定値: "yes"、それ以外: "auto")
グローバル/バッファについてローカル global-local
ファイルの書き込みをしてバックアップが作られるとき、その方法をこのオプ
ションで指定する。このオプションはコンマで区切られた単語のリストである。
主な値は次の通り:
"yes" 先にファイルのコピーを作ってバックアップにして、更新した内容は
元のファイルに上書きする
"no" 先に元のファイルをリネームしてバックアップにして、更新した内容
は新しいファイルに書き出す
"auto" どちらか適切な方を選ぶ
次の値を上のどれか1つと組み合わせることができる:
"breaksymlink" は書き込み時に常にシンボリックリンクを切る。
"breakhardlink" は書き込み時に常にハードリンクを切る。
{訳注:
$ ls -lF
total 2
-rw-r--r-- 1 ao ao 24 9 17 12:26 hontai
lrwxr-xr-x 1 ao ao 6 9 17 12:29 l@ -> hontai
となっているとき、ファイルlを編集して:wすると、
backupcopy=auto の場合:
-rw-r--r-- 1 ao ao 24 9 17 12:26 l~
lrwxr-xr-x 1 ao ao 6 9 17 12:29 l@ -> hontai
-rw-r--r-- 1 ao ao 27 9 17 12:31 hontai
backupcopy=auto,breaksymlink の場合:
-rw-r--r-- 1 ao ao 27 9 17 12:26 hontai
lrwxr-xr-x 1 ao ao 6 9 17 12:29 l~@ -> hontai
-rw-r--r-- 1 ao ao 30 9 17 12:32 l
という結果になる。}
ファイルのコピーを作ってから元のファイルを上書きする方法:
X ファイルのコピーに余計な時間がかかる。
O 編集したファイルが特別な属性を持っていたり、ファイルがハードリンクや
シンボリックリンクであったり、リソースフォークを持っているときでも、
全て元のまま保たれる。
X 編集したファイルがリンクのとき、バックアップの名前がリンク先の文書の
名前でなく、リンクの名前になってしまう。
ファイルをリネームしてから新しいファイルに書き出す方法:
O 高速である。
X 時々、元のファイルの属性の一部しか新しいファイルにコピーされないこと
がある。
X 編集したファイルがリンクのとき、新しいファイルはリンクにならない。
"auto" の値にすると折衷策を採る。Vimが副作用なしにそのファイルでリネー
ムの方法が使えると判断したとき (属性がコピーでき、ファイルがリンクでな
いとき) は、そちらが使われる。それでは問題がありそうなときはコピーの方
法が使われる。
"breaksymlink" と "breakhardlink" の値は "yes", "no", "auto" のどれと
も組み合わせることができる。これらが含まれていると、必ず "no" とまった
く同じようにシンボリックリンクやハードリンクを切るようになり、元のファ
イルがそのままバックアップになり、新しいファイルが作成される。これは例
えば全てのファイルがシンボリックリンクやハードリンクになっているソース
ツリーで便利である。変更がローカルのソースツリーに対してだけ行われ、元
のソースツリーには反映されない。
crontab
"no" と "auto" では問題が起きる場合がある。プログラムによっては、ファ
イルを開き、Vimを呼び出してそのファイルを編集させ、(ファイル区別プログ
ラムを使って) そのファイルが変更されたかどうかを調べるものがある。そう
したプログラムは新しく書き出されたファイルではなく、バックアップファイ
ルの方を調べてしまう。"crontab -e" は例であり、inotify のようないくつ
かの file-watcher デーモンも同様である。その場合は、このオプションを
切り替える必要があるだろう。
コピーの方法のときは、元のファイルの中身はいったん空になり、そこに新し
いテキストが書き込まれる。つまり、元のファイルの保護ビット、ファイル所
有者やシンボリックリンクは変更されない。しかし、バックアップファイルは
新しく作られることになり、ファイルを編集したユーザーの所有となる。また
バックアップファイルの属するグループは、元のファイルと同じグループにな
る。これが失敗すると、他の属性と同様に、そのグループの保護ビットが設定
される。
リネームのとき、逆の結果になる。バックアップファイルは元のファイルと同
じ属性を持ち、新しく書き出されたファイルは、ファイルを編集したユーザー
の所有となる。開いたファイルがハードリンクまたはシンボリックリンクだっ
た場合でも、新しく書き出されたファイルはリンクにならない!だから値が
"auto" のとき、ファイルがリンクならリネームを行わないのである。
新しく書き出されたファイルの所有者と属するグループは、元のファイルと同
じとして設定される。しかしシステムがこうすることを許可しないかもしれな
い。その場合、値が "auto" ならもうファイルのリネームをしようとはしな
い。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'backupdir' 'bdir'
'backupdir' 'bdir' 文字列 (Amigaでの既定値: ".,t:",
Win32での既定値: ".,$TEMP,c:/tmp,c:/temp"
Unixでの既定値: ".,~/tmp,~/")
グローバル
値は、バックアップファイル用ディレクトリの、コンマ区切りのリストである。
- バックアップファイルは、リスト内の、使用可能な最初のディレクトリの中
に作られる。Vim はそのディレクトリを作成しないので、存在していなけれ
ばならない。
- 値が空だと、バックアップファイルは作られない ('patchmode' は使えな
くなる!)。そのため書き込みが失敗するかもしれない。
- ディレクトリに "." を指定するのは、バックアップファイルを、編集され
たファイルと同じディレクトリに作るということである。
- ディレクトリが "./" (MS-Windowsでは ".\") で始まるのは、バックアップ
ファイルを作るディレクトリを、編集されたファイルとの相対的な位置で決
めるということである。最初の "." は編集されたファイルのパス名で置き
換えられる。(ディレクトリ名の内部の "." には特別な意味はない)
- コンマの後の空白は無視されるが、他の場所の空白はディレクトリ名の一部
と見なされる。ディレクトリ名の先頭に空白を使いたいなら、その空白の前
に '\' を置くこと。
- ディレクトリ名にコンマを使いたいなら、そのコンマの前に '\' を置くこ
と。
- ディレクトリ名は '/' で終わってもよい。
- UnixとWin32では、指定されたディレクトリ名の末尾がディレクトリの区切
り記号2個("//")で終わっていたら、バックアップファイルの名前はフルパ
スに従って付けられる。バックアップファイルのファイル名をフルパス形式
で表し、ディレクトリの区切り文字をパーセント記号 '%' で置き換えたも
のが使われる。こうするとバックアップファイル格納用ディレクトリの中で
もファイル名の一意性が保証される。
Win32では、"\\" で終わることも可能である。ただし、区切り文字のコンマ
の前では "\\" でなく "//" と書かなければならない。"\\" と書くと、コ
ンマがファイル名の一部と解釈されてしまうためである。したがって、'\\'
の代わりに '//' を使用することを勧める。
- 環境変数は展開される :set_env。
- 文字 '\' には注意。空白の前には1個置き、オプションの値に '\' 自身を
含めるなら2個置く (option-backslash を参照)。例:
:set bdir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
{訳注: 結果は backupdir=c:\tmp, dir\,with\,commas,\ dir with space}- Vim version 3.0 との後方互換性のため、値の先頭の '>' は取り除かれる。
オプション 'backup' および 'writebackup' も参照。
Unixでユーザーのバックアップファイルを隠したいなら、次のようにしてみる
こと:
:set backupdir=./.backup,~/.backup,.,/tmp
この方法を使うには、それぞれのディレクトリとあなたのホームディレクトリにディレクトリ ".backup" を作らなければならない。
リストにディレクトリを追加するときにはコマンド :set+=、リストからディ
レクトリを除くときにはコマンド :set-= を使うのがよい。こうすると将来
のバージョンで異なった既定値が使われるようになったときに、問題が起きる
のを防げる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'backupext' 'bex' E589
'backupext' 'bex' 文字列 (既定では "~", VMSでは "_")
グローバル
バックアップファイルの名前を作る際、元のファイル名の後ろに付け加える文
字列。既定では普段使いそうもないものに定めてあるが、これは既存のファイ
ルをバックアップファイルで上書きするのを避けるためである。".bak" を使
いたいかもしれないが、大事なファイルに ".bak" で終わるものがないか確か
めること。
通常のファイル名文字だけ使える。"/\*?[|<>" は不正である。
たくさんのバックアップを残しておきたいなら、自動コマンドBufWritePreを
使ってファイルを書き込む直前に 'backupext' にタイムスタンプを含めるよ
うに変更するとよい。
:au BufWritePre * let &bex = '-' .. strftime("%Y%b%d%X") .. '~'
バックアップを別のディレクトリに保存させるには、オプション 'backupdir'を設定すること。
'backupskip' 'bsk'
'backupskip' 'bsk' 文字列 (既定では "$TMPDIR/*,$TMP/*,$TEMP/*"
Unix: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*"
Mac: "/private/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*")
グローバル
ファイル名のパターンのリスト。書き込みをするファイルの名前にマッチする
パターンがこの中にあれば、そのファイルのバックアップは作られない。ファ
イル名を指定してもよいし、ファイルのフルパスを指定 {訳注: C:/temp/* 等
の方法。既定値ではこの方法で一時ファイル用のディレクトリを指定し、一時
ファイルのバックアップを作らないようにしている} してもよい。
パターンの指定方法は :autocmd と同じである。autocmd-patterns を参
照。特別な文字に注意するために option-backslash を参照。
環境変数の$TMPDIR, $TMP または $TEMP が定義されていないとき、それらは
既定値に使われない。"/tmp/*" はUnixでのみ使われる。
警告: バックアップファイルを作らないということは、すなわち、何らかの理
由で Vim がバッファを正しく保存できなかったときに、そのまま Vim を終了
してしまうと、あなたは元のファイルと新しく書いた内容の両方を失うという
ことを意味する。ファイルを失っても問題ないという場合のみバックアップを
無効化すること。
環境変数は展開されない。$HOMEを使いたい場合は、明示的に展開しなければ
ならない。例:
:let &backupskip = escape(expand('$HOME'), '\') .. '/tmp/*'
既定値は "crontab -e" が正常に機能するように定められている(元のファイ
ルをリネームすることによってバックアップを作ると、crontabは新しく作ら
れたファイルを参照しない)。'backupcopy' とcrontabも参照。
'balloondelay' 'bdlay'
'balloondelay' 'bdlay' 数値 (既定では 600)
グローバル
{+balloon_eval 機能付きでコンパイルされたときのみ有
効}
バルーン表示が出るまでの時間 (ミリ秒単位)。balloon-eval を参照。
'ballooneval' 'beval' 'noballooneval' 'nobeval'
'ballooneval' 'beval' 切替 (既定ではオフ)
グローバル
{+balloon_eval 機能付きでコンパイルされたときのみ有
効}
GUI 向けに balloon-eval 機能を働かせる。
'balloonevalterm' 'bevalterm' 'noballoonevalterm'
'nobevalterm'
'balloonevalterm' 'bevalterm' 切替 (既定ではオフ)
グローバル
{+balloon_eval_term 機能付きでコンパイルされたときの
み有効}
端末向けに balloon-eval 機能を働かせる。
'balloonexpr' 'bexpr'
'balloonexpr' 'bexpr' 文字列 (既定では "")
グローバル/バッファについてローカルglobal-local
{+balloon_eval機能付きでコンパイルされたときのみ有効}
バルーンウィンドウに表示するテキストの式。'ballooneval' か
'balloonevalterm' がオンのときのみ使われる。以下の変数を使用できる:
v:beval_bufnr バルーンを表示するバッファの番号
v:beval_winnr ウィンドウの番号
v:beval_winid ウィンドウの ID
v:beval_lnum 行番号
v:beval_col 桁番号(バイトインデックス)
v:beval_text マウスポインタの下、または後ろにある単語
プレーンテキストに限定されたバルーンを表示する代わりに、ポップアップ
ウィンドウの使用を検討してほしい。popup_beval_example を参照。ポップ
アップウィンドウでは、ハイライトを使用してボーダーを表示できる。
この式の評価には副作用があってはならない。
例:
function MyBalloonExpr()
return 'Cursor is at line ' .. v:beval_lnum ..
\ ', column ' .. v:beval_col ..
\ ' of file ' .. bufname(v:beval_bufnr) ..
\ ' on word "' .. v:beval_text .. '"'
endfunction
set bexpr=MyBalloonExpr()
set ballooneval balloonevalterm
return 'Cursor is at line ' .. v:beval_lnum ..
\ ', column ' .. v:beval_col ..
\ ' of file ' .. bufname(v:beval_bufnr) ..
\ ' on word "' .. v:beval_text .. '"'
endfunction
set bexpr=MyBalloonExpr()
set ballooneval balloonevalterm
balloon_show() も参照。バルーンの内容を非同期に取り込む場合に使うこ
とができる。その場合、'balloonexpr' を評価すると、空の文字列が返され
る。"0" のみのバルーンを取得した場合、おそらく関数から何も返されていな
い。
NOTE: バルーンはカーソルがテキスト文字の上にあるときだけ表示される。
'balloonexpr' を評価した結果が空でないなら、Vimは外部デバッガ(Netbeans
またはSun Workshop)にメッセージを送ろうとしない。
式が s: か <SID> で始まる場合、スクリプトID(local-function) に置き
換えられる。例:
set bexpr=s:MyBalloonExpr()
set bexpr=<SID>SomeBalloonExpr()
そうでない場合、式はオプションが設定されたスクリプトのコンテキストで評set bexpr=<SID>SomeBalloonExpr()
価され、その結果スクリプトローカルな要素を使用できる。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'balloonexpr' を評価している間は、テキストの変更や他のウィンドウへの
ジャンプをすることは許されない。textlock を参照。
バルーンのテキスト中の改行が機能するかを調べるにはこれを使う:
if has("balloon_multiline")
これがサポートされているなら文字列 "\n" は新規行を開始する。この式を評価した結果がリストListになる場合は、そのリストの各要素を文字列とし、
それらの間に "\n" を置くのと同じことになる。
NOTE: このオプションは、'compatible' がオンになると "" になるので注意。
'belloff' 'bo'
'belloff' 'bo' 文字列 (既定では "")
グローバル
ベルを鳴らさないようにするイベントを指定する。これはコンマ区切りのアイ
テムのリストである。指定したアイテムにおいてベルは沈黙する。これは、挿
入モードにおいて特定のイベントで沈黙するように指定できることが最も有用
である。
'visualbell' を使うことでフラッシュにすることもできる。
アイテム 指定した時の意味
all 全てのイベント。
backspace <BS> か <Del> を打ち込んだ時、削除結果にエラーがある。
cursor Insert-mode でカーソルキーか <PageUp>/<PageDown> を使用
して移動することができない。
complete i_CTRL-X_CTRL-K か i_CTRL-X_CTRL-T を使用した時にエ
ラーが発生した。
copy i_CTRL-Y か i_CTRL-E を使用して挿入モードから文字がコ
ピーできない。
ctrlg 挿入モードで <C-G> の後に不明な文字。
error その他のエラーが発生した。(例えば、最終行で行連結を試みた)
(主に Normal-mode か Cmdline-mode で使用される)
esc Normal-mode で <Esc> を打ち込んだ。
ex Visual-mode で Q を打ち込んだ結果エラーが発生した。
hangul 無視される。
insertmode 'insertmode' で <Esc> を押した。
lang Lua/Mzscheme/TCL のためにビープモジュールを呼び出す。
mess g< で利用可能な出力がない。
showmatch 'showmatch' 機能でエラーが発生した。
operator 空の範囲エラー。cpo-E
register Insert-mode で <C-R> の後に不明なレジスタ。
shell シェルの出力からのベル。:!
spell スペルの提案でエラーが起こった。
term :terminal の出力からのベル。
wildmode cmdline-completion でより多くの一致が利用可能。
('wildmode' の設定に依存する)
これは挿入モードでベルを鳴らさなければならない場合に微調整するのに最も
有用である。ノーマルモードおよびexコマンドについては、ベルは多くの場合
エラーが発生したことを示すために鳴らされる。これは、"error" を追加する
ことで消すことができる。
'binary' 'bin' 'nobinary' 'nobin'
'binary' 'bin' 切替 (既定ではオフ)
バッファについてローカル
バイナリファイルを編集する前には、このオプションをオンにすべきである。
Vimの起動時に引数 -b を使ってもよい。オンのときは、いくつかのオプショ
ンの設定が変わる。
'textwidth' は 0 になる
'wrapmargin' は 0 になる
'modeline' は オフ になる
'expandtab' は オフ になる
またオプション 'fileformat' と 'fileformats' は無視され、読み込みと書
き込みは 'fileformat' が "unix" のときのようになる (1個の <NL> が改行
になる)。
さらにオプション 'fileencoding' と 'fileencodings' も無視され、ファイ
ルは変換なしに読み込まれるようになる。
NOTE: オプション 'bin' がオンのときに新しくファイルを読み込むと、
autocommand によって設定が再び変えられ (例えば 'textwidth')、編集時に
問題を起こす ことがあるので注意。ファイルを読み込んだ後に再び 'bin' を
オンにするとよい。
変更されるオプションの値は記憶されているので、オプション 'bin' がオフ
に戻るとそれらの値も復元される。それらの値はバッファごと独自に記憶され
る。
引数++binを使うと、'binary' をオンにしてファイルを開くことができる。
これを使うと ":set bin" としなくてすむ。":set bin" は編集する全てのバッ
ファに対して効果を持つ。
'bin' がオンならば、ファイルを書き込むときに最終行に <EOL> が付け加え
られるのは、元のファイルにすでに <EOL> があるときだけである (普通は、
最終行に <EOL> がないならVimはそれを付け加える。こうするとその分ファイ
ルが長くなる)。オプション 'endofline' を参照。
'bioskey' 'biosk' 'nobioskey' 'nobiosk'
'bioskey' 'biosk' 切替 (既定ではオン)
グローバル
{MS-DOS版のみ}
これはMS-DOSのためのものであったが、もうサポートされていない。
'bomb' 'nobomb'
'bomb' 切替 (既定ではオフ)
バッファについてローカル
ファイルを書き込むときに以下の条件が満たされれば、BOM (Byte Order Mark
{訳注: バイト順マーク。Unicodeを適切に扱うために使われるマーク}) がファ
イル先頭に付けられる。
- このオプションがオンである
- 'binary' がオフである
- 'fileencoding' が "utf-8", "ucs-2" または "ucs-4" である (リトルエン
ディアンとビッグエンディアンの違いは無視)
アプリケーションの中には、ファイルのエンコーディングを認識するために
BOM を使うものがある。MS-Windows で UCS-2 ファイルのためによく使われる。
しかし、アプリケーションによってはこれが問題になることもある。例えば
"cat file1 file2" とすると、file2の BOM がファイル途中に現れてしまう。
gcc は BOM を受け付けない。
ファイルを読み込むときに 'fileencodings' が "ucs-bom" で始まるならば、
BOM が存在するかどうかが調べられ、その結果に従って 'bomb' が設定される。
'binary' がオンでなければ BOM は編集時には取り除かれ、ユーザーの目には
触れない。'bomb' をオフにしたり 'binary' をオンにしたり
'fileencodings' を変えなければ、ファイルの書き込み時に再び BOM が復元
される。
'breakat' 'brk'
'breakat' 'brk' 文字列 (既定では " ^I!@*-+;:,./?")
グローバル
{+linebreak 機能付きでコンパイルされたときのみ有効}
オプション 'linebreak' がオンのとき、どの文字のところで行が折り返され
て表示されるかを、このオプションで指定する。これが機能するのはASCIIと
8bit文字('encoding' が8bitエンコーディングのとき)だけである。
'breakindent' 'bri' 'nobreakindent' 'nobri'
'breakindent' 'bri' 切替 (既定ではオフ)
ウィンドウについてローカル
{+linebreak 機能付きでコンパイルされたときのみ有効}
折り返された行を同じインデントで表示する (行の先頭にある空白の量と同じ
だけインデントされる)。つまりテキストブロックの水平位置が保持される。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'breakindentopt' 'briopt'
'breakindentopt' 'briopt' 文字列 (既定では空)
ウィンドウについてローカル
{+linebreak 機能付きでコンパイルされたときのみ有効}
'breakindent' の設定。次の項目を設定できる。それぞれの項目はコンマで区
切る:
min:{n} テキストの最小幅。'breakindent' が適用されたとき
にテキストがその幅よりも狭くならないようにする。こ
れは、ウィンドウの右端近くまでインデントされたテキ
ストが折り返されたときにたくさんの行に渡って表示さ
れるのを防ぐ。
(既定では 20)
shift:{n} 'breakindent' が適用されたときに、折り返された最初
の行を指定した量だけずらす。動的なフランス式の段落
インデント (負の値) や行の継続を強調 (正の値) した
りできる。
(既定では 0)
sbr 追加インデントの前に 'showbreak' を表示する。
(既定では off)
list:{n} 番号付きもしくは箇条書きリスト('formatlistpat' の
設定を使う)にマッチする行について追加のインデント
を加える。
(既定では 0)
list:-1 インデントに 'formatlistpat' のマッチの幅を使う。
column:{n} インデントの桁数 {n}。他のサブオプションを上書きす
る。Note: 'showbreak' の設定が追加インデントに足さ
れるかもしれない。
(既定では off)
'browsedir' 'bsdir'
'browsedir' 'bsdir' 文字列 (既定では "last")
グローバル
{Motif, GTK, Mac, Win32のGUI版のみ}
ファイルブラウザーの開始時、どのディレクトリを開くかを指定する。
last 前回にファイルブラウザーでファイルを開く・または保存し
たディレクトリ
buffer バッファで開いているファイルのディレクトリ
current カレントディレクトリ
{path} {path} で指定されたディレクトリ
'bufhidden' 'bh'
'bufhidden' 'bh' 文字列 (既定では "")
バッファについてローカル local-noglobal
バッファがウィンドウ内に表示されなくなったときの動作を指定する。
<empty> グローバルオプション 'hidden' に従う
hide 'hidden' がオフに設定されていても、バッファを隠す (解
放しない)。
unload 'hidden' がオンに設定されていても、バッファを解放する。
コマンド :hide もまたバッファを解放する。
delete 'hidden' がオンに設定されていても、バッファをバッファ
リストから削除する。:hide コマンドを使ったときは
:bdelete と同じようにバッファを削除する。
wipe 'hidden' がオンに設定されていても、バッファをバッファ
リストから完全に削除(wipe)する。:hide を使ったときは
:bwipeout と同じようにバッファを完全に削除する。
注意: "unload", "delete", "wipe" を設定すると、バッファの変更は警告無
しに失われる。また、これらの値はバッファを一時的に切り替えるような自動
コマンドを壊す可能性がある。
このオプションは 'buftype' や 'swapfile' と共に使われ、特殊な用途のバッ
ファを指定する。special-buffers を参照。
'buflisted' 'bl' 'nobuflisted' 'nobl' E85
'buflisted' 'bl' 切替 (既定ではオン)
バッファについてローカル
オンのときは、バッファはバッファリストに表示される。オフのときは、その
バッファはコマンド ":bnext" や ":ls" およびバッファメニュー等の対象に
ならない。
ファイル名やマークを思い出したりするためだけのバッファでは、このオプショ
ンはオフになる。バッファの編集を始めたときは、このオプションはオンにな
る。しかし ":buffer" でバッファに移動したときはオンにはならない。
'buftype' 'bt' E382
'buftype' 'bt' 文字列 (既定では "")
バッファについてローカル local-noglobal
このオプションはバッファの種類を指定する。
<empty> 普通のバッファ
nofile ファイルと関連がなく、書き込まれる予定のないバッファ
nowrite 書き込まれる予定のないバッファ
acwrite いつも自動コマンドBufWriteCmdで書き込まれる予定のバッ
ファ。
quickfix エラーリスト :cwindow またはlocationリスト :lwindow
を含んだquickfixバッファ。
help ヘルプバッファ (ユーザーが手動でこれに設定することはな
いはずである)
terminal terminal のためのバッファ (ユーザーが手動でこれを設
定することはないはずである)
prompt プラグインに使われることを意図した、最後の行だけを編集
できるバッファ、prompt-buffer を参照。
{+channel 機能付きでコンパイルされたときのみ有効}
popup ポップアップウィンドウで使われるバッファ
{+textprop 機能付きでコンパイルされたときのみ有効}
このオプションはオプション 'bufhidden' や 'swapfile' と共に使われ、特
殊な用途のバッファを指定する。special-buffers を参照。
ウィンドウのタイプを返す win_gettype() もまた参照。
このオプションの変更には十分注意すること。多くの副作用が起こるかもしれ
ない!
その作用の1つとして、Vim がファイルのタイムスタンプをチェックしなくな
るというのがあり、もしファイルが他のプログラムに変更されても認識されな
い。
"quickfix" バッファはエラーリストとロケーションリストにのみ使われる。
この値はコマンド:cwindow と:lwindowで設定され、ユーザーが変更するこ
とはないはずである。
"nofile" バッファと "nowrite" バッファは似ている。
両方とも、 バッファの内容はファイルに書き込まれない。":w" が使え
ない (":w 新ファイル名" は使える)。
両方とも、 バッファの内容が変更された 'modified' と認識されること
がない。Vimの終了時等、変更点が失われるときでも警告が
現れない。
両方とも、 スワップファイルはメモリを大量に消費したときのみ作られ
る ('swapfile' がオフだと、スワップファイルは作られな
い)。
nofile だけは、 バッファ名は固定され、ファイル名のようには扱われない。
:cd の結果としてバッファ名が変わることはない。
両方とも、 ":e bufname" を使い、すでに "bufname" を編集していたと
き、バッファは空になり:edit用の自動コマンドは通常通り
起動される。
E676
"acwrite" は "nofile" と同様にバッファ名がファイルと関係していないこと
を意味するが、"nofile" と違って保存される。すなわち、"nofile" と
"nowrite" とは違って ":w" ができ、変更されたバッファを保存せずに破棄す
ることはできない。これを保存するには、マッチする自動コマンド
BufWriteCmd, FileWriteCmd, FileAppendCmdがなければならない。
'casemap' 'cmp'
'casemap' 'cmp' 文字列 (既定では "internal,keepascii")
グローバル
大文字・小文字の変更について詳細を指定する。このオプションはコンマ区切
りで以下の単語を含む:
internal 内部の大文字・小文字対応関数を使う。現在のロケールに
よって対応が変更されない。これは 'encoding' がUnicode
エンコーディング, "latin1", "iso-8859-15" のときのみ問
題になる。"internal" が除かれるとシステムライブラリ関
数towupper()とtowlower()が利用可能ならば使われる。
keepascii ASCII文字(0x00から0x7f)についてはUS大文字小文字対応を
使う。現在のロケールは効果を持たない。
これはおそらくトルコ語でだけ問題になる。
'cdhome' 'cdh' 'nocdhome' 'nocdh'
'cdhome' 'cdh' 切替 (既定ではオフ)
グローバル
オンのときは、引数なしの :cd, :tcd, :lcd で Unix 風にカレントディ
レクトリを $HOME ディレクトリに変更する。
オフのときは、これらのコマンドはカレントディレクトリ名を表示するだけで
ある。
Unix においてはこのオプションは動作に影響を与えない。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
NOTE: このオプションは 'compatible' が設定されるとリセットされる。
'cdpath' 'cd' E344 E346
'cdpath' 'cd' 文字列 (既定では環境変数 $CDPATH または ",,")
グローバル
:cd、:tcd や :lcd を使ったときに検索されるディレクトリのリスト。
ただし検索されるディレクトリが "/", "./" や "../" で始まるときはこのオ
プションは使われない。
オプション 'cdpath' には、'path' と同様の指定方法を使う。
file-searching も参照。
既定値は環境変数 $CDPATH から取り込まれるが、カレントディレクトリを最
初に探すために "," が先頭に挿入される。
$CDPATH から取り込まれたものが望ましくないときは、値を上書きするために、
次のコマンドを適当に修正し、ユーザーのファイル vimrc に加えること:
:let &cdpath = ',' .. substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g')
セキュリティ上の理由から、このオプションを modeline または sandbox内で設定することはできない。('cdpath' の値の一部は、ファイル名を展開す
るためにシェルに渡すことができる)。
'cedit'
'cedit' 文字列 (Viの既定値: "", Vimの既定値: CTRL-F)
グローバル
コマンドラインモードで、コマンドラインウィンドウを開くために使われる
キー。'compatible' がオフの場合、デフォルトは CTRL-F である。
表示不可文字なキーのみが許可される。
キーは単一文字で指定できるが、入力が困難である。推奨される方法は、
key-notation (例: <Up>、<C-F>) またはキャレット付きの文字 (例: ^F
は CTRL-F) を使用することだ。例:
:set cedit=^Y
:set cedit=<Esc>
Nvi にもこのオプションがあるが、最初の1文字だけが使用される。:set cedit=<Esc>
cmdwin を参照。
NOTE: このオプションは 'compatible' がオフになるとVimの既定値に設定さ
れるので注意。
'charconvert' 'ccv' E202 E214 E513
'charconvert' 'ccv' 文字列 (既定では "")
グローバル
{+eval 機能付きでコンパイルされたときのみ有効}
文字エンコーディングの変換に使われる expression を定める。これは読み込
まれようとしているファイルや書き込みをしたファイルのエンコーディングが、
望むものと違うときに評価される。
オプション 'charconvert' の値は、内部関数 iconv() がサポートされ、それ
による変換が可能ならば使われることはない。ずっと高速なため、iconv() の
使用を推奨する。
'charconvert' は標準入力 (stdin --) から読み込むときには使われない。
なぜなら変換元のファイルが存在しないからだ。まずテキストの内容をファイ
ルに保存しなければいけない。
使われる expression は、成功時は0、false または空の文字列を返し、失敗
時は非0または true を返す必要がある。
expression が遭遇する可能性のあるエンコーディング名は、'encoding' に加
えて 'fileencodings', 'fileencoding' で使われているものに限られる。
"latin1", "unicode", "ucs-2", "ucs-4", "utf-8" の間の変換はVimの内部で
行われ、'charconvert' は使われない。'viminfo' の中にフラグ 'c' が含ま
れるならば、'charconvert' はファイル viminfo の変換にも使われる。また
Unicode の変換にも使われる。
例:
set charconvert=CharConvert()
fun CharConvert()
system("recode "
\ .. v:charconvert_from .. ".." .. v:charconvert_to
\ .. " <" .. v:fname_in .. " >" .. v:fname_out)
return v:shell_error
endfun
関連するVimの変数は以下の通り。fun CharConvert()
system("recode "
\ .. v:charconvert_from .. ".." .. v:charconvert_to
\ .. " <" .. v:fname_in .. " >" .. v:fname_out)
return v:shell_error
endfun
v:charconvert_from 現在のエンコーディング名
v:charconvert_to 希望するエンコーディング名
v:fname_in 入力ファイル名
v:fname_out 出力ファイル名
Note 変数 v:fname_in と v:fname_out とは、決して同じになってはいけない
ので注意。
Note v:charconvert_from と v:charconvert_to の値は 'encoding' と異なる
かもしれないので注意。Vim内部では UCS-2 または UCS-4 の代わりには
UTF-8 を使っている。
引数なしで関数呼び出しを使用する利点は、高速であることである。
expr-option-function を参照。
Vim は 'charconvert' を用いたエンコーディング変換では暗号化をしない。
変換後に暗号化をしたいなら、'charconvert' にそうさせる必要がある。
'charconvert' の式が s: か <SID> で始まる場合、スクリプトID
(local-function) に置き換えられる。例:
set charconvert=s:MyConvert()
set charconvert=<SID>SomeConvert()
そうでない場合、式はオプションが設定されたスクリプトのコンテキストで評set charconvert=<SID>SomeConvert()
価され、その結果スクリプトローカルな要素を使用できる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'cindent' 'cin' 'nocindent' 'nocin'
'cindent' 'cin' 切替 (既定ではオフ)
バッファについてローカル
Cプログラムファイルの自動インデントを行う。挿入モードで再インデントを
引き起こす文字列を指定するにはオプション 'cinkeys' を、好みのインデン
トスタイルを設定するには 'cinoptions' を参照。
'indentexpr' の値が空でないなら、それは 'cindent' の設定を上書きする。
'lisp' がオフで、'indentexpr' と 'equalprg' の両方の値が空なら、"=" に
よるインデントはこのアルゴリズムを使い、外部プログラムを使わない。
C-indenting を参照。
'cindent' の動作が気に入らないならば、'smartindent' か 'indentexpr' を
試してみること。
このオプションは 'paste' がオンのときには使われない。
NOTE: このオプションは 'compatible' がオンになるとオフになるので注意。
'cinkeys' 'cink'
'cinkeys' 'cink' 文字列 (既定では "0{,0},0),0],:,0#,!^F,o,O,e")
バッファについてローカル
挿入モードで入力されたときに、現在行の再インデントを引き起こす文字のリ
スト。オプション 'cindent' がオンで、かつ 'indentexpr' が空の時のみ使
われる。
このオプションの設定方法については cinkeys-format を参照。
また C-indenting を参照。
'cinoptions' 'cino'
'cinoptions' 'cino' 文字列 (既定では "")
バッファについてローカル
このオプションは、'cindent' でのC言語ソース内の行の再インデント方法に
影響を与える。このオプションの値については cinoptions-values を、一
般的なC言語ソースのインデントの情報については C-indenting を参照。
'cinscopedecls' 'cinsd'
'cinscopedecls' 'cinsd' 文字列 (既定では "public,protected,private")
バッファについてローカル
cino-g によって解釈される C++ スコープ宣言のキーワード。例えば、Qt
フレームワークとともに動作するときの追加のスコープ宣言として "signals",
"public slots", "private slots" を定義すると便利になる:
set cinscopedecls+=signals,public\ slots,private\ slots
'cinwords' 'cinw'
'cinwords' 'cinw' 文字列 (既定では "if,else,while,do,for,switch")
バッファについてローカル
オプション 'smartindent' か 'cindent' がオンのとき、ここに指定したキー
ワードの次の行は、さらにインデントされる。'cindent' がオンのときには、
適切な場所 ({} の内側) でのみ機能する。
NOTE 'ignorecase' は 'cinwords' の値には適用されないので注意。大文字か
小文字かを区別したくないなら、値に両方を指定すること。例: "if,If,IF"
'clipboard' 'cb'
'clipboard' 'cb' 文字列 (既定値はX-windowsでは
"autoselect,exclude:cons\|linux"
それ以外では "")
グローバル
{VimのGUIバージョンか +xterm_clipboard 機能付きでコ
ンパイルされたもののみ有効}
コンマ区切りのキーワードのリストを指定する。
Note: 要素の1つとして "exclude:" がある場合、要素を後ろに追加すること
はできない。従って += で後方への要素の追加ではなく ^= を使って前方への
追加をする。例:
set clipboard^=unnamed
GUI を使用する場合は、'go-A' を参照。認識されるのは、以下のキーワードである。
clipboard-unnamed
unnamed これが含まれると、コピー、削除、変更、ペーストなどの操
作で、普通なら無名レジスタが使われるところで、全てク
リップボードレジスタ '*' が使われるようになる。ただし
レジスタ名を明示的に指定した場合は、オプション
'clipboard' に "unnamed" が含まれているかいないかにか
かわらず、指定されたレジスタが使われる。またクリップ
ボードレジスタは、"* という記法を用いれば常にアクセス
できる。
gui-clipboard も参照。
clipboard-unnamedplus
unnamedplus "unnamed" と似ているがコピー、削除、変更、ペーストなど
の操作で、普通なら無名レジスタが使われるところで、ク
リップボードレジスタ '+' (quoteplus) が使われる。
"unnamed" も同時に指定した場合は、コピー操作 (削除、変
更、ペースト以外の操作) で、レジスタ '*' にもテキスト
がコピーされる。
+X11 機能が有効な場合のみ利用可能。
利用できるかどうかは次のコマンドで確認できる:
if has('unnamedplus')
clipboard-autoselect
autoselect 'guioptions' のフラグ 'a' のように働く: これが含まれる
と、ビジュアルモードが開始されるたび、または ビジュア
ル選択範囲が変更されるたびに、Vimはウィンドウシステム
のグローバルなクリップボードのオーナーになろうとする
か、選択されたテキストをクリップボード用レジスタ "* を
使ってクリップボードにコピーしようとする。詳細は
'go-a' と quotestar を参照。GUI機能が有効のときは
'guioptions' のフラグ 'a' が使用され、無効のときはこ
の "autoselect" フラグが使用される。
また、モードレスなセレクションにも適用される。
clipboard-autoselectplus
autoselectplus "autoselect" と似ているが、* レジスタの代わりに + レジ
スタが使われる。'guioptions' の 'P' フラグと比較してみ
ること。
clipboard-autoselectml
autoselectml "autoselect" と似ているが、モードレスセレクションのみ
に適用される。'guioptions' のフラグ 'A' と比較してみる
こと。
clipboard-html
html クリップボードの内容が HTML であるとき、貼り付け時に使
われる。テキストをクリップボードにコピーするとき、
HTML としてマークアップする。Firefox で描画された HTML
をコピーして Vim で HTML ソースとして貼り付けるとき
や、Vim で HTML を選択して Firefox のリッチエディット
ボックスに貼り付けるときに使われる。
これを一時的にのみ使いたい場合は BufEnter 自動コマンド
を使うといいかもしれない。
GTK 2 以降のみ対応している。
clipboard-exclude
exclude:{pattern}
ターミナルの名前 'term' にマッチするパターンを定義す
る。パターンがマッチすると、Xサーバーとの通信がなされ
なくなる。
このオプションは以下の場合に便利である。
- Vimをコンソールで使用しているとき。
- アプリケーションを別のディスプレイで使うため、環境変
数 $DISPLAY が設定されているとき。
- コンソールではXサーバーと通信してほしくないが、ター
ミナルエミュレータ上では通信してほしいとき。
Xサーバーと全く通信しないようにするには、次のようにす
る:
exclude:.*
これは引数 -X を使用したのと同じ効果を持つ。Note Xサーバーと通信していないとき、ウィンドウタイトル
は復元されず、クリップボードにはアクセスできない。
'magic' の値は無視され、{pattern} は 'magic' がオンの
ときのように解釈される。オプション 'clipboard' の値の
残りは {pattern} として認識されるので、"exclude" は最
後に指定しなければならない。
'cmdheight' 'ch'
'cmdheight' 'ch' 数値 (既定では 1)
グローバル/タブページについてローカル
コマンドラインに使われる画面上の行数。この値を大きくすると、
hit-enter プロンプトを避けることができる。
各タブページが異なる値を持てるようにするために、このオプションの値はタ
ブページに保存される。
'cmdwinheight' 'cwh'
'cmdwinheight' 'cwh' 数値 (既定では 7)
グローバル
コマンドラインウィンドウに使われる画面上の行数。cmdwin を参照。
'colorcolumn' 'cc'
'colorcolumn' 'cc' 文字列 (既定では "")
ウィンドウについてローカル
{+syntax 機能付きでコンパイルされたときのみ有効}
'colorcolumn' はスクリーンの列をコンマ区切りで指定する。指定された列は
ColorColumn (hl-ColorColumn) で強調表示される。テキストを整列すると
きに便利である。スクリーンの表示は遅くなる。
列番号は絶対値で指定するか、番号に '+' か '-' を前置して 'textwidth'
からの相対値として指定する。
:set cc=+1 " 'textwidth' の後の列を強調表示する
:set cc=+1,+2,+3 " 'textwidth' の後の3列を強調表示する
:hi ColorColumn ctermbg=lightgrey guibg=lightgrey
:set cc=+1,+2,+3 " 'textwidth' の後の3列を強調表示する
:hi ColorColumn ctermbg=lightgrey guibg=lightgrey
'textwidth' がゼロのときは '-' と '+' で指定されたアイテムは使用されな
い。最大で 256 個の列を強調表示できる。
'columns' 'co' E594
'columns' 'co' 数値 (既定では 80 またはターミナルの幅)
グローバル
画面上の列幅を設定する。普通このオプションはターミナルの初期化の時点で
設定され、手動で設定する必要はない。posix-screen-sizeも参照。
VimがGUI内やサイズ変更可能なウィンドウ内で実行されているときは、このオ
プションを変更するとウィンドウサイズも変更される。GUIでだけこのサイズ
を使用したい場合は、このコマンドをgvimrcに書くこと。
ユーザーがこのオプションを変更したのに、Vimがディスプレイの列幅の物理
的な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれ
がある。GUIでは常にその可能性があるので、Vimは桁数を画面に収まる値に制
限している。可能なウィンドウ幅の最大値を取得するには、次のコマンドを使
う:
:set columns=9999
最小値は12、最大値は10000。{訳注: オプション 'lines' も参照}
'comments' 'com' E524 E525
'comments' 'com' 文字列 (既定では
"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-")
バッファについてローカル
コメント行の始まりとなる文字列の、コンマ区切りのリスト。
format-comments を参照。'\' を使って値にスペースを含める方法について
は、option-backslash を参照。
'commentstring' 'cms' E537
'commentstring' 'cms' 文字列 (既定では "/* %s */")
バッファについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
コメント用のテンプレート (雛形)。値内の "%s" はコメントテキストに置き
換えられ、可能な限りスペースでパディングされるべきである。現在のとこ
ろ、折り畳み用のマーカーを追加するために使用されている。fold-marker
を参照。また、一般的にコメントプラグインでも使用される (例:
comment-install)。
'compatible' 'cp' 'nocompatible' 'nocp'
'compatible' 'cp' 切替 (既定では オン、ファイルvimrcまたは gvimrc
が発見されたらオフ、defaults.vim 内でリセット)
グローバル
VimをなるべくVi互換にするか、便利な機能を使えるようにするかを決定する。
これは、特別な種類のオプションである。このオプションの値が変更される
と、それに伴って他のオプションも変更されるからだ。
NOTE: このオプションを変更すると、予期しない効果が数多く現れる。キー
マップの解釈は変わり、アンドゥも違った方法で行われる、等々。このオプ
ションをファイル vimrc 内で設定するなら、一番先頭に置くこと。
既定ではオンなので、その他のオプションにはViの既定値が使われる。この既
定値は、VimをViと全く同じように使うことを望み、オプション 'compatible'
について知りもしない、または知りたいとさえ思わない人たちのためのもので
ある。
Vimが立ち上がる間にファイル vimrc または gvimrc が見つかると、この
オプションはオフにされ、その他のオプションで変更されていないものは、
みなVimの既定値に設定される。要するに、Vimはファイル vimrc または
gvimrc が存在するならVimの既定値を、存在しないならViの既定値を使うの
だ (Note: システム全体用のvimrcやgvimrc、あるいは引数 -u で指定され
るファイルは関係ないことに注意)。compatible-default と
posix-compliance も参照。
このオプションは引数 "-C" でオンに、引数 "-N" でオフにできる。 -C と
-N を参照。
Viとの互換性をより細かく調整するには 'cpoptions' を参照すること。
このオプションがオンにされると、Vimができる限りVi互換となるように数多
くの他のオプションが設定される。このオプションがオフにされると、Vimが
より使いやすくなるように多くのオプションが設定される。下の表は影響を受
けるすべてのオプションを示す。
{?}列は、いつそのオプションが影響を受けるかを示す:
+ 'compatible' がオンになったときに、{設定値}に示した値が設定されるこ
とを意味する。
& 'compatible' がオンになったときに、{設定値}に示した値が設定され、か
つ、'compatible' がオフになったときにVimの既定値に設定されることを
意味する。
- 'compatible' がオンになったときには値は変更されないが、'compatible'
がオフになったときにはVimの既定値に設定されることを意味する。
{効果}列は、'compatible' がオンになったときの変更をまとめてある。
オプション ? 設定値 効果
'allowrevins' + オフ コマンド CTRL-_ なし
'antialias' + オフ アンチエイリアスフォントを使用しない
'arabic' + オフ アラビア語関連オプションをリセット
'arabicshape' + オン 文字表示補正を行う
'backspace' + "" 普通のバックスペース
'backup' + オフ バックアップファイルなし
'backupcopy' & Unix: "yes" バックアップファイルがコピーになる
他: "auto" バップアップはコピーまたはリネーム
'balloonexpr' + "" バルーンに表示するテキストの式
'breakindent' + オフ 折り返した行をインデントしない
'cedit' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'cdhome' + オフ 非 Unix で ":cd" でホームに変更しない
'cindent' + オフ C言語ファイルにインデントなし
'compatible' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'copyindent' + オフ インデント構造をコピーしない
'cpoptions' & (全フラグ) Vi互換のフラグ
'cscopepathcomp'+ 0 タグ一覧にディレクトリを表示しない
'cscoperelative'+ オフ 保存されているディレクトリをプリフィッ
クスとして使用しない
'cscopetag' + オフ ":tag" に cscope を使わない
'cscopetagorder'+ 0 cscopetagorder を参照
'cscopeverbose' + オフ cscopeverbose を参照
'delcombine' + オフ unicode: すべての合成文字を削除
'digraph' + オフ ダイグラフなし
'esckeys' & オフ 挿入モードで <Esc> で始まるキーなし
これは、modifyOtherKeys と
xterm-bracketed-paste も無効にする
'expandtab' + オフ タブはスペースに展開されない
'fileformats' & "" 自動ファイルタイプ決定なし
"dos,unix" (ただし MS-Windows 以外で)
'formatexpr' + "" 'formatprg' を自動整形に使う
'formatoptions' & "vt" Vi互換の文書整形
'gdefault' + オフ ":s" でフラグの既定値に 'g' なし
'history' & 0 コマンドラインの履歴なし
'hkmap' + オフ ヘブライ語用キーボードマップなし
'hkmapp' + オフ phoneticヘブライ語用キーボードマップなし
'hlsearch' + オフ 検索でマッチした文字列に強調なし
'incsearch' + オフ インクリメンタルサーチなし
'indentexpr' + "" expression によるインデントなし
'insertmode' + オフ 挿入モードでの開始なし
'iskeyword' & "@,48-57,_" キーワードはアルファベットと数字と '_'
'joinspaces' + オン ピリオドの後ろには空白を2個挿入
'modeline' & オフ モードラインなし
'more' & オフ リスト表示が止まらない
'mzquantum' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'numberwidth' & 8 行番号用の最小桁数
'preserveindent'+ オフ インデント変更時に現在のインデント構造
を保持しない
'revins' + オフ 右から左の挿入なし
'ruler' + オフ ルーラーなし
'scrolljump' + 1 ジャンプスクロールなし
'scrolloff' + 0 スクロールにオフセットなし
'shelltemp' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'shiftround' + オフ インデントは shiftwidth の整数倍でない
'shortmess' & "S" メッセージの短縮なし
'showcmd' & オフ コマンドの文字は表示されない
'showmode' & オフ 現在のモードは表示されない
'sidescrolloff' + 0 スクロール時、カーソルは画面端に移動
'smartcase' + オフ 大文字小文字の無視は自動にならない
'smartindent' + オフ 高度なインデントなし
'smarttab' + オフ 高度なタブ挿入なし
'softtabstop' + 0 タブは常に 'tabstop' を基準
'startofline' + オン いくつかのコマンドで行頭に移動する
'tagcase' & "followic" タグファイル検索時 'ignorecase' に従う
'tagrelative' & オフ タグファイル名は相対的でない
'termguicolors' + オフ highlight-(guifg|guibg) を使用しない
'textauto' & オフ 自動改行コード決定なし
'textwidth' + 0 自動行分割なし
'tildeop' + オフ チルダはオペレータではない
'ttimeout' + オフ ターミナルの時間切れなし
'undofile' + オフ アンドゥファイルを使用しない
'viminfo' - {変更なし} {'cp' リセット時にVimの既定値に設定}
'virtualedit' + "" カーソルは文字の上にのみ置ける
'whichwrap' & "" 左から右への移動は行を超えない
'wildchar' & CTRL-E 現在の値が <Tab> のときのみ、コマンド
ライン補完に CTRL-E を使う
'writebackup' + オンかオフ +writebackup 機能に依る
'complete' 'cpt' E535
'complete' 'cpt' 文字列 (既定では: ".,w,b,u,t,i")
バッファについてローカル
コマンド CTRL-P や CTRL-N によるキーワード補完 ins-completion の動作
を指定する。このオプションは行全体の補完 i_CTRL-X_CTRL-L にも適用さ
れる。このオプションは補完の方法と、キーワード検索の対象となる場所を示
す、コンマ区切りのフラグのリストである。
. カレントバッファから検索 ('wrapscan' の値は無視)
w 別のウィンドウ内のバッファから検索
b バッファリスト内の、現在読み込まれている別のバッファから検索
u バッファリスト内の、現在読み込まれていない別のバッファから検索
U バッファリストにないバッファから検索
k 'dictionary' で指定されたファイルから検索
kspell 現在有効化されているスペルチェックを使う spell
k{dict} {dict} で与えられたファイルから検索。"k" を複数指定してもよい。
ファイル名はパターンでも指定できる。例:
:set cpt=k/usr/dict/*,k~/spanish
s 'thesaurus' で指定されたファイルから検索s{tsr} {tsr} で与えられたファイルから検索。"s" を複数指定してもよい。
ファイル名はパターンでも指定できる。
i カレントファイルとインクルードされるファイルから検索
d カレントファイルとインクルードされるファイルから、定義された名
前またはマクロを検索 i_CTRL-X_CTRL-D
] タグ補完
t "]" と同じ
読み込まれていないバッファでは、何しろ読み込まれていないのだから、
:autocmd は実行されていない。そのため、ある種のファイルからは思いも
しないキーワードを補完してしまうことがある (gzip圧縮されたファイルな
ど)。読み込まれていないバッファは、行全体の補完には使われない。
既定では ".,w,b,u,t,i" となっていて、これは検索対象を次のように指定し
ている。
1. カレントバッファ
2. 別のウィンドウ内のバッファ
3. 他の読み込まれたバッファ
4. バッファリスト内の読み込まれていないバッファ
5. タグ
6. インクルードされるファイル
CTRL-N と CTRL-P は 'iskeyword' を利用した全てのファイル名展開で使用で
きる (つまり辞書 i_CTRL-X_CTRL-K、インクルードされるパターン
i_CTRL-X_CTRL-I、タグ i_CTRL-X_CTRL-] および通常の展開)。
'completefunc' 'cfu'
'completefunc' 'cfu' 文字列 (既定では空)
バッファについてローカル
{+eval 機能付きでコンパイルされたときのみ有効}
このオプションは入力モードのCTRL-X CTRL-U i_CTRL-X_CTRL-Uでの補完に
使われる関数を指定する。
その関数がどのように起動され、何を返すべきかについての説明は
complete-functions を参照。値として関数名、lambda、Funcref が使
える。詳細は option-value-function を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'completeitemalign' 'cia'
'completeitemalign' 'cia' 文字列 (既定では "abbr,kind,menu")
グローバル
コンマで区切られた complete-items のリストで、挿入モード補完中にポッ
プアップメニューの項目の配置と表示順序を制御する。サポートされている値
は、abbr、kind、および menu である。これらのオプションを使用すると、補
完項目がポップアップメニューに表示される方法をカスタマイズできる。
Note: どのような順序であっても、常にこれら 3 つの値を含んでいなければ
ならない。
'completeopt' 'cot'
'completeopt' 'cot' 文字列 (既定では "menu,preview")
グローバル/バッファについてローカル global-local
入力モードでの補完ins-completionについてのオプションのコンマ区切りの
リスト。サポートされている値は次の通り:
menu ポップアップメニューで補完候補を表示する。ポップアップメ
ニューは、候補が2個以上あり、十分な数の色が使用できるとき
だけ表示される。ins-completion-menuを参照。
menuone 候補が1つしかないときもポップアップメニューを使う。候補に
ついて付加的な情報があるときに便利である。例えば、それがど
のファイルに含まれているかなど。
longest 候補の文字列の最長の共通部分だけを挿入する。メニューが表示
されているならばCTRL-Lでさらに文字を挿入することができる。
大文字・小文字が同一視されるかどうかは補完の種類による。
バッファのテキストについてはオプション 'ignorecase' が適用
される。
preview 現在選択されている候補についての付加的な情報をプレビュー
ウィンドウに表示する。"menu" または "menuone" と組み合わせ
たときのみ有効。
popup 現在選択されている補完に関する追加情報をポップアップウィン
ドウに表示する。"menu" または "menuone" との組み合わせでの
み機能する。"preview" を無視する。
指定するプロパティについては 'completepopup' を参照。
{+textprop 機能付きでコンパイルされたときのみ有効}
popuphidden
"popup" と同様だが、最初はポップアップを非表示にする。
CompleteChanged 自動コマンドを使用して情報を取得し、ポッ
プアップがいっぱいになれば popup_show() を呼び出す。
complete-popuphidden の例を参照。
{+textprop 機能付きでコンパイルされたときのみ有効}
noinsert いかなるマッチしたテキストも、ユーザーがメニューから選択し
ない限り挿入しない。"menu" か "menuone" と組み合わせたとき
にだけ機能する。"longest" が指定された場合には、なんの影響
も発生しない。
noselect メニューからマッチを {訳注:自動では} 選択せず、ユーザーに
自分で選ぶことを強制する。"menu" か "menuone" と組み合わせ
たときにだけ機能する。
fuzzy 補完候補に対して fuzzy-matching を有効にする。これによ
り、より柔軟で直感的なマッチングが可能になり、文字をスキッ
プしたり、正確なシーケンスが入力されていなくてもマッチを見
つけることができる。
'completepopup' 'cpp'
'completepopup' 'cpp' 字列 (既定では空)
グローバル
{+textprop または +quickfix 機能付きでコンパイルさ
れたときのみ有効}
'completeopt' に "popup" が含まれている場合、このオプションは、作成時
に情報ポップアップのプロパティに使用される。すでに情報ポップアップウィ
ンドウが有る場合は閉じられ、再生成されるときにオプションの値が適用され
る。
また、popup_findinfo() を使用して、popup_setoptions() で既存の情報
ポップアップのプロパティを設定することもできる。complete-popup を参
照。
'completeslash' 'csl'
'completeslash' 'csl' 文字列 (既定では "")
バッファについてローカル
{Vimの MS-Windows 版でのみ有効}
このオプションを設定すると、補完のための 'shellslash' が無効になる:
- このオプションを "slash" に設定すると、挿入モードでのパス補完にスラッ
シュが使用される。これは、MS-Windowsで 'noshellslash' でHTMLタグや、
Makefile を編集するときに便利である。
- このオプションを "backslash" に設定すると、バックスラッシュが使用さ
れる。これは、MS-Windowsで 'shellslash' を設定してバッチファイルを編
集するときに便利である。
- このオプションが空の場合、'shellslash' と同じ文字が使用される。
挿入モードの補完には、バッファローカル値が使用される。コマンドラインの
補完には、グローバル値が使用される。
'concealcursor' 'cocu'
'concealcursor' 'cocu' 文字列 (既定では: "")
ウィンドウについてローカル
{+conceal 機能付きでコンパイルされたときのみ有効}
カーソル行のテキストを Conceal 表示するモードを設定する。現在のモード
がこのオプション値に含まれているなら他の行と同様に Conceal 表示され
る。
n ノーマルモード
v ビジュアルモード
i 挿入モード
c コマンドライン編集 ('incsearch' 用)
'v' はカーソル行だけでなくビジュアル選択された行全体に適用される。
便利な値は "nc" である。これはヘルプファイルで使われている。移動してい
るときはテキストは Conceal 表示されるが、テキストを入力したりビジュア
ル選択したりするときは実際のテキストが表示されるので、自分の操作を視覚
できる。
カーソルの位置は実際の表示とは異なる場合があるので注意すること。
例えば縦に移動することで列が変わることがある。
'conceallevel' 'cole'
'conceallevel' 'cole' 数値 (既定では 0)
ウィンドウについてローカル
{+conceal 機能付きでコンパイルされたときのみ有効}
"conceal" 構文属性 (:syn-conceal) のテキストをどのように表示するかを
設定する:
値 効果
0 テキストは通常通り表示される
1 各ブロックの Conceal されたテキストは一つの文字に置換
される。構文アイテムに代理文字 (:syn-cchar 参照) が
指定されていないときは 'listchars' の設定が使われる
(初期設定はスペース)。
文字はハイライトグループ "Conceal" を使って強調表示さ
れる。
2 Conceal されたテキストは構文アイテムに指定された代理文
字 (:syn-cchar) として表示される。それが指定されて
いないときは完全に非表示になる。
3 Conceal されたテキストは完全に非表示になる。
Note: テキストの編集やコピーの操作を妨げないようにするため、カーソル行
の Conceal テキストは非表示にならない。これは 'concealcursor' オプショ
ンで変更できる。
'confirm' 'cf' 'noconfirm' 'nocf'
'confirm' 'cf' 切替 (既定ではオフ)
グローバル
オプション 'confirm' がオンならば、バッファへの変更を保存していないと
実行に失敗する操作 (例えばコマンド ":q" と ":e") の際、ダイアログ
dialog を開いてファイルを保存するかどうか尋ねる。これがオンになって
いても、意図的に変更を廃棄したいなら ! を使える。
'confirm' がオフでも、コマンド :confirm で個別に確認を求めることがで
きる (これはキーマッピングで使うととても便利である)。
関数 confirm() と 'guioptions' のフラグ 'v' も参照。
'conskey' 'consk' 'noconskey' 'noconsk'
'conskey' 'consk' 切替 (既定ではオフ)
グローバル
これはMS-DOSのためのものであったが、もうサポートされていない。
'copyindent' 'ci' 'nocopyindent' 'noci'
'copyindent' 'ci' 切替 (既定ではオフ)
バッファについてローカル
新規行を自動インデントするとき、既存の行のインデント構造をコピーする。
普通、新しい行のインデントは 'expandtab' が有効になっていないかぎり
(この場合は全てスペースになる)、まずタブが使われ、足りない部分がスペー
スで埋められる。このオプションを有効にすると、既存の行のインデントにど
んな文字が使われていようとそれを新規行にコピーする。'expandtab' はこれ
らの文字には影響せず、タブはタブのままになる。新規行のインデントが既存
の行よりも深いならば、その差の部分は通常の方法で埋められる。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'preserveindent' も参照。
'cpoptions' 'cpo' cpo
'cpoptions' 'cpo' 文字列 (Vimの既定値: "aABceFsz",
Viの既定値: "#{|&/\." を除く全てのフラグ
$VIM_POSIX: 全てのフラグ)
グローバル
1文字のフラグの列で設定する。フラグが設定されると、対応する動作がVi互
換になる。大部分、またはある程度のVi互換が求められるときに使われる。
'cpoptions' は "compatible-options (互換オプション)" の意味である。
読みやすくするためにコンマを入れてもよい。
将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+="
と "-=" を使うこと add-option-flags。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
NOTE: Vim9 script では、vim9script を検出した時、値が保存され、
'cpoptions' に Vim のデフォルトが設定され、スクリプトの終了時に保存さ
れた値が復元される。'cpoptions' の値を変更した場合、保存した値へ復元さ
れるが、'cpoptions' が変更されたときに存在しないフラグを削除しても効果
がないことに注意すること。.vimrc ファイルでは値は復元されないので、
.vimrc ファイルで vim9script を使用すると、Vim のデフォルトを使用
することになる。
NOTE: Viの既定値が使われるようになっており、さらに環境変数$VIM_POSIXが
存在するとき、Vim起動時にこのオプションがPOSIXの既定値にセットされる
posix。これによってVimがPOSIX仕様に近い挙動をするようになる。
フラグ 動作
cpo-a
a これが含まれると、":read" にファイル名の引数を与えたと
き、そのファイルをカレントウィンドウの代替ファイルに設
定する。
cpo-A
A これが含まれると、":write" にファイル名の引数を与えた
とき、そのファイルをカレントウィンドウの代替ファイルに
設定する。
cpo-b
b ":map" 内の "\|" がコマンドの終端と見なされるようにな
る。'\' はキーマッピングの一部に、'|' の次のテキストは
次のコマンドと見なされる。'|' をキーマッピングに含める
には、'\' でなく CTRL-V を使うこと。キーマッピングや略
語やメニューや autocmd コマンドの全てに適用される。
map_bar も参照。
cpo-B
B '\' が、":menu" のメニューから実行される部分やキーマッ
ピングや略語やユーザーコマンドにおいて、特別な意味を持
たなくなる。'\' をCTRL-V のように使いたいのならこのフ
ラグを取り除くこと。
例えば、":map X \<Esc>" で X がマップされるのは、
'B' が含まれたとき: "\^[" (^[ は本当の <Esc>)
'B' が除かれたとき: "<Esc>" (5個の文字)
(どちらの場合も '<' が除かれているとする)
cpo-c
c {訳注: 検索でマッチする文字列があった後} カーソル位置
のマッチの終わり(ただし次行の開始位置を越えない)から次
の検索を行う。このフラグが含まれないと、次の検索はカー
ソル位置の1文字後から始まる。'c' が含まれると、"/abab"
で検索したとき "abababababab" には3回しかマッチしない
が、'c' が含まれないと5回マッチする。
cpo-C
C ":source" で読み込まれたファイルのうち、'\' で始まる行
を連結しない。line-continuation を参照。
cpo-d
d 'tags' 内で "./" という記法を使ったとき、タグファイル
はカレントファイルのディレクトリでなく、カレントディレ
クトリから探す。
cpo-D
D r, f や t のような、文字を引数に取る ノーマル
モードコマンドの後で、CTRL-K によるダイグラフの入力が
できなくなる。
cpo-e
e ":@r" でレジスタの内容を {訳注: Exコマンドとして} 実行
するとき、レジスタが行全体を保存したものでないときでも、
常に最終行に <CR> を付け加える。このフラグが含まれない
ときは、レジスタの内容が行全体を保存したものでなく、か
つ <CR> で終わらないならば、実行すると最終行はコマンド
ラインに表示され、<CR> を打ち込むまでは編集できる。
cpo-E
E 空の範囲に "y", "d", "c", "g~", "gu", "gU" などのコマ
ンドを使うとエラーになる。オペレータは作用する対象が最
低でも1文字ないと使えない。例: これが含まれると、最初
の桁で "y0" を行うとエラーになる。
cpo-f
f これが含まれると、カレントバッファにファイル名がまだ設
定されていないなら、":read" にファイル名の引数を与えた
とき、そのファイル名をカレントバッファのファイル名に設
定する。
cpo-F
F これが含まれると、カレントバッファにファイル名がまだ設
定されていないなら、":write" にファイル名の引数を与え
たとき、そのファイル名をカレントバッファのファイル名に
設定する。cpo-Pも参照。
cpo-g
g ":edit" を引数なしで使うと1行目に移動する。
cpo-H
H 空白のみを含む行の上で "I" を使ったとき、最後の空白の
前から挿入する。このフラグが含まれていないと、最後の空
白の後から挿入を開始する。
cpo-i
i これが含まれると、ファイルの読み込み中に中断が起きたと
き、ファイルは変更されたままになる。
cpo-I
I 'autoindent' によるインデントが挿入された直後にカーソ
ルを上下に移動したときインデントを削除しない。
cpo-j
j 行の連結時に追加する空白が、'.' の後のみ2個になり、'!'
や '?' の後は1個になる。'joinspaces' も参照。
cpo-J
J 文 sentence は '.', '!' または '?' の後に2個の空白を
伴わなければならない。<Tab> は空白とは見なされない。
cpo-k
k ":menu" で実行される部分や、キーマッピングや略語におい
て、直接入力されたキーコードを認識しない。例えば、
<Key> が ^[OA を送るなら (ここで ^[ は <Esc> )、
":map X ^[OA" で X がマップされるのは、
'k' が含まれたとき: "^[OA" (3個の文字)
'k' が除かれたとき: "<Key>" (1個のキーコード)
下の '<' も参照。
cpo-K
K キーマッピングの途中で、キーコードが完全に入力されるの
を待たない。<F1><F1> のマッピングは、2 番目の <F1> の
一部のみが読み込まれた場合、動作しなくなる。こうすると
<F1><Esc> と打ち込めばマッピングをキャンセルできる。
cpo-l
l 検索パターンの [] 範囲内で、'\' は文字通りに解釈され、
"\]", "\^", "\\" だけが特別な意味を持つ。/[] を参照。
'l' が含まれたとき:
"/[ \t]" がマッチするのは <Space>, '\' と 't'
'l' が除かれたとき:
"/[ \t]" がマッチするのは <Space> と <Tab>
cpo-\も参照。
cpo-L
L 'list' がオンのとき、'wrapmargin', 'textwidth',
'softtabstop' と仮想置換モード (gR を参照) で、<Tab>
の普通の数え方をせず、必ず 2 文字に数える。
cpo-m
m これが含まれると、対応する括弧の表示を0.5秒待つ。含ま
れていないと、対応する括弧の表示を0.5秒または次の文字
が打ち込まれるまで待つ。'showmatch' を参照。
cpo-M
M これが含まれていない場合、"%" での括弧の対応にバックス
ラッシュを考慮に入れる。すなわち "( \( )" や "\( ( \)"
で外側の括弧同士が対応するようになる。含まれている場
合、"%" はVi互換になり、バックスラッシュは無視される。
cpo-n
n これが含まれているときは折り返された行のテキストの表示
に 'number' と 'relativenumber' によって行番号表示され
ている列も使用される。
cpo-o
o 検索コマンドの行オフセットは、次回の検索には使われない。
cpo-O
O ファイルが上書きされたとき、編集を始めたときにはそのファ
イルが存在しなかった場合でも警告しない。これは別人に突
然作り出されたファイルに対する防御である。Viはこれに警
告を出さなかった。
cpo-p
p Vi互換のLisp用インデント。これが含まれないと、いくらか
良いアルゴリズムが使われる。
cpo-P
P これとフラグ 'F' が同時に含まれていると、コマンド
":write" で既存のファイルに追加するとき、カレントバッ
ファの名前がまだないならそのファイルの名前をカレント
バッファの名前にする。cpo-F
cpo-q
q 複数の行を連結するとき、2行を連結するときと同じ位置に
カーソルを置く。
cpo-r
r リドゥ (コマンド ".") で検索を繰り返すとき、実際には
"/" を使う。
cpo-R
R フィルタされた行のマークを除去する。このフラグが入って
いないと、:keepmarksを使ったときと同じようにフラグは
そのまま保たれる。
cpo-s
s バッファが初めてアクティブになる時点でバッファのオプショ
ンが設定される。これは Vim version 3.0 と同じ動作であ
る。そして既定ではこの動作を行う。これが含まれないと、
オプションはバッファが作られた時点で設定される。
cpo-S
S バッファのオプションを常にバッファに移動する時点で設定
する ('readonly', 'fileformat', 'filetype' と 'syntax'
以外)。これは (ほとんど) Vi互換の設定である。
オプションの値は元のカレントバッファでの値になる。ユー
ザーがオプションを変更し、その後で別のバッファに移ると、
その値はコピーされる。事実上、バッファオプションを全て
のバッファに対しグローバルにしている。
's' 'S' バッファのオプションをコピーするタイミング
オフ オフ バッファが作られた時点
オン オフ バッファが初めてアクティブになった時点 (既定)
なし オン バッファに移動するたび (Vi互換)
cpo-t
t タグコマンドの検索パターンが "n" による検索の繰り返し
にも使われる。これが含まれないと、検索パターンの履歴に
は加えられるが、最終検索パターンは変化しない。
cpo-u
u アンドゥがVi互換になる。undo-two-ways を参照。
cpo-v
v 挿入モードにおいて、バックスペースで消した文字を画面上
に表示したままにしておく。このフラグが入っていないと、
消された文字はすぐに画面から消える。このフラグが入って
いると、新しく入力された文字がバックスペースで消された
文字を上書きする。
cpo-w
w 空白の上で "cw" を使ったとき、1文字だけ変更して、次の
単語の始まりまでの空白は変更しない。
cpo-W
W 読み込み専用ファイルを上書きしない。これが含まれないと、
可能であれば ":w!" で読み込み専用ファイルも上書きでき
る。
cpo-x
x コマンドラインで <Esc> を打ち込むとコマンドを実行する。
Vimでの既定ではコマンドライン入力を中止して元のモード
に戻る。それは <Esc> は普通はコマンドの中止に使われる
からである。c_<Esc> を参照。
cpo-X
X "R" でカウントを指定したとき、置換されるテキストが一度
だけ削除される。カウントをつけた "." で "R" を繰り返し
たときも同じ。
cpo-y
y コピーコマンドを "." でリドゥできる。本当にこれを使い
たいのであれば、2度考えること。いくつかのプラグインを
壊すかもしれない。ほとんどの人が、"." が変更を繰り返す
ことを期待しているからである。
cpo-Z
Z オプション 'readonly' がオンになっているのに "w!" をし
たとき 'readonly' をオフにしない。
cpo-z
z "cw" および "d" コマンドの特殊ケース (cw および
d-special を参照)。
cpo-!
! フィルタコマンドをリドゥするとき、何であってもとにかく
最後に実行された外部コマンドを使う。これが含まれないと、
最後に実行された「フィルタ」コマンドが使われる。
cpo-$
$ 1行に対して変更をするとき、行を再描画せず、代わりに変
更されたテキストの最後に '$' を表示する。変更されたテ
キストはユーザーが新しいテキストを入力したときに上書き
される。その行はユーザーがカーソルを挿入点から動かすコ
マンドを入力したときに再描画される。
cpo-%
% "%" でVi互換の対応検索が行われる。
"#if", "#endif" などを認識しない。
"/*" と "*/" も認識しない。
単引用符 ''' または二重引用符 '"' の内部の括弧も数えら
れる。すると括弧を含む文字列が対応を乱すことになる。例
えば、"if (strcmp("foo(", s))" などでは最初の括弧と最
後の括弧はマッチしない。これが含まれないと、単引用符ま
たは二重引用符の内部の括弧は特別な扱いを受ける。引用符
の外部の括弧の対応を調べるときは、引用符の内部は一切無
視される。引用符の内部の括弧の対応を調べるときは、対応
する括弧を探す (存在すれば)。これはC言語プログラムでは
とても良く機能する。
このフラグはCインデントなど他の機能にも使われる。
cpo--
- これが含まれていると最初の行や最後の行を越えるような上
下移動コマンドは失敗する。含まれているとカーソルが最初
の行または最後の行に移動する(既にカーソルがその行にな
いかぎり)。
コマンド "-", "k", CTRL-P, "+", "j", CTRL-N, CTRL-J,
":1234" に適用される。
{訳注: 2行目で3kしたとき、これが含まれているならカーソ
ルは移動しない。含まれていないなら1行目へ移動する}
cpo-+
+ これが含まれていると、":write file" をしたとき、まだそ
のバッファが対応するファイルと異なっていても、そのバッ
ファのフラグ 'modified' がオフになる。
cpo-star
* ":*" を ":@" と同じように扱う。これが含まれないと、
":*" は ":'<,'>" の別名となり、ビジュアルエリアを選択
する。
cpo-<
< ":menu" で実行される部分や、キーマッピングや略語におい
て、<> 記法による特殊キーの認識を行わない。例えば、
":map X <Tab>" で X がマップされるのは、
'<' が含まれたとき: "<Tab>" (5個の文字)
'<' が除かれたとき: "^I" (^I は本当の <Tab>)
上の 'k' も参照。
cpo->
> レジスタにテキスト追加するとき、そのテキストの前に改行
文字をつける。
cpo-;
; , や ; で最後の t 検索を繰り返すとき、カーソルの
位置が検索文字の一つ手前であればカーソルを移動しない。
フラグが含まれていない場合は、カーソルはその文字を飛び
越えて次の場所にジャンプする。
次のものはPOSIXフラグである。起動時に$VIM_POSIXがセットされていない限
り、これらはViの既定値には含まれない。posix
フラグ 動作
cpo-#
# "D", "o", "O" に対するカウントは効果がない。
cpo-&
& ":preserve" が使われたとき通常終了時にバッファはまだ読
み込まれているが、スワップファイルを保存する。このフラ
グはVimの終了時に判定される。
cpo-\
\ 検索パターンの範囲[]の中のバックスラッシュが文字どおり
に解釈される。"\]" だけがエスケープになる。/[]を参照。
'\' が含まれていると "/[ \-]" は<Space>, '\', '-' に
マッチする。'\' が含まれていないと "/[ \-]" は<Space>,
'-' にマッチする。
cpo-lも参照。
cpo-/
/ コマンド:sの置換後文字列に "%" を指定したとき、前回の
置換後文字列を使う。:s%を参照。
cpo-{
{ コマンド{と}が行頭の文字 "{" にも止まる。
cpo-.
. カレントバッファが変更されているとき、"!" をつけないか
ぎりコマンド ":chdir" と ":cd" が失敗する。Vimは開いた
ファイルのフルパスを覚えているため、これを必要としな
い。
cpo-bar
| 環境変数$LINESと$COLUMNSの値をシステム固有の関数で得ら
れたターミナルサイズより優先させる。
'cryptmethod' 'cm'
'cryptmethod' 'cm' 文字列 (既定では "blowfish2")
グローバル/バッファについてローカル global-local
バッファをファイルに保存するときに使用される暗号化メソッドを設定する:
pkzip
zip PkZip 互換メソッド。弱い暗号化。
Vim 7.2 以前との後方互換。
後方互換性が必要な場合のみ使用すること。
blowfish
blowfish Blowfish メソッド。中強度の暗号化だが実装上の脆弱性が
ある。Vim 7.3 以降が必要。このメソッドで保存された
ファイルは Vim 7.2 以前のバージョンでは開くことができ
ない。ファイルには "seed" が付加されるのでファイルを書
き込むたびに暗号化されたバイト列は異なる。
廃れたので、今後は使用しないこと。
blowfish2
blowfish2 Blowfish メソッド。中強度の暗号化。Vim 7.4.401 以降が
必要。このメソッドで保存されたファイルは Vim 7.3 以前
のバージョンでは開くことができない。ファイルには
"seed" が付加されるのでファイルを書き込むたびに暗号化
されたバイト列は異なる。undo ファイルは (テキスト部分
だけではなく) 全体が暗号化される。
E1193 E1194 E1195 E1196 E1230
E1197 E1198 E1199 E1200 E1201
xchacha20 XChaCha20 暗号と Poly1305 メッセージ認証符号。中から強
強度の暗号化。
暗号処理は libsodium ライブラリによって提供され、Vim
が +sodium 付きでビルドされる必要がある。
ファイルにシード値とメッセージ認証符号(MAC)を加える。
暗号化されたファイルを読むには最低でも Vim 8.2.3022 が
必要になる。
スワップファイルの暗号化はサポートされないため、
xchacha20 暗号化が有効なときはスワップファイルは使われ
ない。
アンドゥファイルの暗号化はまだサポートされていないた
め、アンドゥファイルは現在は書き込まれない。
注意: この方法で書き込まれたファイルは、バイナリ形式が
後で変更された場合、同じバージョンの Vim で読み戻す必
要があるかもしれない。
廃れたので、今後は使用しないこと。
xchacha20v2 "xchacha20" と同じアルゴリズムで、暗号化ファイルととも
に鍵導出パラメータを正しく保存する。libsodium ライブラ
リのパラメータが変更された場合に、よりうまく動作するは
ずである。
まだ実験的: この方法で書かれたファイルは、後でバイナリ
フォーマットが変更された場合、同じバージョンの Vim で
読み返さなければならないかもしれない。
古いファイルを再度暗号化する時も "blowfish2" を使うべきである。
"xchacha20" メソッドはより優れた暗号化を提供するが、Vim のすべてのバー
ジョンで機能するわけではない。
暗号化されたファイルを読み込んだとき、'cryptmethod' は自動的にそのファ
イルに使用されている暗号メソッドに設定される。つまり、そのまま
'cryptmethod' を変更せずにファイルを保存すれば同じメソッドが使用され
る。
'cryptmethod' の設定を変更してもファイルは変更あり状態にはならない。設
定変更を有効にするにはファイルを保存する必要がある。もし他に変更がなけ
れば保存せずに終了したとしても警告は表示されない。 :X 参照。
グローバル設定を空文字に設定すると "blowfish2" が使用される。ローカル
設定を空文字に設定するとグローバル設定が使用される。
Vim の将来のバージョンに新しい暗号化メソッドが追加され、現在の Vim が
それを認識できないときは E821 エラーが表示される。
そのファイルは新しいバージョンの Vim で開く必要がある。
'cscopepathcomp' 'cspc'
'cscopepathcomp' 'cspc' 数値 (既定では 0)
グローバル
{+cscope 機能付きでコンパイルされたときのみ有効}
タグのリストの中でパスを {訳注: 上にさかのぼって} どこまで表示するかを
指定する。cscopepathcomp を参照。
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
'cscopeprg' 'csprg'
'cscopeprg' 'csprg' 文字列 (既定では "cscope")
グローバル
{+cscope 機能付きでコンパイルされたときのみ有効}
Cscope を実行するコマンド名を指定する。cscopeprg を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'cscopequickfix' 'csqf'
'cscopequickfix' 'csqf' 文字列 (既定では "")
グローバル
{+cscope または +quickfix 機能つきでコンパイルされ
たときのみ利用可能}
cscopeの結果を表示するのにQuickFixウィンドウを使うかどうかを指定する。
cscopequickfixを参照。
'cscoperelative' 'csre' 'nocscoperelative' 'nocsre'
'cscoperelative' 'csre' 切替 (既定ではオフ)
グローバル
{+cscope機能つきでコンパイルされたときのみ利用可能}
cscope のプリフィックス (-P) がないとき、このオプションをオンに設定す
ると、cscope.out が保存されているディレクトリがプリフィックスとして使
われる。
cscoperelative 参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'cscopetag' 'cst' 'nocscopetag' 'nocst'
'cscopetag' 'cst' 切替 (既定ではオフ)
グローバル
{+cscope機能つきでコンパイルされたときのみ有効}
コマンドtagにcscopeを使う。cscope-optionsを参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'cscopetagorder' 'csto'
'cscopetagorder' 'csto' 数値 (既定では 0)
グローバル
{+cscope 機能付きでコンパイルされたときのみ有効}
コマンド ":cstag" が検索を行う順番を指定する。cscopetagorder を参照。
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
'cscopeverbose' 'csverb'
'nocscopeverbose' 'nocsverb'
'cscopeverbose' 'csverb' 切替 (既定ではオフ)
グローバル
{+cscope 機能付きでコンパイルされたときのみ有効}
Cscope のデータベースに情報を追加するときメッセージを表示する。
cscopeverbose を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'cursorbind' 'crb' 'nocursorbind' 'nocrb'
'cursorbind' 'crb' 切替 (既定ではオフ)
ウィンドウについてローカル
このオプションをオンにすると、現在のウィンドウでカーソルを動かしたとき
に、他のウィンドウ ('cursorbind' オプションが設定されたウィンドウ) 内
のカーソルも同じ行と列に移動する。このオプションはバージョン違いのファ
イルの差を見るときに便利である ('diff' 参照)。差分モードでは追加または
削除された行 (行に文字がなくても) のみが考慮される。
'cursorcolumn' 'cuc' 'nocursorcolumn' 'nocuc'
'cursorcolumn' 'cuc' 切替 (既定ではオフ)
ウィンドウについてローカル
{+syntax機能つきでコンパイルされたときのみ有効}
カーソルのある画面上の桁をCursorColumnで強調するhl-CursorColumn。
テキストを桁揃えするのに便利。スクリーンの再描画が遅くなる。
カレントウィンドウに対してだけこの強調をしたいなら次の自動コマンドを使
う:
au WinLeave * set nocursorline nocursorcolumn
au WinEnter * set cursorline cursorcolumn
au WinEnter * set cursorline cursorcolumn
'cursorline' 'cul' 'nocursorline' 'nocul'
'cursorline' 'cul' 切替 (既定ではオフ)
ウィンドウについてローカル
{+syntax 機能つきでコンパイルされたときのみ有効}
カーソルがあるテキスト行を CursorLine hl-CursorLine で強調する。
カーソルを目立たせるのに便利である。スクリーンの再描画が遅くなる。
ビジュアルモードでは選択されたテキストをわかりやすくするためにこの強調
は行われない。
'cursorlineopt' 'culopt'
'cursorlineopt' 'culopt' 文字列 (既定では "number,line")
ウィンドウについてローカル
{+syntax 機能つきでコンパイルされたときのみ有効}
'cursorline' の表示方法の設定のコンマ区切りのリスト。
有効な値:
"line" CursorLine hl-CursorLine でカーソルのテキスト行を強
調表示する。
"screenline" CursorLine hl-CursorLine を使用して、カーソルの画面
行のみを強調表示する。
"number" CursorLineNr hl-CursorLineNr でカーソルの行番号を強
調表示する。
特別な値:
"both" 値 "line,number" のエイリアス。
"line" と "screenline" を一緒に使用することはできない。
'debug'
'debug' 文字列 (既定では "")
グローバル
以下の値を指定することができる:
msg 省かれるはずのエラーメッセージも表示する。
throw 省かれるはずのエラーメッセージも表示し、さらに例外を投げ、
v:errmsgを設定する。
beep ビープが鳴るだけのところでメッセージを表示する。
これらの値はコンマで区切って組み合わせることができる。
"msg" と "throw" はオプション 'foldexpr' や 'formatexpr', 'indentexpr'
をデバッグするのに便利である。
'define' 'def'
'define' 'def' 文字列 (既定では "^\s*#\s*define")
グローバル/バッファについてローカル global-local
マクロ定義を発見するのに使われるパターンを指定する。値はコマンド "/"
で使うのと同様の検索パターンである。このオプションは "[i" や "[d" 等に
使われる include-search。オプション 'isident' は、これがマッチした部
分の後の定義された名前を認識するのに使われる。
{'define' のマッチ}{非識別子}{定義名}{非識別子}
値に空白や '\' を含めるために '\' を挿入することに関しては、
option-backslash を参照。
既定値はCプログラム用である。C++プログラムには、定数定義を加えて次のよ
うにすると便利だろう:
^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\)
名前の直前に "\ze" を使用し、何が続くか確認するためのパターンを続けることもできる。Javascript の例、関数が "func_name = function(args)" で
定義されている場合:
^\s*\ze\i\+\s*=\s*function(
関数が "func_name : function() {..." で定義されている場合: ^\s*\ze\i\+\s*[:]\s*(*function\s*(
":set" で設定するときは、'\' の数を2倍にする必要がある!これを回避するには、:let とシングルクォートの文字列を使用する:
let &l:define = '^\s*\ze\k\+\s*=\s*function('
'delcombine' 'deco' 'nodelcombine' 'nodeco'
'delcombine' 'deco' 切替 (既定ではオフ)
グローバル
オンのときは、Unicodeのファイルの編集時、バックスペースとノーマルモー
ドのコマンド "x" はそれぞれの文字の上の combining character のみを削除
する。オフのときは (これが既定である) combining character と文字は同時
に削除される。
Note: 'delcombine' がオンになっていると "xx" が "2x" と異った動作をす
る場合がある。
このオプションは、アラビア語、ヘブライ語その他の言語で、ベースとなる文
字の上にcombining character が付いていて、combining character のみを削
除したいときに便利である。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'dictionary' 'dict'
'dictionary' 'dict' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
ファイル名のコンマ区切りのリスト。キーワード補完コマンド
i_CTRL-X_CTRL-K 用の単語を探すために使われる。単語のリストからなるファ
イルを指定する。その中では1行ごとに1語が並べられていてもよいし、1行に
キーワードでない文字 (空白を推奨) で区切られた数語が並んでいてもよい。
1行の文字数の最大値は510バイト分である {訳注: 日本語のいわゆる全角文字
では半分の255文字}。
このオプションが空もしくはエントリに "spell" が含まれていて、かつスペ
ルチェックが有効になっているとき、現在アクティブな 'spelllang' 用の単
語リスト内の単語が使われる。spell を参照。
ファイル名にコンマを含めるには、コンマの前に '\' を置くこと。コンマの
後ろの空白は無視されるが、それ以外の空白はファイル名の一部として扱われ
る。'\' の使い方については option-backslash を参照すること。
このオプションは変数の辞書型Dictionaryとは関係ない。
単語リストはどこで見つかるか?
- FreeBSDでは、"/usr/share/dict/words" というファイルがある。
- Simtelアーカイブでは、ディレクトリ "msdos/linguist" を探すこと。
- GNUコレクションでは、"miscfiles" の中にある。
リストにディレクトリを追加するときには :set+= コマンド、リストからディ
レクトリを除くときには :set-= コマンドを使うのがよい。こうすると将来
のバージョンで異なった既定値が使われるようになったときに、問題が起きる
のを防げる。
セキュリティ上の理由から、バッククォート (`) をこのオプションの値に使
うことはできない。
'diff' 'nodiff'
'diff' 切替 (既定ではオフ)
ウィンドウについてローカル
{+diff 機能付きでコンパイルされたときのみ有効}
カレントウィンドウをファイル間の差異を示すウィンドウのグループに組み入
れる。vimdiff を参照。
'dex' 'diffexpr'
'diffexpr' 'dex' 文字列 (既定では "")
グローバル
{+diff 機能付きでコンパイルされたときのみ有効}
2個のファイル間の差異を求めるとき、diffファイル(ed形式かunified形式)を
求めるために評価される expression。diff-diffexpr を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'dip' 'diffopt'
'diffopt' 'dip' 文字列 (既定では "internal,filler,closeoff")
グローバル
{+diff 機能付きでコンパイルされたときのみ有効}
差分モード用のオプション設定。値は、以下のキーワードのコンマ区切りのリ
ストである。指定しないものがあってもよい。
filler 片方のウィンドウ内のテキストのある位置に行が挿
入されていたときに、ウィンドウのスクロールを同
期させるために、埋め立て用の行を表示する。ウィ
ンドウが隣り合っていて、オプション
'scrollbind' がオンのときには大抵便利である。
context:{n} 変更のあった行の上下を {n} 行だけ折り畳まずに
表示 (コンテキストの表示) する。指定されないと、
コンテキストは6行になる。
0を使用する場合、折り畳みは削除された行につい
てもその間に行を必要とするので、コンテキストは
実際には1である。折り畳みを完全に無効にするに
は、非常に大きな値 (999999) に設定する。
fold-diff を参照。
iblank 行がすべて空白の場合は変更を無視する。
'diffexpr' が空の場合、"diff" コマンドに "-B"
フラグを追加する。これが正確に何をするかについ
ては、"diff" コマンドのドキュメントをチェック
すること。
NOTE: 空白行の違いは考慮されてないため、差分
ウィンドウは同期しなくなる。
icase テキストの大文字と小文字の違いを無視する。"a"
と "A" は同じものと見なされる。オプション
'diffexpr' が空なら、コマンド "diff" にフラグ
"-i" を追加する。
iwhite 空白の数の違いを無視する。オプション
'diffexpr' が空なら、コマンド "diff" にフラグ
"-b" を追加する。これが正確には何を指定してい
るのかについては、コマンド "diff" のドキュメン
トを参照すること。これは後ろに追加された空白は
無視するが、前に追加された空白は無視しないはず
である。
iwhiteall 空白の変更をすべて無視する。'diffexpr' が空の
場合、"diff" コマンドに "-w" フラグを追加する。
これが正確に何をするかについては、"diff" コマ
ンドのドキュメントをチェックすること。
iwhiteeol 行末での空白の変更を無視する。'diffexpr' が空
の場合、"diff" コマンドに "-Z" フラグを追加す
る。これが正確に何をするかについては、"diff"
コマンドのドキュメントをチェックすること。
horizontal (他に明示的に指定されない限り)ウィンドウを水平
分割して差分モードを開始する。
vertical (他に明示的に指定されない限り)ウィンドウを垂直
分割して差分モードを開始する。
closeoff 'diff' が設定されたウィンドウが閉じられ、同じ
タブページに 'diff' が設定されたウィンドウが
1 つだけ残っているとき、そのウィンドウで
:diffoff を実行する。これは :diffsplit コ
マンドを取り消す。
hiddenoff バッファが隠れバッファになるときに差分モードを
使用しない。
foldcolumn:{n} 差分モードの開始時にオプション 'foldcolumn' を
{n}に設定する。
followwrap 'wrap' オプションにそのまま従う。
internal 内部diffライブラリを使用する。'diffexpr' が設
定されている場合は無視される。 E960
バッファを書き込むときにメモリが不足すると、こ
の項目はそのバッファに関連する差分に対して無視
される。これがいつ発生するかを確認するために
'verbose' オプションを設定すること。
indent-heuristic
内部diffライブラリのインデントヒューリスティッ
クを使用する。
algorithm:{text} 指定した差分アルゴリズムを内部diffエンジンで
使用する。現在サポートされているアルゴリズムは:
myers デフォルトのアルゴリズム
minimal 可能な限り小さな差分を生成するため
に余分な時間を費やす
patience patience差分アルゴリズム
histogram histogram差分アルゴリズム
例:
:set diffopt=internal,filler,context:4
:set diffopt=
:set diffopt=internal,filler,foldcolumn:3
:set diffopt-=internal " do NOT use the internal diff parser
:set diffopt=
:set diffopt=internal,filler,foldcolumn:3
:set diffopt-=internal " do NOT use the internal diff parser
'digraph' 'dg' 'nodigraph' 'nodg'
'digraph' 'dg' 切替 (既定ではオフ)
グローバル
{+digraphs 機能付きでコンパイルされたときのみ有効}
挿入モードで {char1} <BS> {char2} でダイグラフを入力できるようにする。
digraphs を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'directory' 'dir'
'directory' 'dir' 文字列 (Amigaでの既定値: ".,t:",
Win32での既定値: ".,$TEMP,c:\tmp,c:\temp"
Unixでの既定値: ".,~/tmp,/var/tmp,/tmp")
グローバル
スワップファイル用ディレクトリの、コンマ区切りのリスト。
推奨値: ".,~/vimswap//" - これは可能な場合は編集したファイルの隣にス
ワップファイルが置かれ、そうでないならあなたの個人スワップディレクトリ
に置かれる。"~/vimswap//" はあなただけが読み込み可能にしておくこと。
可能な項目:
- スワップファイルは、リスト内の利用できるディレクトリのうち、最初のディ
レクトリの中に作られる。
- 値が空だとスワップファイルは作られず (回復は不可能になる!)、E303
エラーは発生しない。
- ディレクトリに "." を指定すると、編集されているファイルと同じディレ
クトリにスワップファイルが作られる。Unixではファイル名の先頭にドット
が追加されるので、ディレクトリ内のファイル一覧には表示されない。
MS-Windowsでは属性 "hidden" が設定され、可能ならばファイル名の先頭に
ドットが追加される。
- "./" で始まるディレクトリ (MS-Windowsでは ".\") を指定すると、編集さ
れているファイルからの相対的な位置にスワップファイルが作られる。先頭
の "." は編集されているファイルのパス名に置換される。
- UnixとWin32では、指定されたディレクトリ名の末尾がディレクトリの区切
り記号2個 ("//") で終わっていたら、スワップファイルの名前はフルパス
に従って付けられる。スワップファイルのファイル名をフルパス形式で表
し、ディレクトリの区切り文字 (Win32ではドライブレターのコロンを含む)
をパーセント記号 '%' で置き換えたものが使われる。こうするとスワップ
ファイル格納用ディレクトリの中でもファイル名の一意性が保証される。
Win32では、"\\" で終わることも可能である。ただし、区切り文字のコンマ
の前では "\\" でなく "//" と書かなければならない。"\\" と書くと、コ
ンマがファイル名の一部と解釈されてしまうためである。したがって、'\\'
の代わりに '//' を使用することを勧める。
- コンマの後の空白は無視されるが、その他の場所の空白はディレクトリ名の
一部と見なされる。ディレクトリ名の先頭に空白を指定したいなら、'\' を
前に付けること。
- コンマをディレクトリ名の一部に使いたいなら、コンマの前に '\' を付け
ること。
- ディレクトリ名は ':' や '/' で終わっていてもよい。
- 環境変数は展開される :set_env。
- '\' の扱いには注意。空白の前には1個置く。値の中に指定するには2個置く
(option-backslash を参照)。例:
:set dir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
- Vim version 3.0 との後方互換性のため、値の先頭に '>' を置いてもそれは無視される。
リストの先頭には "." を指定することを推奨する。こうすると、同じファイ
ルを2重に編集しようとすると警告が出る。Unixでディレクトリ "/tmp" を使
うのはお勧めできない。システムがクラッシュすると、スワップファイルも失
われてしまう。ディレクトリ "/var/tmp" の中はリブート時にも大抵クリアさ
れないので、ディレクトリ "/tmp" よりもよい選択である。しかしコンピュー
タの他の人からファイルを見ることができてしまうかもしれない上に、その中
には多くのファイルが入っているかもしれないので、ユーザーのスワップファ
イルは他のファイルに紛れて分からなくなるかもしれない。ユーザーのホーム
ディレクトリ内のディレクトリ "tmp" が最初に試されるのはそのためだ。
リストにディレクトリを追加するときにはコマンド :set+=、リストからディ
レクトリを除くときにはコマンド :set-= を使うのがよい。こうすると将来
のバージョンで異なった既定値が使われるようになったときに、問題が起きる
のを防げる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'display' 'dy'
'display' 'dy' 文字列 (既定では ""、defaults.vim 内で "truncate"
にセットされる)
グローバル
テキスト表示の方法を変える。値は以下のフラグのコンマ区切りのリストであ
る:
lastline これが含まれると、ウィンドウの最後の行ができる限りまで
表示される。その行に表示されていない箇所があることを示
すために、画面の最後の行の最後の桁に "@@@" が表示され
る。
truncate "lastline" に似ているが、"@@@" は画面の最後の行の最初
の桁に表示される。"lastline" を上書きする。
uhex unprintable な文字を {訳注: 文書先頭を参照} <xx> とい
う形式で16進数表示し、^C や ~C の形式を使わない。
"lastline" も "truncate" も含まれていない時、収まらない最後の行は "@"
に置き換えられる。
"@" 文字は 'fillchars' の "lastline" 項目で変更できる。この文字は
hl-NonText でハイライトされる。
'eadirection' 'ead'
'eadirection' 'ead' 文字列 (既定では "both")
グローバル
オプション 'equalalways' が適用されるときに、
ver ウィンドウの高さにのみ効果がある
hor ウィンドウの幅にのみ効果がある
both ウィンドウの高さと幅、両方に効果がある
'ed' 'edcompatible' 'noed' 'noedcompatible'
'edcompatible' 'ed' 切替 (既定ではオフ)
グローバル
コマンド ":substitute" のフラグ 'g' と 'c' を、次に別の方を指定するま
でずっと効力を持つようにする。complex-change を参照。オプション
'gdefault' も参照。
このオプションをオンに設定するとプラグインを壊すかもしれない!
このオプションは Vim9 script では利用されない。
'emoji' 'emo' 'noemoji' 'noemo'
'emoji' 'emo' 切替 (既定ではオン)
グローバル
オンにすると全ての Unicode 絵文字は全角とみなされる。
これは通常の表示として半角幅になる "テキストemoji" は除外される。残念
ながら、これに関する適切な仕様がない。そしてこれは試行錯誤に基づいて決
定された。setcellwidths() 関数を使うことでこの挙動を変更できる。
'encoding' 'enc' E543
'encoding' 'enc' 文字列 (MS-Windowsでの既定値: "utf-8",
他の既定値: $LANG または "latin1")
グローバル
Vim内部で使われる文字エンコーディングを設定する。そのエンコーディング
はバッファやレジスタ内のテキスト、expression 内の文字列、ファイル
viminfo 内のテキスト等に適用される。つまり、このオプションはVimの通常
扱う文字の種類を設定する。指定できる値については encoding-names を参
照。
NOTE: このオプションの値を変更しても、Vim内部の既存のテキストのエンコー
ディングは変化しないので注意。非ASCII文字がおかしくなる恐れもある。既
定の値から変更しないか、Vimの起動時に限って設定すること。multibyteを
参照。メニューを再読み込みするには:menutransを参照。
このオプションはモードライン (modeline) では設定できない。テキストが
壊れてしまうため。
NOTE: GTK+ 2またはそれ以降では 'encoding' を "utf-8" に設定することが
強く推奨される。他の値であってもよいが、この環境では "utf-8" が自然な
選択であり、不必要な変換のオーバーヘッドを避けることができる。GUIやター
ミナルのバージョンによって挙動が異なってしまうのを避けるためと、新しく
作られたファイルのエンコーディングが知らないうちに変わってしまうのを避
けるため('fileencodings' が空の場合)、"utf-8" は既定にはなっていない。
編集するファイルの文字エンコーディングはオプション 'encoding' と異なっ
てもよい。そちらは 'fileencoding' で設定される。エンコーディングの変換
は関数 iconv() または 'charconvert' で指定された式による。
'encoding' がマルチバイトエンコーディングであるかを知るに
は、以下のコマンドが使える:
if has("multi_byte_encoding")
普通、'encoding' はユーザーのカレントロケールと同じである。Vimがユー
ザーの環境設定を認識したならば、それが既定値になる。'encoding' の値が
カレントロケールに設定されていなければ、入力されたテキストと表示される
テキストを変換するために、'termencoding' が設定されていなければならな
い。encoding-table を参照。
このオプションを設定すると、必要に応じてフォントを設定できるように、
autocommand のイベント EncodingChanged が発生する。
オプションが設定されると、値は小文字に変換される。そのため、値を大文字
で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。
エンコーディングが認識されると、値は標準の名前に変換される。例えば
"Latin-1" は "latin1" に、"ISO_88592" は "iso-8859-2" に、"utf8" は
"utf-8" になる。
Note: "latin1" という値は、エンコーディングを判別できなかったときにも
使われるので注意。これが正しいのは、編集するファイルが実際に latin1 エ
ンコーディングのときのみである!実際の文字セットが latin1 でないときは、
'fileencoding' と 'fileencodings' が空であるのを確認すること。変換が必
要なときは、utf-8 を使うようにすること。
値が "unicode", "ucs-2" または "ucs-4" であるとき、Vim内部では utf-8
が使われている。このことはユーザーが編集中に注意を払うことはないが、
viminfo-file については問題になる。またVimはターミナルも utf-8 を使
うことを想定する。そのため、'encoding' を utf-8 でなく上記のいずれかの
値に設定しても、'fileencoding' が空のときに編集するファイルのエンコー
ディングにしか影響がない。
'encoding' が Unicode の一種に設定され、'fileencodings' がまだ設定され
ていなければ、'fileencodings' の既定値は変更される。
'endoffile' 'eof' 'noendoffile' 'noeof'
'endoffile' 'eof' 切替 (既定ではオン)
バッファについてローカル
ファイル読み込み時に、ファイルの最後に CTRL-Z 文字が見つかったことを示
す。通常、'fileformat' が "dos" の場合にのみ発生する。このオプションが
オフで 'binary' オプションがオン、または 'fixeol' オプションがオフの
ファイルを書き込む場合、ファイルの末尾に CTRL-Z は書き込まれない。
設定例については eol-and-eof を参照。
'endofline' 'eol' 'noendofline' 'noeol'
'endofline' 'eol' 切替 (既定ではオン)
バッファについてローカル
ファイルを書き込むときに、このオプションがオフでオプション 'binary' が
オンあるいはオプション 'fixeol' がオフに設定されている場合は、ファイル
の最終行に <EOL> が書き込まれない。このオプションはファイルの編集を始
める時に、ファイルが <EOL> を持っているかどうかによって自動的にオンま
たはリセットされる。普通はユーザーがこのオプションを設定する必要はな
い。
'binary' がオフで 'fixeol' がオンのとき、このオプションの値はファイル
書き込み時に使用されない。{訳注: 必ず最終行に <EOL> が書き込まれる。}
'binary' がオンもしくは 'fixeol' がオフの時は最終行の <EOL> の状態を維
持する為にこのオプションが使用される。これはファイルが書き込まれる際
に、<EOL> の有無を元のファイルのままにするといったシチュエーションを想
定している。しかし <EOL> の有無を現状から変えたい場合には、このオプ
ションを変更することで実現できる。
設定例については eol-and-eof を参照。
'equalalways' 'ea' 'noequalalways' 'noea'
'equalalways' 'ea' 切替 (既定ではオン)
グローバル
オンのときは、ウィンドウを分割したり閉じたりした後、全てのウィンドウが
自動的に同じサイズになる。これはこのオプションがオフになった瞬間にも起
こる。オフのときは、ウィンドウを分割するとカレントウィンドウのサイズだ
けが減り、他のウィンドウに変化はない。ウィンドウを閉じると、
('splitbelow' と 'splitright' に従って) 閉じたウィンドウの隣のウィンド
ウの行数が増す。
水平に分割されたウィンドウと垂直に分割されたウィンドウが混在していると
きは、サイズの最小値が計算され、いくつかのウィンドウは (余裕があれば)
大きくなる。'eadirection' はサイズの変化する方向を指定する。
'winfixheight', 'winfixwidth' を設定するとウィンドウの高さ・幅が変わる
のを防ぐことができる。
新規ウィンドウ作成時にウィンドウサイズが指定された場合、ウィンドウサイ
ズは等しくならない(これは複雑だが、将来は実装されるかもしれない)。
'equalprg' 'ep'
'equalprg' 'ep' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
コマンド "=" に使う外部プログラムを指定する。値が空のときは内部関数が
整形に使われる (オプション 'lisp', 'cindent' または 'indentexpr')。
Vim が内部フォーマットなしでコンパイルされているときは indent コマン
ドが使われる。
環境変数は展開される :set_env。値に空白や '\' を含める方法については
option-backslash を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'errorbells' 'eb' 'noerrorbells' 'noeb'
'errorbells' 'eb' 切替 (既定ではオフ)
グローバル
エラーメッセージに伴ってベル (ビープ音または画面フラッシュ) を発生させ
る。このオプションはエラーメッセージにのみ適用され、メッセージのない多
くのエラー (例えばノーマルモードで <ESC> を打ち込んだとき) については
ベルは常に使用される。ベルをビープ音にしたり、画面フラッシュにしたり、
無効にしたりするためには、オプション 'visualbell' を参照。ベルを鳴らす
条件を微調整するには 'belloff' を参照。
'errorfile' 'ef'
'errorfile' 'ef' 文字列 (Amigaでの既定値: "AztecC.Err",
他の既定値: "errors.err")
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
QuickFixモードで使われるエラーファイルの名前 (:cf を参照)。
コマンドライン引数 "-q" が指定されたときは、オプション 'errorfile' は
それに続く値に設定される。-q を参照。
コマンド ":make" には「使われない」。それについては 'makeef' を参照。
環境変数は展開される :set_env。値に空白や '\' を含める方法については
option-backslash を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'errorformat' 'efm'
'errorformat' 'efm' 文字列 (既定値はとても長い)
グローバル/バッファについてローカル global-local
{+quickfix 機能付きでコンパイルされたときのみ有効}
エラーファイルの内容の書式を、関数 scanf 風に指定する (errorformat
を参照)。
'esckeys' 'ek' 'noesckeys' 'noek'
'esckeys' 'ek' 切替 (Vimの既定値: オン, Viの既定値: オフ)
グローバル
オンのときは、<Esc> で始まるファンクションキーも挿入モードで認識される
ようになる。オフのときは、<Esc> で始まるカーソルキーとファンクション
キーは、挿入モードで使うことができない。こうすることの利点は、<Esc> を
一回打ち込むだけですぐに認識され、1秒ほど待つ必要がないことだ。このオ
プションをオフにしなくても、オプション 'timeoutlen' と 'ttimeoutlen'
を変更してみるとよい。 Note 'esckeys' がオフのときでも、どのキーを
マッピングすることもできるが、そのままではカーソルキーは使用できないこ
とに注意。
NOTE: このオプションは、'compatible' がオンになるとViの既定値に、オフ
になるとVimの既定値になるので注意。
NOTE: このオプションがオフのとき、挿入モードでは modifyOtherKeys お
よび xterm-bracketed-paste 機能は無効化される。修飾子付きのキーが入
力されたときに挿入モードが終了するのを防ぐためである。
'eventignore' 'ei'
'eventignore' 'ei' 文字列 (既定では "")
グローバル
Autocommand のイベント名のうち、無視したいもののリスト。
"all" が含まれていると全ての autocommand のイベントが無視され、
autocommand は実行されなくなる。
それ以外では、値はイベント名のコンマ区切りのリストである。例:
:set ei=WinEnter,WinLeave
'expandtab' 'et' 'noexpandtab' 'noet'
'expandtab' 'et' 切替 (既定ではオフ)
バッファについてローカル
挿入モードで <Tab> を挿入するとき、代わりに適切な数の空白を使う。ま
た、コマンド '>' や '<' によるインデントや、オプション 'autoindent' が
オンのときのインデントでも空白を使う。'expandtab' がオンのときに本当の
タブを挿入するには、CTRL-V<Tab> を使うこと。:retab と ins-expandtab
も参照。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'exrc' 'ex' 'noexrc' 'noex'
'exrc' 'ex' 切替 (既定ではオフ)
グローバル
カレントディレクトリ内のファイル .vimrc, .exrc や .gvimrc 等の読み込み
を有効にする。
このオプションを設定することは潜在的な機密漏洩を意味する。例えば、
パッケージを解凍することや github からファイルを取得することを考える
と、その中に含まれる .vimrc はトロイの木馬になりえる。
このオプションは設定しないほうが良い! {訳注:太字で強調}
その代わりに自分の .vimrc で、ディレクトリ毎のオプションを設定する
autocommand を定義するべきである。
このオプションをオンにするなら、オプション 'secure' もオンにするよう検
討すること (initialization を参照)。
.vimrc と gui-init も参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'fileencoding' 'fenc' E213
'fileencoding' 'fenc' 文字列 (既定では "")
バッファについてローカル
カレントバッファのファイルの文字エンコーディングを設定する。
'fileencoding' と 'encoding' が異なるとき、ファイルの書き出しの際に文
字エンコーディングの変換が行われる。読み込みについては後述。
'fileencoding' が空の場合、'encoding' と同じ値が使われる (ファイルの読
み書きの際に変換をしない)。
値が設定されたときにはエラーは発生しない。使われるとき、つまりファイル
に書き込むときのみ発生する。
'encoding' と 'fileencoding' がともに Unicode エンコーディングであり、
'fileencoding' が utf-8 でない場合にも変換が行われる。内部では Unicode
は常に utf-8 で保持されているためである。
警告: 文字エンコーディングを変換すると、情報が失われるおそれが
ある!'encoding' が "utf-8" など Unicode エンコーディングだと、
変換は大抵成功するし、逆変換をしても同じテキストになる。
'encoding' が "utf-8" でないときは、失われる文字があるかもしれ
ない!
指定可能な値については 'encoding' を参照。それらに加え、変換ツールで変
換可能なエンコーディングの値も設定できる。mbyte-conversionを参照。
ファイルを読み込むときは、'fileencoding' は 'fileencodings' の値の中か
ら設定される。あるエンコーディングのファイルを読み込むには
'fileencoding' を設定してもだめで、引数 ++enc を使う。1つの例外:
'fileencodings' が空のときは 'fileencoding' の値が使われる。
新規ファイルに対しては 'fileencoding' のグローバルな値が使われる。
"8bit-" や "2byte-" を頭に付けてもここでは意味がなく、無視される。
オプションが設定されると、値は小文字に変換される。そのため、値を大文字
で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。
値が 'encoding' の値に含まれることが認識されると、値は標準の名前に変換
される。例えば "ISO_88592" は "iso-8859-2" になる。
ファイルの編集を始めた後にこのオプションを設定すると、'modified' がオ
ンになる。なぜならそのファイルの中身は、書き込まれるときには違うものに
なるからである。
'fenc' をモードラインで設定した場合、設定はファイルが読み込まれた後で
変更されるので注意すること。つまり設定された値はそのファイルを保存する
ときになってから効果を発揮する。もし 'fenc' をモードラインで設定するな
ら 'nomodified' も同時に設定すると ":q" での終了を妨げないのでいいかも
しれない。
このオプションは 'modifiable' がオフのときには変更することができない。
'fe'
NOTE: Vim version 6.0 以前では、このオプションはVim全体の文字エンコー
ディングを指定していたことに注意。これは誤りだった。そのためには代わり
に 'encoding' を使うこと。古い省略形式の名前は 'fe' だが、これはもう使
われていない。
'fileencodings' 'fencs'
'fileencodings' 'fencs' 文字列 (既定値: "ucs-bom",
'encoding' の値がUnicodeに設定されたときは
"ucs-bom,utf-8,default,latin1")
グローバル
値は、既存のファイルの編集を開始するときに考慮される文字エンコーディン
グのリストである。ファイルが読み込まれると、Vimは指定されたうちの先頭
の文字エンコーディングを使おうとする。そのときエラーが発見されると、値
のリスト内で次に並んでいるエンコーディングが試される。あるエンコーディ
ングでうまくいくとわかると、'fileencoding' がそれに設定される。すべて
のエンコーディングが失敗すると 'fileencoding' は空文字列に設定され、
'encoding' の値が使われることになる。
警告: 文字エンコーディングを変換すると、情報が失われるおそれが
ある!'encoding' が "utf-8" だと、変換は大抵成功するし、逆変換
をしても同じテキストになる。'encoding' が "utf-8" でないときは、
非ASCII文字が失われるかもしれない!変換できない文字をどう扱う
かは引数++badで指定することができる。
空ファイルやASCII文字のみのファイルではほとんどのエンコーディングでう
まくいくので、'fileencodings' の最初の値が使われる("ucs-bom" を除く。
これはBOMがなければいけない)。他のエンコーディングがよければ自動コマン
ドイベントBufReadPostを使って、そのエンコーディングが使われるかどうか
を判定すること。例:
au BufReadPost * if search('\S', 'w') == 0 |
\ set fenc=iso-2022-jp | endif
これは、ファイルが空白文字しか含まないとき 'fileencoding' を\ set fenc=iso-2022-jp | endif
"iso-2022-jp" に設定する。
引数++encを使ったときは 'fileencodings' の値は考慮されない。
新規ファイルには 'fileencodings' は適用されないことに注意。代わりに
'fileencoding' のグローバルな値が適用される。これを設定するには:
:setglobal fenc=iso-8859-2
とする。これは存在しないファイルが空のファイルとは異なるエンコーディングになることを意味する。
ファイル先頭にUnicodeの BOM (Byte Order Mark: バイト順マーク) があるか
どうか調べるには、"ucs-bom" という特別な値が使える。この値を "utf-8"
等のUnicode系の値よりも後に指定すると正しく機能しない。
8ビットエンコーディング("latin1" など)の項目はリストの最後に書かなけれ
ばならない。そうしないとVimがエラーを検出できず、常にそのエンコーディ
ングが適用されてしまうためである。
特別な値 "default" を使うと環境からのエンコーディングが適用される。
MS-Windows ではシステムのエンコーディングである。それ以外では
'encoding' の既定の値である。これは 'encoding' が "utf-8" に設定され、
環境がロシア語などlatin1でないエンコーディングを使っているときに便利で
ある。
'encoding' が "utf-8" のとき、ファイルが不正なバイト列を含んでいるとそ
のファイルはUTF-8と認識されない。コマンド8g8を使うと不正なバイト列を
見つけることができる。
間違った値: どこが間違っているか:
latin1,utf-8 常に "latin1" が使われてしまう
utf-8,ucs-bom,latin1 utf-8のファイルでBOMが認識されない
cp1250,latin1 常に "cp1250" が使われてしまう
'fileencodings' が空のときには 'fileencoding' は変更されない。
設定可能な値については 'encoding' を参照すること。
このオプションを設定しても次にファイルを読み込むときまでは効果がない。
'fileformat' 'ff'
'fileformat' 'ff' 文字列 (MS-Windows での既定値: "dos",
Unix での既定値: "unix")
バッファについてローカル
バッファにファイルを読み込んだり、バッファからファイルに書き込んだりす
るときに使われる <EOL> を、カレントバッファについて設定する。
dos <CR><NL>
unix <NL>
mac <CR>
"dos" が使われたとき、ファイル末尾の CTRL-Z は無視される。
file-formats と file-read を参照。
ファイルの文字エンコーディングについてはオプション 'fileencoding' を参
照。
'binary' がオンのときは、'fileformat' の実際の値は無視され、ファイルの
読み書きは値が "unix" に設定されたときのように行われる。
ファイルの編集を始めたときに 'fileformats' が空でなく、'binary' がオフ
ならば、'fileformat' は自動的に設定される。
ファイルの編集を始めた後にこのオプションを設定すると、'modified' がオ
ンになる。なぜならそのファイルの中身は、書き込まれるときには違うものに
なるからである。
このオプションは、'modifiable' がオフのときは変更できない。
後方互換性のために: このオプションが "dos" になると 'textmode' がオン
になり、それ以外では 'textmode' はオフになる。
'fileformats' 'ffs'
'fileformats' 'ffs' 文字列 (既定値:
Vim+Vi MS-Windows: "dos,unix",
Vim Unix: "unix,dos",
Vi Cygwin: "unix,dos",
Vi その他: "")
グローバル
想定される改行 (<EOL>) の種類を指定する。これは新しいバッファの編集を
始めたときと、ファイルを既存のバッファに読み込んだときに使われる。
- 値が空のときは、オプション 'fileformat' で指定された種類の改行が常に
使われる。自動的な設定は行われない。
- 1種類の名前が設定されているときは、新しいバッファが開かれるときには
常にその種類の改行が使われる。そのバッファでは、'fileformat' はこの
オプションに従って設定される。'fileformats' は、ファイルを既存のバッ
ファに読み込むときに使われる。その際、そのバッファで 'fileformat' が
何に設定されていても関係ない。
- 複数の名前がコンマで区切られて設定されているときは、ファイルを読み込
むときに <EOL> の判別が自動的に行われる。Vimはファイルの編集を始める
ときに、<EOL> を以下のように調べる。
1. 全ての行が <CR><NL> で終わっており、かつ 'fileformats' が "dos"
を含むなら、'fileformat' は "dos" になる。
2. 改行に <NL> が使われていて、かつ 'fileformats' が "unix" を含むな
ら、'fileformat' は "unix" になる。 Note <NL> があって、その前に
<CR> がないと、"dos" より "unix" が優先的に使われることに注意。
3. 'fileformat' がまだ設定されておらず、ファイル内に1つ <CR> が見つ
かり {訳注:後ろに<NL>が続かない} 、'fileformats' に "mac" が含ま
れているときは、'fileformat' は "mac" に設定される。
つまり "mac" が選択されるのは:
"unix" が含まれていないか <NL> がファイルに無い、そして
"dos" が含まれていないか <CR><NL> がファイルに無いときである。
ただし: "unix" が選択され、最初の <NL> よりも前に <CR> があり、
最初の数行において <CR> の数が <NL> の数よりも多いときは、"mac"
に設定される。
4. それでも 'fileformat' を決定できないときは、'fileformats' の中で
最初に指定されている値が使われる。
既存のバッファにファイルを読み込むときにも同じ経過をたどる。しかし
'fileformat' は読み込まれるファイルについては適切に設定されるが、
そのバッファでの値は変更されない。
'binary' がオンのときは、'fileformats' は使われない。
Vim が空のバッファで起動されたときは最初の項目が使われる。.vimrc 内で
'fileformat' を設定することでこれを変更することができる。
DOS形式の <EOL> (<CR><NL>) のシステムでは、コマンド ":source" で読み込
まれるファイルと、ファイル vimrc については、<EOL> の判別が自動的に行
われる。
- 'fileformats' が空のときは、自動設定は行われない。常にDOS形式の改行
が使われる。
- 'fileformats' の値に1種類以上の名前が設定されているときは、自動設定
が行われる。これはファイル内の1個目の <NL> に関して行われる。その前
に <CR> があるときはDOS形式が使われ、そうでなければUnix形式が使われ
る。
また file-formats も参照。
後方互換性のために: このオプションに、空の文字列か1種類だけの名前が設
定されたとき (コンマが含まれていないとき) には、'textauto' はオフにな
る。そうでなければ 'textauto' はオンになる。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'fileignorecase' 'fic' 'nofileignorecase' 'nofic'
'fileignorecase' 'fic' 切替 (既定値: ファイル名の大文字と小文字の違いを無
視するシステムではオン)
グローバル
このオプションを設定すると、ファイル名とディレクトリ名の大文字と小文字
の違いが無視される。
補完で大文字と小文字の違いを無視したい場合は 'wildignorecase' を参照。
'filetype' 'ft'
'filetype' 'ft' 文字列 (既定では "")
バッファについてローカル local-noglobal
このオプションが変更されると autocommand のイベント FileType が発生し、
このオプションの値にマッチする全ての autocommand が実行される。つまり、
{訳注: 普通 autocommand が実行されるのはファイル名がマッチしたときだ
が} 'filetype' の値がファイル名の代わりに使われる。
しかしこのオプションはカレントファイルのファイルタイプを常に反映してい
るわけではない。普通このオプションは、ファイルタイプが判別されたときに
設定される。判別を有効にするにはコマンド ":filetype on" を使うこと
:filetype。
ファイルタイプが自動的に認識されないファイルのモードラインで、このオプ
ションを異なった値に設定すると非常に便利である。例えば、IDL ファイルの
中でこうする。
/* vim: set filetype=idl : */
FileType filetypes
値にドットが含まれる場合、これは 2 つのファイルタイプ名を区切るため、
ファイルタイプには使用しないこと。例:
/* vim: set filetype=c.doxygen : */
こうすると最初にファイルタイプ "c" を使い、次にファイルタイプ "doxygen"
を使う。これはファイルタイププラグインと構文ファイル両方に適用される。
2個以上のドットが現れてもよい。
このオプションは 'cpoptions' のフラグ 's' や 'S' にかかわらず、別のバッ
ファにはコピーされない。
英数字、'-'、'_' のみ使用できる。
'fillchars' 'fcs'
'fillchars' 'fcs' 文字列 (既定では "vert:|,fold:-,eob:~,lastline:@")
グローバル/ウィンドウについてローカル global-local
ウィンドウのステータス行、垂直分割の区切り、特殊行を埋める文字。
これはコンマで区切られた項目のリストである。各項目には、名前、コロン、
およびその項目の値がある: E1511
キーワード 既定値 変更の対象
stl ' ' カレントウィンドウのステータス行
stlnc ' ' 非カレントウィンドウのステータス行
vert '|' 垂直分割の区切り :vsplit
fold '-' 'foldtext' での空白部分
foldopen '-' 折り畳みの先頭のマーク
foldclose '+' 閉じられた折り畳みのマーク
foldsep '|' 開いた折り畳みの中間文字
diff '-' 'diff' での削除された行
eob '~' バッファ終端以降の空行
lastline '@' 'display' が含む最終行/切り捨て
指定されなかったキーワードについては、既定値が使われる。
例:
:set fillchars=stl:\ ,stlnc:\ ,vert:\|,fold:-,diff:-
"stl", "stlnc", "foldopen", "foldclose", "foldsep" 項目に対しては1バイ
トおよびマルチバイトの文字をサポートしている。しかし全角文字幅の文字は
サポートしていない。E1512
強調表示が行われるものおよびその属するグループ:
項目名 ハイライトグループ
stl StatusLine hl-StatusLine
stlnc StatusLineNC hl-StatusLineNC
vert VertSplit hl-VertSplit
fold Folded hl-Folded
diff DiffDelete hl-DiffDelete
eob EndOfBuffer hl-EndOfBuffer
lastline NonText hl-NonText
'findfunc' 'ffu' E1514
'findfunc' 'ffu' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
{+eval 機能つきでコンパイルされたときのみ有効}
:find コマンドのファイル名を取得するために呼び出される関数。このオプ
ションが空の場合、内部の file-searching メカニズムが使用される。
値には関数名、lambda または Funcref を指定できる。
詳細については option-value-function を参照。
関数は 2 つの引数で呼び出される。最初の引数は String で、:find コ
マンドの引数である。2 番目の引数は Boolean で、関数が呼び出されて
:find コマンドのコマンドライン補完にマッチしたリストを取得した時に
v:true に設定される。
関数は文字列のリストを返す必要がある。
関数は、:find コマンドの呼び出しごとに 1 回だけ呼び出される。
関数は、'path' で指定されたすべてのディレクトリを処理できる。
マッチした場合、関数は 1 つ以上のファイル名を含む List を返す必要が
ある。マッチしない場合、関数は空のリストを返す必要がある。
関数の呼び出し中にエラーが発生した場合、空のリストが戻り値として使用さ
れる。
'findfunc' の実行中にテキストを変更したり、別のウィンドウにジャンプし
たりすることはできない。textlock
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
例:
" glob() を使う
func FindFuncGlob(cmdarg, cmdcomplete)
let pat = a:cmdcomplete ? $'{a:cmdarg}*' : a:cmdarg
return glob(pat, v:false, v:true)
endfunc
set findfunc=FindFuncGlob
func FindFuncGlob(cmdarg, cmdcomplete)
let pat = a:cmdcomplete ? $'{a:cmdarg}*' : a:cmdarg
return glob(pat, v:false, v:true)
endfunc
set findfunc=FindFuncGlob
" 'git ls-files' の出力を使う
func FindGitFiles(cmdarg, cmdcomplete)
let fnames = systemlist('git ls-files')
return fnames->filter('v:val =~? a:cmdarg')
endfunc
set findfunc=FindGitFiles
func FindGitFiles(cmdarg, cmdcomplete)
let fnames = systemlist('git ls-files')
return fnames->filter('v:val =~? a:cmdarg')
endfunc
set findfunc=FindGitFiles
'fixendofline' 'fixeol' 'nofixendofline' 'nofixeol'
'fixendofline' 'fixeol' 切替 (既定ではオン)
バッファについてローカル
このオプションがオンの時にファイルを書き込むとファイル末尾に <EOL>
が無い場合に復元される。もしオリジナルのファイルのまま維持したいのであ
ればこのオプションをオフに切り替える。
'binary' オプションが設定されているときはこのオプションは意味を成さな
い。
オプション 'endofline' を参照。
設定例については eol-and-eof を参照。
'fkmap' 'fk' 'nofkmap' 'nofk'
'fkmap' 'fk' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
このオプションはペルシア語を使うためのもので、削除された。farsi.txt
を参照。
'foldclose' 'fcl'
'foldclose' 'fcl' 文字列 (既定では "")
グローバル
{+folding 機能付きでコンパイルされたときのみ有効}
"all" に設定すると、カーソルが折り畳み区間の外に出たとき、その区間の折
り畳みの深さがオプション 'foldlevel' より大きければ折り畳みを行う。折
り畳み区間の外に出るとき、自動的に折り畳みを行いたいときに便利である。
'foldcolumn' 'fdc'
'foldcolumn' 'fdc' 数値 (既定では 0)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
非0 に設定されると、ウィンドウの端の指定された幅の列が折り畳みを (開い
ていても閉じていても) 表示する。最大値は 12 である。
folding を参照。
'foldenable' 'fen' 'nofoldenable' 'nofen'
'foldenable' 'fen' 切替 (既定ではオン)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
オフのときは、全ての折り畳みが開かれる。このオプションは、全てのテキス
トを折り畳みなしで見る状態とテキストの一部を折り畳んで見る (手動で開か
れたり閉じられた折り畳みも含む) 状態を素早く切り替えるために使われる。
このオプションはコマンド zi で切り替えることができる。オプション
'foldenable' がオフのときは、'foldcolumn' は空白のままである。
このオプションは、新しい折り畳みを作ったり、折り畳みを閉じたりするコマ
ンドによってオンにされる。
folding を参照。
'foldexpr' 'fde'
'foldexpr' 'fde' 文字列 (既定では "0")
ウィンドウについてローカル
{+folding 機能と +eval 機能付きでコンパイルされた
ときのみ有効}
オプション 'foldmethod' が "expr" のときに使われる expression。これは
折り畳みの深さを求めるために各行について評価される。コンテキストには
'foldexpr' が設定されたスクリプトのものが設定され、スクリプトローカル
の要素へアクセスできる。使い方は fold-expr を参照。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'diff' がオンのとき、または 'modelineexpr' オプションがオフのときは、
このオプションをモードライン modeline で設定することはできない。
'foldexpr' を評価している最中にテキストを変更したり他のウィンドウへジャ
ンプすることは許されていない。textlock
'foldignore' 'fdi'
'foldignore' 'fdi' 文字列 (既定では "#")
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
オプション 'foldmethod' が "indent" のときのみ使われる。'foldignore'
で指定した文字で始まる行の折り畳みの深さは、上下の行から決められる
{訳注: その行のインデントが上下と違っていても、一緒に折り畳めるように
するため}。空白を無視した上で指定された文字の存在を調べる。
既定値の "#" はC言語プログラムについてはうまく動作する。fold-indent
を参照。
'foldlevel' 'fdl'
'foldlevel' 'fdl' 数値 (既定では 0)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
折り畳みの深さを設定する。指定した数値よりレベルの深い折り畳み区間は閉
じられる。このオプションを 0 に設定すると、全ての折り畳みが閉じられる。
大きな数値を設定すると、それだけ閉じられる折り畳みの数は減る。
このオプションはコマンド zm, zM や zR によって設定される。
fold-foldlevel を参照。
'foldlevelstart' 'fdls'
'foldlevelstart' 'fdls' 数値 (既定では -1)
グローバル
{+folding 機能付きでコンパイルされたときのみ有効}
ウィンドウで新しいバッファの編集を始めるときのオプション 'foldlevel'
を設定する。編集開始時に常に全ての折り畳みを閉じておいたり (そのために
は 0 にする)、いくつかを閉じておいたり (1 にする)、全て開いておいたり
(99にする) するときに便利である。
これによる設定はモードラインの読み込み前に行われるので、モードライン内
での設定はこのオプションによる設定より優先される。ファイルの編集を
diff-mode で開始してもやはりこのオプションは無視され、全ての折り畳み
が閉じられる。
またこれによる設定はイベント BufReadPre による autocommand よりも前に
行われるので、特定のファイルについて autocommand で 'foldlevel' を上書
きできる。
値が負のときには、このオプションは使われない。
'foldmarker' 'fmr' E536
'foldmarker' 'fmr' 文字列 (既定では "{{{,}}}")
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
オプション 'foldmethod' が "marker" のときに使われる、折り畳み開始/終
了を示すマーカー。開始マーカーと終了マーカーを分けるために、間に1個の
コンマがなければいけない。マーカーはただの文字列である (正規表現では動
作が遅すぎるだろう)。
fold-marker を参照。
'foldmethod' 'fdm'
'foldmethod' 'fdm' 文字列 (既定では "manual")
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
カレントウィンドウに適用される折り畳みの種類を設定する。指定可能な値は
以下の通り。
fold-manual manual 折り畳みは手動で設定する。
fold-indent indent 等しいインデントの行で折り畳みを作る。
fold-expr expr オプション 'foldexpr' で深さを設定する。
fold-marker marker マーカーで折り畳みを指定する。
fold-syntax syntax 構文強調表示のキーワードを使って指定する。
fold-diff diff 変更されていないテキストを折り畳む。
'foldminlines' 'fml'
'foldminlines' 'fml' 数値 (既定では 1)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
画面上の行数を設定する。設定された行数より大きな折り畳みだけが閉じた折
り畳みとして表示される。手動で閉じられた折り畳みにも適用される。初期設
定の 1 では、折り畳みが 2 行以上の場合のみ閉じることができる。ゼロに設
定することで 1 行だけの折り畳みを閉じることができる。
Note: このオプションは折り畳みの表示方法に関してのみ効果を持つ。例えば
"zc" で折り畳みを閉じて、その折り畳みが 'foldminlines' より小さいため
に開いた状態で表示されているとき、続けて "zc" を入力するとその外側の折
り畳みを閉じることになる。
'foldnestmax' 'fdn'
'foldnestmax' 'fdn' 数値 (既定では 20)
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
折り畳みの方法に "indent" や "syntax" が選ばれたときの、折り畳みの入れ
子の深さの最大値を設定する。これにより折り畳みが膨大に作られるのを防ぐ
ことができる。Vim内部の制限が 20 になっているので、20 以上を設定しても
無効である。
'foldopen' 'fdo'
'foldopen' 'fdo' 文字列 (既定では "block,hor,mark,percent,quickfix,
search,tag,undo")
グローバル
{+folding 機能付きでコンパイルされたときのみ有効}
カーソルがコマンドによって、閉じている折り畳みの中に移動したとき、どの
種類のコマンドだったら折り畳みが開かれるかを指定する。値はコンマ区切り
のキーワードである。
NOTE: コマンドがマッピングの一部として実行されたときは、このオプション
は使われない。同じ効果を得るには、マッピングにコマンド zv を加えるこ
と。
(理由: 折り畳みを開くかどうかはマッピング自身でコントロールできたほう
がいい)
キーワード 適用されるコマンド
all 全て
block "(", "{", "[[", "[{" 等
hor 水平移動: "l", "w", "fx" 等
insert 挿入モードのコマンド全て
jump 長いジャンプ: "G", "gg" 等
mark マークへのジャンプ: "'m", CTRL-O 等
percent "%"
quickfix ":cn", ":crew", ":make" 等
search パターン検索: "/", "n", "*", "gd" 等
(":" コマンドでの検索パターンには適用されない)
[sと]sにも適用される。
tag タグへのジャンプ: ":ta", CTRL-T 等
undo アンドゥ/リドゥ: "u" と CTRL-R
移動コマンドがオペレータとして使われたときは (例えば "dl" や "y%")、こ
のオプションは使われない。つまりオペレータは閉じられている折り畳み全体
を含む効果を持つということだ。
Note 垂直方向の移動がここに含まれていないことに注意。それは垂直移動を
含めると、閉じられた折り畳みの上への移動が困難になるからだ。挿入モード
でテキストが挿入されるときには、カーソルが中に入っていった折り畳みは必
ず開かれる。
折り畳みを閉じるには、zx でオプション 'foldlevel' を再適用するか、
'foldclose' を "all" にすればよい。
'foldtext' 'fdt'
'foldtext' 'fdt' 文字列 (既定では "foldtext()")
ウィンドウについてローカル
{+folding 機能付きでコンパイルされたときのみ有効}
閉じられた折り畳みのところに表示されるテキストを生成する expression を
指定する。コンテキストには 'foldexpr' が設定されたスクリプトのものが設
定され、スクリプトローカルの要素へアクセスできる。使い方は
fold-foldtext を参照。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'foldexpr' を評価している最中にテキストを変更したり他のウィンドウへジャ
ンプすることは許されていない。textlock
'formatexpr' 'fex'
'formatexpr' 'fex' 文字列 (既定では "")
バッファについてローカル
{+eval 機能つきでコンパイルされたときのみ有効}
オペレータ gq や自動整形 ('formatoptions' 参照) で行の範囲を整形する
ために評価される式。このオプションが空だと 'formatprg' が使われる。
v:lnum 変数は整形される最初の行を保持する。
v:count 変数は整形される行数を保持する。
v:char 変数は挿入されようとしている文字を保持する (式が自動整形のた
めに評価されたときに使用される)。空文字の場合もある。この文
字をバッファに挿入しないでください。
例:
:set formatexpr=mylang#Format()
これは 'runtimepath' 内にある autoload/mylang.vim 中の関数mylang#Format() を呼ぶ。autoload
引数なしで関数呼び出しを使用する利点は、高速であることである。
expr-option-function を参照。
また、'textwidth' がオンになっていて、テキストを追加しているときにその
値を超えたときにもこの式が評価される。これは内部整形が使われるときと同
じ条件で起こる。この式を評価した後のカーソル位置がテキストに対して元の
位置と同じになるようにすること。この式を評価中は、関数mode()は "i"
または "R" を返す。
この関数が非ゼロを返すと Vim 内部の文章整形処理が使われる。
式が s: か <SID> で始まる場合、スクリプトID(local-function) に置き
換えられる。例:
set formatexpr=s:MyFormatExpr()
set formatexpr=<SID>SomeFormatExpr()
そうでない場合、式はオプションが設定されたスクリプトのコンテキストで評set formatexpr=<SID>SomeFormatExpr()
価され、その結果スクリプトローカルな要素を使用できる。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。その場合、サン
ドボックスの中ではバッファテキストの変更は許可されていないので、このオ
プションは機能しない。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
NOTE: 'compatible' がセットされると、このオプションは "" にセットされ
る。
'formatlistpat' 'flp'
'formatlistpat' 'flp' 文字列 (既定では "^\s*\d\+[\]:.)}\t ]\s*")
バッファについてローカル
リストのヘッダーを認識するのに使われるパターン。'formatoptions' のフラ
グ "n" に適用される。
このパターンにマッチする部分が、それ以下の行のインデントとなる。
/\zeを使うとマッチの終わりをマークしつつ、さらに文字のチェックを続け
ることができる。
{訳注: 例えば、このオプションが既定の "^\s*\d\+[\]:.)}\t ]\s*" のとき、
マッチする部分は
1. the first item
wraps
^^^^^^^^^^
の部分である。既定の値に\zeをはさんで "^\s*\d\+[\]:.)}\t ]\ze\s*" と
すると、リストのヘッダーと認識されるパターンはまったく変わらないが、
次行のインデントが\ze以前の部分に等しくなる:
1. the first item
wraps
^^^^^^
}
パターンの後ろに文字がなければならない。行全体がマッチすると、その行は
マッチがないのと同様に扱われてしまう。
既定では数字(後ろに句読点や空白があってもよい)を認識する。
'formatoptions' 'fo'
'formatoptions' 'fo' 文字列 (Vimの既定値: "tcq", Viの既定値: "vt")
バッファについてローカル
自動整形の実行方法を決めるフラグの列である。
可能な値については fo-table を、テキストの書式設定方法については
gq を参照。'paste' オプションがオンの場合、書式は設定されない
('formatoptions' が空の場合と同様)。読みやすくするためにコンマを挿入す
ることができる。
将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+="
と "-=" を使うこと add-option-flags。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'formatprg' 'fp'
'formatprg' 'fp' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
選択された行をコマンド gq で整形するのに使われる外部プログラムの名前
を指定する。使われるプログラムは標準入力からテキストを読み込み、整形さ
れたテキストを標準出力に出力しなければいけない。Unixのプログラム "fmt"
が代表である。
オプション 'formatexpr' が空でないならば、代わりにその値が使われる。こ
のオプションが空ならば、内部の整形関数が使われるC-indenting。
環境変数は展開される :set_env。値に空白や '\' を含める方法については、
option-backslash を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'fsync' 'fs' 'nofsync' 'nofs'
'fsync' 'fs' 切替 (既定ではオン)
グローバル
これがオンになっていると、ファイル書き込みの後にライブラリ関数fsync()
が呼ばれる。するとファイルがディスクにフラッシュされ、メタデータのみを
ジャーナルするファイルシステム上でも安全に書き込みが行われるようになる。
ラップトップモードで動作するLinuxシステム上で強制的にハードドライブを
回転させることになるが、これはある種の状況では望ましくない。これをオフ
にするとクラッシュ時にデータを失う可能性を高めることに注意。fsync()の
実装がないシステム上ではこの変数は常にオフである。
スワップファイルに対してfsync()をコントロールするには 'swapsync' を参
照。
'fsync' は writefile() (フラグがこれを却下するように指定されていない
限り) とアンドゥファイルが書き込まれる時 (undo-persistence を参照)
にも適用される。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'gdefault' 'gd' 'nogdefault' 'nogd'
'gdefault' 'gd' 切替 (既定ではオフ)
グローバル
オンのときは、コマンド ":substitute" のフラグ 'g' がオンであることが既
定になる。つまり行内のマッチする文字列が、1番目のものだけでなく、全て
置換される。":substitute" に 'g' が指定されると、逆に1番目のみを置換す
るようになる。complex-change を参照。
コマンド 'gdefault' がオン 'gdefault' がオフ
:s/// 全て置換 最初だけ置換
:s///g 最初だけ置換 全て置換
:s///gg 全て置換 最初だけ置換
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
このオプションを設定すると、'g' フラグのデフォルトの挙動に依存するプラ
グインが壊れるかもしれない。また、'g' フラグが :s_g に記載されている
説明と真逆の効果を持つようにもなる。
このオプションは Vim9 script では利用されない。
'grepformat' 'gfm'
'grepformat' 'gfm' 文字列 (既定では "%f:%l:%m,%f:%l%m,%f %l%m")
グローバル
コマンド ":grep" の出力を認識するための書式。
オプション 'errorformat' と同じく、関数 scanf 風の書式指定を使う。
errorformat を参照。
'grepprg' 'gp'
'grepprg' 'gp' 文字列 (既定では "grep -n ",
Unixでは: "grep -n $* /dev/null",
Win32では: "findstr /n" か "grep -n",
VMSでは: "SEARCH/NUMBERS ")
グローバル/バッファについてローカル global-local
コマンド ":grep" で使われるプログラム。このオプションは文字 '%' や '#'
を含んでもよい。これらはコマンドラインで使われるときのように展開される。
引数の挿入される場所を指定するには "$*" が使える。環境変数は展開される
:set_env。値に空白や '\' を含める方法については、option-backslash
を参照。
ユーザーの "grep" が引数 "-H" を認識するなら、":grep" が1個のファイルに
対しても適切に働くように、次のようにすること:
:set grepprg=grep\ -nH
特別な値: 'grepprg' が "internal" に設定されていると、:grep は:vimgrepと同様に、:lgrepは:lvimgrepと同様に、:grepadd は
:vimgrepaddと同様に、:lgrepaddは:lvimgrepaddと同様に働くようにな
る。
:make_makeprg も参照。そこの記述のほとんどが 'grepprg' にも適用でき
るからだ。
Win32では、"findstr.exe" が見つかるならば既定値は "findstr /n" である。
見つからなければ "grep -n" である。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'guicursor' 'gcr' E545 E546 E548 E549
'guicursor' 'gcr' 文字列 (既定では "n-v-c:block-Cursor/lCursor,
ve:ver35-Cursor,
o:hor50-Cursor,
i-ci:ver25-Cursor/lCursor,
r-cr:hor20-Cursor/lCursor,
sm:block-Cursor
-blinkwait175-blinkoff150-blinkon175",
Win32コンソールでは:
"n-v-c:block,o:hor50,i-ci:hor15,
r-cr:hor30,sm:block")
グローバル
{VimのGUI版か、Win32のコンソール版でのみ有効}
Vimのそれぞれのモード内でのカーソルの外観を指定する。GUI上では完全に機
能する。Win32コンソールではカーソルの高さだけを変更する。これはブロッ
クカーソルを指定する、または垂直・水平方向のパーセンテージを指定するこ
とで行う。
コンソール上ではエスケープシーケンス 't_SI', 't_SR' 及び 't_EI' が使わ
れる。
値はコンマ区切りのキーワードのリストである。リストは部門別に分かれてお
り、各部門はモードリストと引数リストからなる。
モードリスト:引数リスト,モードリスト:引数リスト,..
モードリストは、モードを表す以下の記号のダッシュ区切りのリストである。
n ノーマルモード
v ビジュアルモード
ve 'selection' が "exclusive" のときの ビジュアルモード
(指定されなければ 'v' と同じ設定)
o Operator-pendingモード
i 挿入モード
r 置換モード
c コマンドラインノーマル (追加) モード
ci コマンドライン挿入モード
cr コマンドライン置換モード
sm 挿入モードでの対応括弧表示時
a 全てのモード
引数リストは、以下の引数のダッシュ区切りのリストである。
hor{N} 文字高の {N}% の高さの水平バーカーソル
ver{N} 文字幅の {N}% の幅の垂直バーカーソル
block 文字全体を覆う大きさのブロックカーソル
[上の3個のうちの1個だけを指定できる]
blinkwait{N} cursor-blinking
blinkon{N}
blinkoff{N}
カーソルの点滅について指定する。blinkwait にはカーソル
が点滅を始めるまでの遅延時間を、blinkon にはカーソルが
表示される時間を、blinkoff にはカーソルが消えている時
間を指定する。時間の単位はミリ秒である。どれかに 0 を
指定すると、カーソルは点滅しない。既定では
"blinkwait700-blinkon400-blinkoff250" となっている。こ
れらは指定されなかった項目に適用される。つまり、既定で
は点滅するように設定されているということだ。点滅しない
ようにするには "blinkon0" を指定すればよい。カーソルが
点滅するのはVimが入力を待っている間で、コマンドを実行
している間は点滅しない。
カーソルを xterm の中で点滅させるには、xterm-blink
を参照。
{group-name}
カーソルの色とフォントを設定する、強調表示のグループ名
を指定する。
{group-name}/{group-name}
ハイライトグループ名を2個指定する。1個目は言語マッピン
グがないときに使われ、2個目は言語マッピングがあるとき
に使われる。language-mapping
値の一部の例:
n-c-v:block-nCursor ノーマルモード、コマンドラインモードとビジュア
ルモードで、ハイライトグループ "nCursor" で指
定された色のブロックカーソルを使う。
i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150
挿入モードとコマンドライン挿入モードで、ハイラ
イトグループ "iCursor" で指定された色の、文字
高の30%の高さの垂直バーカーソルを使う。点滅は
少し速くする。
モード 'a' は他とは異なっていて、与えられた引数リストを全てのモードに
対して設定し、指定されなかった引数は変更しない。これは全てのモードに共
通の設定をするためにある。例えば、点滅を止めるには "a:blinkon0" とする。
カーソル強調表示の例:
:highlight Cursor gui=reverse guifg=NONE guibg=NONE
:highlight Cursor gui=NONE guifg=bg guibg=fg
:highlight Cursor gui=NONE guifg=bg guibg=fg
'guifont' 'gfn'
E235 E596
'guifont' 'gfn' 文字列 (既定では "")
グローバル
{VimのGUI版でのみ有効}
VimのGUI版で使われるフォントのリストである。値の最も単純なものは、ただ
1個のフォント名である。
詳細は gui-font を参照。
'guifontset' 'gfs'
E250 E252 E234 E597 E598
'guifontset' 'gfs' 文字列 (既定では "")
グローバル
{VimのGUI版で、+xfontset 機能付きでコンパイルされた
ときのみ有効}
{GTK+ GUIでは利用できない}
このオプションには2種類 (またはそれ以上) のフォントを指定する。値が空
のときは無視される。1種類目は普通の英語に使われるもので、2種類目はユー
ザーの使う特別な言語用である。 xfontset を参照。
<
'guifontwide' 'gfw' E231 E533 E534
'guifontwide' 'gfw' 文字列 (既定では "")
グローバル
{VimのGUI版でのみ有効}
2倍幅の文字に使われるフォントをコンマ区切りのリストで指定する。値が空
のときは無視される。読み込み可能なフォントのうち先頭のものが使われる。
gui-fontwide を参照。
'guiheadroom' 'ghr'
'guiheadroom' 'ghr' 数値 (既定では 50)
グローバル
{VimのGTKとX11のGUI版でのみ有効}
GUIウィンドウを画面に合わせるときに、画面の高さから差し引かれるピクセ
ル数。このオプションはGUIを開始する前に、例えばファイル gvimrc 内で
設定すること。値を 0 にすると、画面の高さ全体がウィンドウに使われる。
正の値を指定すると、それだけのピクセル数がウィンドウの装飾や画面上の他
のもののために残される。ウィンドウを画面よりも高くするには、負の値を指
定すること。
'guiligatures' 'gli' E1243
'guiligatures' 'gli' 文字列 (既定では "")
グローバル
{GTK および Win32 GUI でのみ有効}
より複雑な形状を作るために結合して利用できるASCII文字セットのリスト。
各文字は値が32-127の範囲内の印字可能なASCIIの文字。
例:
:set guiligatures=!\"#$%&()*+-./:<=>?@[]^_{\|~
このオプションを変更した場合画面の出力は即座に更新される。空文字列を設定することでリガチャが無効になる。
'guioptions' 'go'
'guioptions' 'go' 文字列 (既定では "egmrLtT" (MS-Windows,
"t" は defaults.vim 内で削除される),
"aegimrLtT" (GTK と Motif),
)
グローバル
{VimのGUI版でのみ有効}
このオプションはVimのGUI版でのみ有効である。値は、GUIのどのコンポーネ
ントとオプションを使用するかを決定する、フラグの列である。
将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+="
と "-=" を使うこと add-option-flags。
使用できるフラグは以下の通りである。
'go-!'
'!' 外部コマンドが端末ウィンドウで実行される。このフラグがない場
合、MS-Windows GUI はコマンドを実行するためにコンソールウィン
ドウを開く。Unix GUI はコマンド出力をリストするためにダム端末
をシミュレートする。
端末ウィンドウは下に配置され、必要に応じて上に広がる。
'go-a'
'a' 自動選択 (autoselect): 値に含まれると、ビジュアルモードが開始
されるたび、またはビジュアル選択範囲が変更されるたびに、Vimは
ウィンドウシステム共通のクリップボードを使おうとする。つまりビ
ジュアル選択で選択されたテキストは、Vim自身はもとより他のアプ
リケーションでも貼り付けに使えるということだ。(おそらくテキス
トに操作を実行したせいで) ビジュアルモードが終了したり、アプリ
ケーションが選択領域を貼り付けようとしたときには、強調されたテ
キストは自動的にクリップボードレジスタ "* にコピーされる。その
ためビジュアルモードが終了した後でも、選択領域を他のアプリケー
ションに貼り付けることができる。
含まれないと、レジスタ "* に対するコピーや貼り付けによって明示
的に指定されない限り、Vimはウィンドウシステム共通のクリップボ
ードを使おうとはしない。
モードレスセレクションについても同様である。
'go-P'
'P' 自動選択 (autoselect) と似ているが、"* レジスタの代わりに "+
レジスタを使う。
'go-A'
'A' モードレスセレクションに対する自動選択。フラグ 'a' と似ている
が、モードレスセレクションにのみ適用される。
'guioptions' ビジュアルモード モードレスセレクション
"" X X
"a" O O
"A" X O
"aA" O O
ターミナルを使用する場合は、'clipboard' オプションを参照。
'go-c'
'c' 単純な選択にはポップアップダイアログでなくコンソールダイアログ
を使う。
'go-d'
'd' 可能であれば、ダークテーマの亜種を使用する。現在、GTK+ GUIでの
み機能する。
'go-e'
'e' 'showtabline' で指定されたタイミングでタブを追加する。
'guitablabel' を使うとタブのラベルのテキストを変更することがで
きる。'e' がないと非GUIのタブページラインが使われる。GUIのタブ
はいくつかのシステム上(現在はGTK, Motif, Mac OS/X, Haiku,
MS-Windows) でのみサポートされている。
'go-f'
'f' フォアグラウンド (foreground): シェルからGUIを開始し、そのシェ
ルからgVimを独立させる際に関数 fork() を使わない。これはエディ
タが終了するのを待つプログラム (例えばメールプログラム等) に対
して使う。フォアグラウンドでGUIを開始するには、これの代わりに
"gvim -f" や ":gui -f" も使える gui-fork。
Note: このオプションはファイル vimrc 内で設定するよう注意。ファ
イルgvimrcが読み込まれたときはフォーキングがすでに実行されて
いるかもしれない。
'go-i'
'i' Vimのアイコンを使う。KDEのGTKではウィンドウの左上に表示される。
GTKでないX11では、制限のため白黒のアイコンが使われる。色つきの
アイコンについては X11-icon を参照。
'go-m'
'm' メニューバーを表示する。
'go-M'
'M' システムメニューの実体 "$VIMRUNTIME/menu.vim" が読み込まれない。
Note このフラグは、構文認識やファイルタイプ認識を起動する前に、
ファイル .vimrc 内で追加されていなければならない (ファイル
.gvimrc が読み込まれたときには、システムメニューはすでに読み込
まれた後である。コマンド :syntax on と :filetype on でもメ
ニューは読み込まれる)。
'go-g'
'g' メニュー項目の灰色表示: 無効のメニュー項目を灰色で表示する。含
まれていないと、無効のメニュー項目は全く表示されない。
'go-t'
't' メニュー項目の切り離しを有効にする。現在のところWin32, GTK+ と
Motif 1.2 GUI でのみ有効である。
'go-T'
'T' ツールバーを表示する。現在のところWin32, GTK+ と Motif,
Photon GUIでのみ有効である。
'go-r'
'r' 右スクロールバーを常に表示する。
'go-R'
'R' 垂直分割されたウィンドウがあるときのみ、右スクロールバーを表示
する。
'go-l'
'l' 左スクロールバーを常に表示する。
'go-L'
'L' 垂直分割されたウィンドウがあるときのみ、左スクロールバーを表示
する。
'go-b'
'b' 下 (水平) スクロールバーを表示する。サイズは表示されている行の
中で一番長い行によって決まる。またはフラグ'h'が含まれていると
きはカーソル行によって決まる。gui-horiz-scroll
'go-h'
'h' 水平スクロールバーのサイズをカーソル行の長さに制限する。計算量
を軽減させる。gui-horiz-scroll
そう、もちろん、本当に望むのなら、左スクロールバーと右スクロールバーを
「両方」使うことだってできる :-) 詳しい情報については gui-scrollbars
を参照。
'go-v'
'v' ダイアログのボタン配置を垂直方向にする。含まれていないとなるべ
く水平方向の配置を使うが、収まらないときには結局、垂直配置が使
われる。GTK 3 ではサポートされない。
'go-p'
'p' X11のGUIにおいて、ポインタ・コールバックを使う。ウィンドウマ
ネージャーの中にはこれが必要なものもある。カーソルが正しいタイ
ミングで点滅したり変形したりしないときは、これを追加してみるこ
と。これはGUIを開始する前に設定しなければならない。ユーザーの
ファイル gvimrc 内で設定すること。GUIが開始した後にこのフラ
グを追加したり取り除いたりしても、効果はない。
'go-F'
'F' フッターを追加する。Motifでのみ有効である。gui-footer を参照。
'go-k'
'k' スクロールバー、もしくはツールバー、タブライン、その他を追加/
削除する際に、GUI ウィンドウサイズを維持する。というよりは、そ
の振る舞いはウィンドウが最大化されて 'lines' と 'columns' が
ウィンドウに合うよう調整されるときに似ている。'k' フラグがない
場合、Vim は GUI コンポーネントが追加/削除されたときに 'lines'
と 'columns' を維持しようとする。
'guipty' 'noguipty'
'guipty' 切替 (既定ではオン)
グローバル
{VimのGUI版でのみ有効}
GUI版でのみ有効である。オンのときは、シェルコマンドからの入力用および
シェルコマンドへの出力用の仮想端末 pseudo-tty を開こうとする。
gui-pty を参照。
'guitablabel' 'gtl'
'guitablabel' 'gtl' 文字列 (既定では空文字列)
グローバル
{VimがGUIを有効にしてコンパイルされたときのみ利用可能}
空文字列でない場合は、GUI のタブページ行のラベルを設定する。空文字列で
あるか、または評価結果が空文字列である場合は、既定のラベルが使われる。
より詳しくは setting-guitablabel を参照。
このオプションのフォーマットは 'statusline' のフォーマットに似ている。
ツールチップには 'guitabtooltip' が使われる。下記参照。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
GUI のタブページが表示されるときのみ使われる。'guioptions' に 'e' が含
まれていなければならない。GUI でないタブページ行については 'tabline'
が使われる。
'guitabtooltip' 'gtt'
'guitabtooltip' 'gtt' 文字列 (既定では空文字列)
グローバル
{VimがGUIを有効にしてコンパイルされたときのみ利用可能}
空文字列でない場合は、GUI のタブページ行のツールチップを設定する。空文
字列である場合は、既定のツールチップが使われる。
それ以外は上記の 'guitablabel' と同様。
改行を含めることもできる。そのもっとも簡単な方法は :letを使うことで
ある:
:let &guitabtooltip = "line one\nline two"
'helpfile' 'hf'
'helpfile' 'hf' 文字列 (既定では MS-Windows: "$VIMRUNTIME\doc\help.txt"
その他: "$VIMRUNTIME/doc/help.txt")
グローバル
ヘルプファイルの名前。Vim に付属のヘルプファイルは全て単一のディレクト
リ内に一緒に置かれるべきである。そのディレクトリの他に、'runtimepath'
中の全ての "doc" ディレクトリも対象になる。
環境変数は展開される :set_env。例:
"$VIMRUNTIME/doc/help.txt"。環境変数 $VIMRUNTIME が設定されてないとき
は、$VIM も試される。$VIMRUNTIME を参照。値に空白や '\' を含めること
については option-backslash も参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'helpheight' 'hh'
'helpheight' 'hh' 数値 (既定では 20)
グローバル
コマンド ":help" で開かれたヘルプウィンドウの、開始時のウィンドウ高の
最小値を設定する。ヘルプウィンドウの開始時の高さはカレントウィンドウの
半分であるか、(オプション 'ea' がオンのときには) 他のウィンドウと同じ
である。ウィンドウ高が 'helpheight' より小さくなってしまうとき、実際の
高さは 'helpheight' になる。こうしないようにするには 0 に設定すること。
'helplang' 'hlg'
'helplang' 'hlg' 文字列 (既定では: メッセージ言語または空)
グローバル
{+multi_lang 機能つきでコンパイルされたときのみ有効}
コンマ区切りの言語のリスト。これらの言語の中から、探しているヘルプが見
つかった最初の言語を使う。英語のヘルプは常に優先度が最後になる。英語の
優先度を上げるために "en" を追加することはできるが、そうしても、その言
語に存在し、英語のヘルプに存在しないタグを見つけるだけである。
{訳注: 上の文よくわからない。}
例:
:set helplang=de,it
こうすると最初にドイツ語を検索し、次にイタリア語、そして最後に英語のヘルプファイルを検索する。
CTRL-] や英語でないヘルプファイル中で ":help!" を使ったときは、この
オプションより先に現在の言語からタグを検索する。help-translated を参
照。
'hidden' 'hid' 'nohidden' 'nohid'
'hidden' 'hid' 切替 (既定ではオフ)
グローバル
オフのときは、バッファは放棄 abandon されるときに解放される。オンの
ときは、バッファは放棄 abandon されるときに隠れ (hidden) 状態になる。
そのバッファが別のウィンドウでまだ表示されているなら、もちろん隠れ状態
にはならない。
バッファリストをわたって動くコマンドは 'hidden' がオフであっても次の3
つが真の場合はバッファを隠れ状態にすることがある:
- バッファの内容が変更された
- 'autowrite' がオフであるか書き込みが不可能な状態
- フラグ '!' が使われたとき
windows.txt も参照。
1つのバッファだけを隠れ状態にするにはオプション 'bufhidden' を使う。
このオプションは、一つ一つのコマンドに対して ":hide {command}" とする
ことでオンにできる :hide。
警告: 隠れバッファに対する変更は忘れがちである。コマンド ":q!" や
":qa!" を使う前にはもう一度よく考えること。
'highlight' 'hl'
'highlight' 'hl' 文字列 (既定では (単一の文字列として):
"8:SpecialKey,~:EndOfBuffer,@:NonText,
d:Directory,e:ErrorMsg,i:IncSearch,
l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,
a:LineNrAbove,b:LineNrBelow,
N:CursorLineNr,r:Question,s:StatusLine,
S:StatusLineNC,c:VertSplit,t:Title,
v:Visual,V:VisualNOS,w:WarningMsg,
W:WildMenu,f:Folded,F:FoldColumn,
A:DiffAdd,C:DiffChange,D:DiffDelete,
T:DiffText,>:SignColumn,-:Conceal,
B:SpellBad,P:SpellCap,R:SpellRare,
L:SpellLocal,+:Pmenu,=:PmenuSel,
k:PmenuMatch,<:PmenuMatchSel,
[:PmenuKind,]:PmenuKindSel,
{:PmenuExtra,}:PmenuExtraSel,
x:PmenuSbar,X:PmenuThumb,*:TabLine,
#:TabLineSel,_:TabLineFill,!:CursorColumn,
.:CursorLine,o:ColorColumn,q:QuickFixLine,
z:StatusLineTerm,Z:StatusLineTermNC,
g:MsgArea")
グローバル
このオプションは、様々な対象に対する強調表示モードを設定する。文字の組
をコンマ区切りのリストとして指定する。1番目の文字は適用される対象を指
定し、2番目の文字はその対象に適用するモードを指定する。
対象は以下の通りである。
hl-SpecialKey 8 ":map" でリスト表示されるメタキーと特殊キー
hl-EndOfBuffer ~ バッファの最後の行以降の行
hl-NonText @ ウィンドウ末尾の '@' と 'showbreak' によって
表示される文字
hl-Directory d CTRL-D によるリスト表示内のディレクトリや、その他
の特別な項目
hl-ErrorMsg e エラーメッセージ
h (古くて使われておらず、無視される)
hl-IncSearch i 'incsearch' の強調表示
hl-CurSearch y 最終検索パターンの現在の項目
hl-Search l 最終検索パターン強調表示 ('hlsearch' を参照)
hl-MoreMsg m 「継続」プロンプト more-prompt
hl-ModeMsg M モード表示 (例えば "-- INSERT --")
hl-MsgArea g Command-line とメッセージエリア
hl-LineNr n ":number" と ":#" コマンドでの行番号と、'number'
か 'relativenumber' がオンに設定されているときの行
番号。
hl-LineNrAbove a 'relativenumber' オプションが設定されている場合
のカーソルの上の行番号。
hl-LineNrBelow b 'relativenumber' オプションが設定されている場合
のカーソル以下の行番号。
hl-CursorLineNr N 'cursorline' または 'relativenumber' 設定時、n の
代わりに使われる。
hl-Question r 「続けるには」プロンプト hit-enter とyes/no質問
hl-StatusLine s カレントウィンドウのステータス行 status-line
hl-StatusLineNC S 非カレントウィンドウのステータス行
hl-Title t ":set all", ":autocmd" 等の出力のタイトル
hl-VertSplit c ウィンドウの垂直分割に使われる区切り
hl-Visual v ビジュアルモード
hl-VisualNOS V X11 Gui gui-x11 と xterm-clipboard でのみ有効
な、選択領域をクリップボードに送らないビジュアル
モード
{訳注: "Not Owning the Selection" をこういう意味に
取りましたが、勘違いかもしれません。どなたかご教授
ください}
hl-WarningMsg w 警告メッセージ
hl-WildMenu W 'wildmenu' によって表示されるワイルドカードマッチ
hl-Folded f 閉じられた折り畳みを表す行
hl-FoldColumn F 'foldcolumn'
hl-DiffAdd A 差分モードで追加された行
hl-DiffChange C 差分モードで変更された行
hl-DiffDelete D 差分モードで削除された行
hl-DiffText T 差分モードで挿入されたテキスト
hl-SignColumn > signs に使われる桁
hl-Conceal - Conceal テキストの代替表示 ('conceallevel' 参照)
hl-SpellBad B スペルミスの単語 spell
hl-SpellCap P 大文字で始まるべきの単語 spell
hl-SpellRare R 滅多に現れない単語 spell
hl-SpellLocal L 他の地域の単語 spell
hl-Pmenu + ポップアップメニューの通常の行
hl-PmenuSel = ポップアップメニューの選択された行
hl-PmenuKind [ ポップアップメニューの "kind" の通常の行
hl-PmenuKindSel ] ポップアップメニューの "kind" の選択された行
hl-PmenuExtra { ポップアップメニューの "extra" の通常の行
hl-PmenuExtraSel } ポップアップメニューの "extra" の選択された行
hl-PmenuSbar x ポップアップメニューのスクロールバー
hl-PmenuThumb X ポップアップメニューのスクロールバーのつまみ
hl-PmenuMatch k ポップアップメニューのマッチしたテキスト
hl-PmenuMatchSel < ポップアップメニューの選択された行のマッチしたテ
キスト
表示モードは以下の通りである。
r 反転 (termcapの項目 "mr" と "me")
i 斜字体 (termcapの項目 "ZH" と "ZR")
b 太字体 (termcapの項目 "md" と "me")
s 強調 (termcapの項目 "so" と "se")
u 下線 (termcapの項目 "us" と "ue")
c 下波線 (termcapの項目 "Us" と "Ce")
2 2重下線 (termcapの項目 "Ds" と "Ce")
d 点線下線 (termcapの項目 "ds" と "Ce")
= 破線下線 (termcapの項目 "Ds" と "Ce")
t 打ち消し線 (termcapの項目 "Ts" と "Te")
n 強調表示なし
- 強調表示なし
: ハイライトグループを使って設定
{訳注: 「文字の組」と書きながら、既定値はどれも2文字でないのは、
この ":" が使われているからである。これだけは例外で、グルー
プ名を使って指定できる}
ユーザーに指定されなかった項目については、既定値が使われる。
表示モードの効果を変更したいなら、例として dos-colors を参照。
表示モードに ':' を使うときは、その後にハイライトグループの名前を続け
なければならない。ハイライトグループは、色も含めて強調表示のあらゆるタ
イプを指定することができる。グループの定義方法については :highlight
を参照。既定値では対象それぞれに異なったグループを使っている。既定のハ
イライトグループについては highlight-default を参照。
'history' 'hi'
'history' 'hi' 数値 (Vimの既定値: 50, Viの既定値: 0,
defaults.vim で 200 に設定される)
グローバル
":" によるコマンドと以前に使った検索パターンの履歴は保存されるわけだが、
このオプションはそれぞれの履歴に何個の項目が保存されるかを指定する
(cmdline-editing を参照)。
最大値は10000。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'hkmap' 'hk' 'nohkmap' 'nohk'
'hkmap' 'hk' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
オンのときは、キーボードはヘブライ文字セットにマップされる。普通、オプ
ション 'allowrevins' をオンにしておき、挿入モードでこのオプションをコ
マンド CTRL-_ で切り替えられるようにすることになる i_CTRL-_。
rileft.txt を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'hkmapp' 'hkp' 'nohkmapp' 'nohkp'
'hkmapp' 'hkp' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
オンのときは、キーボードは音声ヘブライ文字セットにマップされる。またオ
プション 'hkmap' もオンでなければならない。これはユーザーがヘブライ語
キーボードを持っていないときに便利である。
rileft.txt を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'hlsearch' 'hls' 'nohlsearch' 'nohls'
'hlsearch' 'hls' 切替 (既定ではオフ)
グローバル
{+extra_search 機能付きでコンパイルされたときのみ有
効}
前回の検索パターンが存在するとき、それにマッチするテキストを全て強調表
示する。強調表示のタイプは、オプション 'highlight' のフラグ 'l' によっ
て設定できる。既定ではハイライトグループ "Search" が使われる。 Note
マッチするテキストのみが強調表示されるので注意。オフセットは適用されな
い。ハイライトグループ "CurSearch" が設定されている場合は現在のマッチ
がそれで強調表示される。
'incsearch' とコマンド :match も参照。
マッチするテキストが強調表示されるのを見飽きたら、:nohlsearch で無効
に切り替えることができる。このコマンドはオプションの設定値を変更しない
ので、再び検索コマンドを使えば、強調表示も再び行われる。
検索する時間の上限は 'redrawtime' で設定できる。
検索パターンが行の終わり end-of-line にマッチするときは、Vimはマッチし
たテキスト全体を強調表示しようとする。しかし、検索を開始した場所によっ
て結果は異なる。ウィンドウの1番上の行または閉じられた折り畳みの次の行
では、表示されない行内のマッチの強調表示は、表示されている行に継続しな
い。
起動時に強調表示の状態を復元するかどうかは 'viminfo' の 'h' フラグで設
定できる viminfo-h。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'icon' 'noicon'
'icon' 切替 (既定ではオフ、タイトルが復元できるならばオン)
グローバル
オンのときは、ウィンドウのアイコンテキストが 'iconstring' に (値が空で
なければ) 設定される。空ならば現在編集されているファイル名に設定される。
ファイル名の末尾部分のみが使われる。
この設定は 'iconstring' によって上書きできる。
ターミナルがウィンドウアイコンの設定をサポートしているときのみ有効であ
る (現在のところ X11 GUI とターミナルオプション 't_IS' の値が空でない
ターミナルのみ --- これらは既定では Unix xterm と iris-ansi であり、こ
のとき 't_IS' の値は組み込み termcap から取られる)。
Vimが HAVE_X11 が定義された状態でコンパイルされたなら、可能であれば元
のアイコンが復元される X11。X11でアイコンを変更するには X11-icon
を参照。
MS-Windows でアイコンを変更するには、windows-icon を参照。
'iconstring'
'iconstring' 文字列 (既定では "")
グローバル
このオプションが空でないなら、ウィンドウのアイコンテキストに設定される。
これは 'icon' がオンのときのみ使われる。
ターミナルがウィンドウのアイコンテキストの設定をサポートしているときの
み有効である (現在のところ X11 GUI とターミナルオプション 't_IS' の値
が空でないターミナルのみ)。
MS-Windowsでは無効である。
Vimが HAVE_X11 が定義された状態でコンパイルされたなら、可能であれば元
のアイコンが復元される X11。
値に関数 printf 形式の '%' を使った項目が含まれていると、それらは
'statusline' と同じように展開される。設定例は 'titlestring' を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
{+statusline 機能付きでコンパイルされたときのみ有効}
'ignorecase' 'ic' 'noignorecase' 'noic'
'ignorecase' 'ic' 切替 (既定ではオフ)
グローバル
検索パターン、cmdline-completion、タグファイルの検索、および、
非 Vim9 の expr-== の大文字と小文字を区別しない。
オプション 'smartcase' と 'tagcase' も参照。
パターン内で "\c" や "\C" を使うことで、この設定を上書きできる。
/ignorecase を参照。
'imactivatefunc' 'imaf'
'imactivatefunc' 'imaf' 文字列 (既定では "")
グローバル
このオプションはインプットメソッド (IM) をオン/オフにするのに呼ばれる
関数を指定する。値として関数名、lambda、Funcref が使える。詳細は
option-value-function を参照。
MS-Windows GUI 版では使われない。
モードラインから設定した場合、式は sandbox で評価される。
sandbox-option を参照。
例:
function ImActivateFunc(active)
if a:active
... 何らかの処理
else
... 何らかの処理
endif
" 戻り値は使われない
endfunction
set imactivatefunc=ImActivateFunc
if a:active
... 何らかの処理
else
... 何らかの処理
endif
" 戻り値は使われない
endfunction
set imactivatefunc=ImActivateFunc
'imactivatekey' 'imak'
'imactivatekey' 'imak' 文字列 (既定では "")
グローバル
{+xim 機能と +GUI_GTK 機能付きでコンパイルされたと
きのみ有効} E599
X-Windowsでのインプットメソッド (IM) を起動するのに使われるキーを指定
する。これが正しく設定されていれば、VimはIMをオプション 'imcmdline',
'iminsert' や 'imsearch' によって完全に制御できる。
このオプションで起動キーを変えることはできない。これはただVimにそのキー
が何であるのか伝えるだけである。
書式は以下の通り。
[MODIFIER_FLAG-]KEY_STRING
以下の文字が MODIFIER_FLAG として使える (大文字でも小文字でもよい)。
S シフトキー
L ロックキー
C コントロールキー
1 修飾キー1
2 修飾キー2
3 修飾キー3
4 修飾キー4
5 修飾キー5
これらを組み合わせることができる。例えば "S-C-space" や "SC-space" は
みな shift+ctrl+space を表す。
KEY_STRING については <X11/keysymdef.h> と XStringToKeysym を参照。
例:
:set imactivatekey=S-space
"S-space" は shift+space である。これは kinput2 + canna (日本語) および ami (韓国語) の起動キーである。
'imcmdline' 'imc' 'noimcmdline' 'noimc'
'imcmdline' 'imc' 切替 (既定ではオフ)
グローバル
オンのときは、コマンドラインの編集を始めるときには常にインプットメソッ
ド (IM) がオンになる。ただし検索パターンの入力には適用されない (それに
はオプション 'imsearch' を参照)。
ユーザーの IM が英語の文字を直接入力できるならば (例えば IM が、普段使
われないキーからアクセント記号を入力する程度のものならば)、このオプショ
ンをオンにすると便利である。
'imdisable' 'imd' 'noimdisable' 'noimd'
'imdisable' 'imd' 切替 (既定ではオフ、いくつかのシステム(SGI)ではオン)
グローバル
オンのときは、インプットメソッド (IM) が全く使われなくなる。これは IM
がうまく働かないとき、それを無効にしてしまうのに便利である。
現在のところ、SGI/IRIX のマシンではオンになっているのが既定である。こ
れは将来変更されるかもしれない。
'iminsert' 'imi'
'iminsert' 'imi' 数値 (既定では 0)
バッファについてローカル
{訳注: iminsert=2 の場合、挿入モードを抜けると IM がオフにされる。
再度挿入モードに入ると、前回抜けたときの IM 状態が復元される。
この機能をオフにするには iminsert=0 にすること。}
:lmap かインプットメソッド (IM) が挿入モードで使われるかどうかを指定す
る。指定できる値は以下の通り。
0 :lmap はオフ、IM もオフ
1 :lmap はオン、IM はオフ
2 :lmap はオフ、IM はオン
コマンド <Esc> で挿入モードを終える度に値を 0 に戻すには、次のように
すればよい:
:inoremap <ESC> <ESC>:set iminsert=0<CR>
これは挿入モードを終えるとき :lmap と IM を自動的にオフに切り替える。Note 挿入モードでコマンド CTRL-^ を使うと、このオプションの値が変わる
ので注意 i_CTRL-^。
オプション 'keymap' に正しいキーマップ名が設定されると、このオプション
は 1 になる。
これはコマンド "r", "f" 等の引数にも適用される。
Motifでは、値を 0 に設定すると正しく働かないようなXIMがある。そのとき
は XIM を無効にするために 'imdisable' を使うこと。
Vim が +xim、+multi_byte_ime もしくは global-ime 付きでコンパイ
ルされていない場合、外部コマンドによって IME/XIM を制御するために
'imactivatefunc' および 'imstatusfunc' を設定することができる。
'imsearch' 'ims'
'imsearch' 'ims' 数値 (既定では -1)
バッファについてローカル
:lmap かインプットメソッド (IM) が、検索パターンを入力するときに使われ
るかどうかを指定する。指定できる値は以下の通り。
-1 'iminsert' の値が使われ、それが検索パターンの入力にも
適用されているかのように動作する
0 :lmap はオフ、IM もオフ
1 :lmap がオン、IM はオフ
2 :lmap はオフ、IM がオン
Note コマンドラインモードでコマンド CTRL-^ を使うと、このオプションが
変わることに注意 c_CTRL-^。
値が -1 でないなら、'keymap' に正しいキーマップ名が設定されると、この
オプションは 1 になる。
Motifでは、値を 0 に設定すると正しく働かないようなXIMがある。そのとき
は XIM を無効にするために 'imdisable' を使うこと。
'imstatusfunc' 'imsf'
'imstatusfunc' 'imsf' 文字列 (既定では "")
グローバル
このオプションはインプットメソッド (IM) の状態を得るのに呼ばれる関数を
指定する。IMEがオンのとき、関数は正の数を返さなければならない。値とし
て関数名、lambda、Funcref が使える。詳細は option-value-function
を参照。
MS-Windows GUI 版では使われない。
例:
function ImStatusFunc()
let is_active = ...何らかの処理
return is_active ? 1 : 0
endfunction
set imstatusfunc=ImStatusFunc
let is_active = ...何らかの処理
return is_active ? 1 : 0
endfunction
set imstatusfunc=ImStatusFunc
NOTE: この関数は頻繁に呼び出されるため、速くなければならない。
モードラインから設定した場合、式は sandbox で評価される。
sandbox-option を参照。
'imstyle' 'imst'
'imstyle' 'imst' 数値 (既定では 1)
グローバル
{+xim と +GUI_GTK 機能付きでコンパイルされたときの
み有効}
このオプションはインプットメソッドの入力スタイルを指定する:
0 on-the-spot スタイルを使う
1 over-the-spot スタイルを使う
参照: xim-input-style
Vim の GTK 版では長い間、on-the-spot スタイルが使われてきた。しかしこ
れは single-repeat やマッピングなどを使う際に問題を引き起すことが知
られている。そのようなわけで、over-the-spot スタイルをデフォルトとする
ことになった。ほとんどの人にとってうまく動作するべきだが、これによって
問題が生じるようであれば、on-the-spot スタイルを使ってみよ。
モードラインから設定した場合、式は sandbox で評価される。
sandbox-option を参照。
'include' 'inc'
'include' 'inc' 文字列 (既定では "^\s*#\s*include")
グローバル/バッファについてローカル global-local
{+find_in_path 機能付きでコンパイルされたときのみ有
効}
{訳注: プログラミング言語の} インクルード命令を探すのに使われるパター
ンを設定する。値はコマンド "/" と同様の検索パターンである (pattern
を参照)。既定値はC言語プログラム用に設定されている。このオプションはコ
マンド "[i", "]I", "[d" 等に使われる。
通常、マッチしたパターンの後に続くファイル名を認識するためにオプション
'isfname' が使われる。しかしパターン中に "\zs" が入っている場合、
"\zs" にマッチしたテキストから最後まで、または "\ze" が入っている場合
はそこまでがファイル名として認識される。スペースなど、'isfname' に入っ
ていない文字を含めるにはこれを使う。そして 'includeexpr' を使ってマッ
チしたテキストを処理することができる。
スペースとバックスラッシュを含める方法についてはoption-backslash を
参照。
'includeexpr' 'inex'
'includeexpr' 'inex' 文字列 (既定では "")
バッファについてローカル
{+find_in_path 機能と +eval 機能付きでコンパイルさ
れたときのみ有効}
オプション 'include' が判別した文字列を、ファイル名に変換するために使
われる expression を指定する。以下のようにして、Java言語で "." を "/"
に変換するようなときに便利である:
:setlocal includeexpr=substitute(v:fname,'\\.','/','g')
変数 "v:fname" は、判別されたファイル名に設定される。Note 2 重バックスラッシュに注意: :set コマンドは最初にそれらを半分に
し、その後 1 つを値のままにする。ここで "\." は文字通りドットに一致す
る。単純な文字置換の場合、tr() を使用するとエスケープの必要がなくな
る:
:setlocal includeexpr=tr(v:fname,'.','/')
コマンド gf でも、ファイルの実際の名前が見つからないときは、これが使
われる。プログラミング言語の 'include' 文の後で "gf" を使えるようにな
る。
また <cfile> にも使われる。
式が s: か <SID> で始まる場合、スクリプトID(local-function) に置き
換えられる。例:
setlocal includeexpr=s:MyIncludeExpr()
setlocal includeexpr=<SID>SomeIncludeExpr()
そうでない場合、式はオプションが設定されたスクリプトのコンテキストで評setlocal includeexpr=<SID>SomeIncludeExpr()
価され、その結果スクリプトローカルな要素を使用できる。
値が引数なしの単なる関数呼び出しであれば、より効率的である、
expr-option-functionを参照のこと。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'includeexpr' を評価している間に、テキストを変更したり他のウィンドウに
移ることは許されない。textlock
'incsearch' 'is' 'noincsearch' 'nois'
'incsearch' 'is' 切替 (既定ではオフ、+reltime 機能付きでコンパイル
されたときは defaults.vim 内で設定される)
グローバル
{+extra_search 機能付きでコンパイルされたときのみ有
効}
検索コマンドを打ち込んでいる間にも、打ち込んだところまでのパターンがマッ
チするテキストを、すぐに表示する。マッチした文字列は強調表示される。パ
ターンが不適切であったり見つからなければ、何も表示されない。画面は次々
更新されることになるので、このオプションは表示の速いターミナルでのみ有
用である。
コマンドのパターンにも適用される:
:global
:lvimgrep
:lvimgrepadd
:smagic
:snomagic
:sort
:substitute
:vglobal
:vimgrep
:vimgrepadd
Note マッチが表示されても、カーソルは実際にはマッチした場所に移動して:lvimgrep
:lvimgrepadd
:smagic
:snomagic
:sort
:substitute
:vglobal
:vimgrep
:vimgrepadd
いないので注意。カーソルを移動させるには、やはり <Enter> を打ち込んで
検索コマンドを完了させる必要がある。
マッチを表示中は、次や前のマッチへ移動するのに CTRL-G と CTRL-T キーを
使える。 c_CTRL-G c_CTRL-T
+reltime 機能つきでコンパイルされているときは約0.5秒だけ検索する。複
雑なパターンであったり、大量のテキストはマッチしない場合がある。これは
文字をタイプしている途中で Vim が応答しなくなってしまうのを避けるため
である。
強調表示は、オプション 'highlight' のフラグ 'i' によって設定できる。
'hlsearch' がオンのとき、検索コマンドを打ち込んでいる間、一致するすべ
ての文字列が同様に強調表示される。'hlsearch' も参照。
'hlsearch' をオンにしたくはないが、検索中にすべての一致箇所を強調表示
したい場合、autocmd で 'hlsearch' をオン/オフできる。例:
augroup vimrc-incsearch-highlight
autocmd!
autocmd CmdlineEnter /,\? :set hlsearch
autocmd CmdlineLeave /,\? :set nohlsearch
augroup END
autocmd!
autocmd CmdlineEnter /,\? :set hlsearch
autocmd CmdlineLeave /,\? :set nohlsearch
augroup END
CTRL-L を押すと、現在マッチしているテキストの後からコマンドラインへ1文
字を追加することができる。その際、'ignorecase' と 'smartcase' が設定さ
れていてコマンドラインに大文字が含まれていなければ、追加された文字は小
文字に変換される。
CTRL-R CTRL-W を押すと、現在マッチしているテキストの末尾から単語を追加
することができる。そのとき、既にタイプされている文字は除かれる。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'indentexpr' 'inde'
'indentexpr' 'inde' 文字列 (既定では "")
バッファについてローカル
{+eval 機能付きでコンパイルされたときのみ有効}
ある行の適切なインデントを得るために評価される expression。これは新し
い行が作られるとき、オペレータ = が使われたとき、挿入モードでオプ
ション 'indentkeys' で指定したキーを打ち込んだときに使われる。
値が空でないとき、この設定が 'cindent' と 'smartindent' によるインデン
トの設定を上書きする。'lisp' が設定されている場合、このオプションは
'lispoptions' に "expr:1" が含まれている場合にのみ使用される。
'paste' がオンのとき、このオプションはインデントに使われない。
指定された expression が評価されるとき、変数 v:lnum はインデント計算
の対象となっている行の行番号に設定される。また、この式を評価するとき、
カーソルもこの行に置かれる(移動してしまうかもしれないが)。
式が s: か <SID> で始まる場合、スクリプトID(local-function) に置き
換えられる。例:
set indentexpr=s:MyIndentExpr()
set indentexpr=<SID>SomeIndentExpr()
そうでない場合、式はオプションが設定されたスクリプトのコンテキストで評set indentexpr=<SID>SomeIndentExpr()
価され、その結果スクリプトローカルな要素を使用できる。
引数なしで関数呼び出しを使用する利点は、高速であることである。
expr-option-function を参照。
指定された expression は、インデントすべき空白の数を返さなければならな
い。そのままのインデントを保たせるには "-1" を返させればよい (つまり、
こうするとインデントには 'autoindent' が使われる)。
インデント深さを計算するのに便利な関数は、indent(), cindent() と
lispindent() である。
この expression の評価には副作用があってはならない!つまり、テキストを
変更したり、別のウィンドウに移動してはいけない。評価後にはカーソル位置
は常に復元されるので、カーソルは移動してもよい。
普通、このオプションは関数を呼び出すように設定される:
:set indentexpr=GetMyIndent()
'debug' が "msg" を含まないない限り、エラーメッセージの表示は抑制される。
indent-expression を参照。
NOTE: このオプションは、'compatible' がオンになると "" になるので注意。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'indentexpr' を評価している間に、テキストを変更したり他のウィンドウに
移ることは許されない。textlock
'indentkeys' 'indk'
'indentkeys' 'indk' 文字列 (既定では "0{,0},0),0],:,0#,!^F,o,O,e")
バッファについてローカル
挿入モードで打ち込まれたときに、現在行の再インデントを引き起こすキーの
リスト。これはオプション 'indentexpr' が空でないときのみ起きる。
書式は 'cinkeys' と同様である。indentkeys-format を参照。
C-indenting と indent-expression を参照。
'infercase' 'inf' 'noinfercase' 'noinf'
'infercase' 'inf' 切替 (既定ではオフ)
バッファについてローカル
挿入モードで単語補完 ins-completion をしているとき、このオプションと
'ignorecase' がオンならば、マッチした単語の大文字/小文字の区別は打ち
込んだテキストに応じて修正される。打ち込んだテキストでは小文字だがマッ
チした単語では大文字であるような所があれば、補完される部分もみな小文字
になる。打ち込んだテキストには小文字が1個もなく、打ち込んだテキストで
は大文字だがマッチした単語では小文字であるような所があり、かつその前に
文字があるならば、補完される部分もみな大文字になる。
'noinfercase' にすると、マッチした単語がそのまま挿入される。
'insertmode' 'im' 'noinsertmode' 'noim'
'insertmode' 'im' 切替 (既定ではオフ)
グローバル
Vimが挿入モードを中心として動作するようになる。Vimをモードを持たないエ
ディタとして使いたいときに便利である。evim で使われている。
以下の挿入モードのコマンドが便利だろう。
- カーソル移動に矢印キーを使う
- 1個のノーマルモードコマンドを実行するためにはコマンド CTRL-O を使う
i_CTRL-O。コマンドが別のキー列にマッピングされていたときは、オプショ
ン 'insertmode' がオフであるときのように実行される。つまりマッピング
の内容が終了するまでノーマルモードが続く。
- 数個のノーマルモードコマンドを使うためには先に CTRL-L を使い、その後
挿入モードに戻るために <Esc> を使う。Note CTRL-L を使うと、
'insertmode' をオフにして <Esc> を押したときと同様にカーソルが左へ移
動する。i_CTRL-L
'insertmode' がオンになると、以下の項目に変化がある。
- ファイルの編集を始めたとき、Vimは挿入モードになっている。
- 挿入モードで <Esc> を入力しても動作はなく (no-op)、ビープ音が鳴る。
- ノーマルモードで <Esc> を入力すると挿入モードに移る。
- 挿入モードでの CTRL-L の入力はコマンドであり、挿入されない。
- 挿入モードで CTRL-Z を入力するとサスペンドする。CTRL-Zを参照。
i_CTRL-Z
しかしマッピング内で <Esc> が使われたときは、'insertmode' がオフのとき
のように動作する。これは 'insertmode' がオンでもオフでも、同じマッピン
グが使えるようにするためである。
:normal でノーマルモードコマンドを実行するときは、'insertmode' は使わ
れない。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'isfname' 'isf'
'isfname' 'isf' 文字列 (Win32での既定値は:
"@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,="
AMIGAでは: "@,48-57,/,.,-,_,+,,,$,:"
VMSでは: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~"
OS/390では: "@,240-249,/,.,-,_,+,,,#,$,%,~,="
それ以外では: "@,48-57,/,.,-,_,+,,,#,$,%,~,=")
グローバル
ファイル名やパス名に使われる文字を指定する。ファイル名はコマンド "gf",
"[i" 等やタグファイル内で使われる。またパターン pattern 内の "\f" に
も使われる。
文字コードが 256 以上のマルチバイト文字は常に含まれることになっている
ので、文字コードが 255 以下の文字のみをこのオプションで指定する。
UTF-8では、文字コードが 0xa0 から 0xff の文字は、同様に常に含まれる。
このオプションに空白文字を加える場合はよく考えること! ファイル名にスペー
スが含まれることはあるが、スペースを含めると、ファイル名補完の際に、ど
こからどこまでがファイル名であるか判定できなくなってしまうだろう。おそ
らくスペースは含めない方がよいだろう。
Note '\' をパスの区切りに使うシステムでは、Vimは '\' がユーザーの想定
通りに働くよう最善を尽くす。これには少し巧妙なことをしている。なぜなら
Viは元々、'\' を特殊文字をエスケープするために使っていたからだ。そう
いったシステムでは、普通のファイル名の文字の前にある '\' を取り除かな
い。しかしUnix系列のシステムでは取り除く。既定では '&' と '^' は含まれ
ない。それはこれらの文字が cmd.exe {訳注: Windows NTのシェル} にとって
特別な意味を持つからである。
このオプションの値の書式は、コンマ区切りの指定部のリストである。それぞ
れの指定部は単一の文字または範囲指定からなる。範囲指定は2個の文字コー
ドが '-' で区切られたものである。文字コードは 0 から 255 の10進整数だ
が、代わりにASCIIキャラクタ自身を使ってもよい (ただし数字には使えない)。
例:
"_,-,128-140,#-43" ('_' と、'-' と、コードが 128 から 140
までの文字と、'#' からコードが 43 ま
での文字を含む)
指定部が '^' で始まるとき、それに続く文字コードまたは範囲は指定から除
外される。オプションは左から右に解釈されるので、指定したある範囲に除外
したい文字があったら、それをその範囲の後に除外指定すること。文字 '^'
自体を値に含みたいときは、値または指定部の最後に指定すること。例:
"^a-z,#,^" ('a' から 'z' までの文字を除き、'#' と '^' を
含む)
文字として '@' を指定すると、関数 isalpha() で TRUE が返るような文字全
てが含まれる。普通、それは a から z と A から Z の文字と、それらにアク
セントのついたものである。文字 '@' 自身を値に含みたいときは、"@-@" と
すること。例:
"@,^a-z" アルファベットの仲間全て、ただしアルファベット
の小文字は除く
"a-z,A-Z,@-@" アルファベット全てと、文字 '@'
コンマを含めるには、文字コードが来るはずのところにコンマをおけばよい。
例:
"48-57,,,_" 数字と、コンマと、下線 (アンダースコア)
コンマを除外するには、前に '^' をおく。例:
" -~,^,,9" 空白から '~' までのコンマを除いた全ての文字と
<Tab>
値に空白や '\' を含める方法については、option-backslash を参照。
'isident' 'isi'
'isident' 'isi' 文字列 (Win32での既定値は:
"@,48-57,_,128-167,224-235"
それ以外では: "@,48-57,_,192-255")
グローバル
Identifier に使われる文字を指定する。Identifier は、環境変数の認識とオ
プション 'define' のマッチしたところの後に使われる。またパターン
pattern 内の "\i" にも使われる。このオプションの書式の説明は、
'isfname' を参考にすること。'@' は文字コード 255 までの文字に使われる。
注意: このオプションを変更すると、環境変数の展開に失敗するかもしれない。
例えば値に '/' が含まれているときに "$HOME/.viminfo" を展開しようとす
るとき等である。おそらく代わりに 'iskeyword' を変更するべきだろう。
'iskeyword' 'isk'
'iskeyword' 'isk' 文字列 (Win32でのVimの既定値:
"@,48-57,_,128-167,224-235"
それ以外のシステムでのVimの既定値:
"@,48-57,_,192-255"
Viの既定値: "@,48-57,_")
バッファについてローカル
Keyword は、"w", "*", "[i" 等の多くのコマンドで検索と認識に使われる。
またパターン pattern 内の "\k" にも使われる。このオプションの値の書
式の説明については、オプション 'isfname' を参考にすること。'@' は文字
コード 255 を超える文字で、"word" 文字クラスをチェックする (空白と句読
点ではない任意の文字)。
C言語プログラムには "a-z,A-Z,48-57,_,.,-,>" が使えるだろう。
ヘルプファイルでは、このオプションは '*', '"', '|' と空白の仲間を除い
た全ての printable な文字 {訳注: 文書先頭を参照} に設定される (コマン
ド上で CTRL-] を入力したときにそのコマンドについてのヘルプにジャンプで
きるようにするため)。
'lisp' がオンのときは、文字 '-' は常に含まれる。
このオプションは、シンタックスが :syn-iskeyword を使っていない場合に
は、シンタックスハイライトにも影響を与える。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'isprint' 'isp'
'isprint' 'isp' 文字列 (Win32 と VMS での既定値:
"@,~-255"; それ以外では: "@,161-255")
グローバル
このオプションで指定された文字は、画面に直接表示される。またパターン
pattern 内の "\p" にも使われる。空白 (ASCIIコード 32) から '~'
(ASCIIコード 126) までの文字は、'isprint' に指定されていなくても、また
は除外指定されていても、常に直接表示される。このオプションの書式の説明
は、'isfname' を参考にすること。
unprintable な文字 {訳注: 文書先頭を参照} は、2文字で表示される。
0 - 31 "^@" - "^_"
32 - 126 常に1文字で表示される
127 "^?"
128 - 159 "~@" - "~_"
160 - 254 "| " - "|~"
255 "~?"
'encoding' がUnicodeの一種だったときは、文字コードが 128 から 255 まで
の不正な文字は、<xx> という形式で16進表示される。
'display' に "uhex" が含まれているときは、全ての unprintable な文字が
<xx> の形式で表示される。
unprintable な文字には、ハイライトグループ SpecialKey での強調表示が使
われる。hl-NonText
文字コードが 256 以上のマルチバイト文字は常に含まれることになっている
ので、文字コードが 255 以下の文字のみをこのオプションに指定する。文字
が本来は printable だが現在のフォントでは表示できないときは、代替文字
が表示される。
Unprintable またはゼロ幅のUnicode文字は <xxxx> という形式で表示される。
そういった文字を指定するオプションはない。
'joinspaces' 'js' 'nojoinspaces' 'nojs'
'joinspaces' 'js' 切替 (既定ではオン)
グローバル
行連結コマンドにおいて、'.', '?' や '!' の後に空白を 2 個挿入する。オ
プション 'cpoptions' にフラグ 'j' が含まれるときは、'.' の後にのみ空白
を2個挿入する。
それ以外では空白は1個だけ挿入される。
NOTE: このオプションは、'compatible' がオンになるとオンになるので注意。
'jumpoptions' 'jop'
'jumpoptions' 'jop' 文字列 (既定では "")
グローバル
jumplist の動作を変更する単語のリスト。
stack ジャンプリストをタグスタックのように動作させる。
ジャンプリスト内のエントリの相対位置は、ジャンプリスト
内を逆方向に移動して特定の位置にジャンプするときに、後
続のエントリを破棄するという犠牲を払って保持される。
jumplist-stack
'key'
'key' 文字列 (既定では "")
バッファについてローカル
{+cryptv 機能付きでコンパイルされたときのみ有効}
カレントバッファを暗号化したり復号したりするのに使われるキー。
encryption と 'cryptmethod' を参照。
注意: このキーの値を手動で {訳注: コマンド ":set" を使って、ということ}
設定しないこと。誰かが入力された文字を盗み見るかもしれない。代わりにコ
マンド :X を使うこと。しかし次のようにして、'key' を空にするのはよい。
:set key=
このオプションの値は、":set key" や "echo &key" 等で得ることはできない。これは、値を知るべきでない人に知られないようにするためである。このこと
はまた、設定してしまうとユーザー自身も値を知ることができないということ
である。タイプミスをしないよう注意!
:set-=, :set+=, :set^= も使用できないので、このオプションをオン
にして攻撃者がキー内の部分文字列を推測するのを防ぐことができる。
スクリプトで "&key" を使うことで暗号化が有効になっているか確認できる。
'key' がセットされている場合は "*****" (5個のスター) が返る。
'keymap' 'kmp' E544
'keymap' 'kmp' 文字列 (既定では "")
バッファについてローカル
{+keymap 機能付きでコンパイルされたときのみ有効}
キーマッピングの名前を指定する。mbyte-keymap を参照。
このオプションを適正なキーマップ名に設定すると、キーマッピングが有効に
なるようにオプション 'iminsert' が 1 になるという影響がある。また
'imsearch' も、元が -1 でない限り 1 になる。
英数字、'.'、'-'、'_' のみ使用できる。
'keymodel' 'km'
'keymodel' 'km' 文字列 (既定では "")
グローバル
キーで可能なことを指定するためのキーワードの、コンマ区切りのリスト。指
定可能なキーワードは以下の通りである。
startsel シフトキーと特別なキーを同時に押して選択を開始する
(選択モードとビジュアルモードのどちらでも、オプション
'selectmode' で指定された "キー" によって)。
stopsel シフトキーを押さないままの特別なキーで選択を止める。
ここでいう「特別なキー」とはカーソルキー、<End>, <Home>, <PageUp> や
<PageDown> である。
'keymodel' は、コマンド :behave によって設定される。
'keyprotocol' 'kpc'
'keyprotocol' 'kpc' 文字列 (既定: 以下を参照)
グローバル
'term' の値に応じて、使用するキーボードプロトコルを指定する。サポート
されているキーボードプロトコル名は以下:
none 端末が使用するものなら何でもよい
mok2 xterm でサポートされている、modifyOtherKeys レベル 2
kitty Kitty によってサポートされている、Kitty キーボードプロ
トコル
オプションの値は、コンマで区切られた項目のリストである。各項目は、
'term' オプションとマッチするパターン、コロン、使用されるプロトコル名
を持つ。これを説明するために、デフォルト値を次のように設定する:
set keyprotocol=kitty:kitty,foot:kitty,wezterm:kitty,xterm:mok2
つまり、'term' のどこかに "kitty", "foot", "wezterm" が含まれている場
合は、"kitty" プロトコルが使われる。'term' のどこかに "xterm" が含まれ
ている場合は、"mok2" プロトコルが使われる。
最初にマッチしたものが使用されるので、"kitty" には kitty プロトコルを
使用させたいが、"badkitty" には使用させたくない場合は、まず "badkitty"
にマッチさせ、"none" を使用する:
set keyprotocol=badkitty:none,kitty:kitty
このオプションは、'term' が変更された後に使用される。最初に、おそらく
組み込みリストを使用して termcap エントリが設定される。builtin-terms
を参照。
次に、このオプションが検査され、マッチするものがあり、プロトコルが指定
されていれば、以下のことが起こる:
none 何もせず、通常の t_TE と t_TI の値のままである
mok2 t_TE 値は次のように変更される:
CSI >4;m modifyOtherKeys を無効にする
t_TI 値は次のように変更される:
CSI >4;2m modifyOtherKeys を有効にする
CSI ?4m modifyOtherKeys の状態を要求する
kitty t_TE 値は次のように変更される:
CSI >4;m modifyOtherKeys を無効にする
CSI =0;1u kitty キーボードプロトコルを無効にする
t_TI 値は次のように変更される:
CSI =1;1u kitty キーボードプロトコルを有効にする
CSI ?u kitty キーボードプロトコル状態を要求す
る
CSI >c termresponse を要求する
CTRL-L の後に表示される文字が消えてしまう等の問題に気付いた場合は、
このオプションを空にしてみるとよい。その後、'term' オプションを設定す
ると有効になる:
set keyprotocol=
let &term = &term
let &term = &term
'keywordprg' 'kp'
'keywordprg' 'kp' 文字列 (既定では "man" または "man -s", DOSでは:
":help", VMSでは: "help")
グローバル/バッファについてローカル global-local
コマンド K に使われるプログラム。環境変数は展開される :set_env。
Vim の内部ヘルプを開くコマンドは ":help" である(以前はこのオプションの
グローバル値を空にすると Vim の内部ヘルプが使われたが、今は推奨されて
いない)。
最初の文字が ":" の場合、コマンドは Vim の Ex コマンドとして呼び出さ
れ、[count] がゼロでなければ引数として追加される。
"man", "man -s" または1つのExコマンドが使われた場合、Vim は "K" に指定
されたカウントを自動的に変換し最初の引数として渡す。"man -s" が指定さ
れカウントが指定されなかったときは "-s" が削除される。値に空白や '\'
を含める方法については、option-backslash を参照。
例:
:set keywordprg=man\ -s
セキュリティ上の理由から、このオプションを modeline または sandbox内で設定することはできない。
'langmap' 'lmap' E357 E358
'langmap' 'lmap' 文字列 (既定では "")
グローバル
{+langmap 機能付きでコンパイルされたときのみ有効}
このオプションでは、ユーザーのキーボードを特別な言語モードに切り替えら
れるようにする。挿入モードで文字を入力しているときは、文字は直接入力さ
れる。しかしノーマルモードではオプション 'langmap' により、入力された
特別な文字をキー本来の文字に変換する。つまりノーマルモードコマンドを実
行するためにキーボードモードを変更しなくともよいということである。
このオプションは 'keymap' と正反対のものである。'keymap' は挿入モード
でマッピングを行う。
また 'langmap' のマッピングの結果の文字が適用されるのを防ぐため、
'langremap' をオフにすることも考慮すること。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
例 (ギリシャ語に対して、UTF-8で): greek
:set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz
例 (コマンドの z と y の意味の交換): :set langmap=zy,yz,ZY,YZ
'langmap' は、コンマ区切りの指定部のリストである。
それぞれの指定部は次の2種類のうちどちらかの形式に従う。
1. 2文字の組のリスト。変換「元」の文字の直後に変換「先」の文字を置い
て組を作る。例: "aA", "aAbBcC"
2. 変換「元」の文字のリスト、セミコロン、変換「先」の文字のリスト。
例: "abc;ABC"
例: "aA,fgh;FGH,cCdDeE"
特別な文字は '\' を前に置く必要がある。そのような文字は ";", ',', '"',
'|' と '\' 自身である。
Langmap を使えば言語間の切り替えなしにVimの機能を有効化することができ
る。以下のような場合では、ユーザーの言語の文字でも、Vimは (langmap の
マッピングに従って) 通常の英語の文字として理解できる。
o ノーマル/ビジュアルモード (コマンド、バッファ/レジスタ名、ユーザー
のマッピング)
o 挿入/置換モード: CTRL-R 入力後のレジスタ名
o 挿入/置換モード: マッピング
コマンドラインモードで入力された文字には、このオプションは効力を「持た
ない」。Note このオプションは、異なった言語/エンコーディング用のマッ
ピングを切り替えられるときにはいつでも設定を変更できることに注意。毎回
マッピング設定を打ち込まずに済むようにするには、マッピングを使うこと!
'langmenu' 'lm'
'langmenu' 'lm' 文字列 (既定では "")
グローバル
{+menu 機能と +multi_lang 機能付きでコンパイルされ
たときのみ有効}
メニュー翻訳に使われる言語。つまり 'runtimepath' 内のディレクトリ
"lang" からどのファイルを読み込むのか指定する。指定方法は次の通り (空
白はなし)。
"lang/menu_" .. &langmenu .. ".vim"
例えば、環境変数 $LANG が何に設定されていても、常にオランダ語メニューを使うには、次のようにする。
:set langmenu=nl_NL.ISO_8859-1
'langmenu' が空のときは、変数 v:lang が使われる。通常のファイル名文字だけが使用できる。"/\*?[|<>" は不正である。
ユーザーの環境変数 $LANG は英語以外の言語だが、必ず英語のメニューを使
いたいならば、次のようにする。
:set langmenu=none
このオプションは、メニューの読み込み、ファイルタイプ判定の起動、構文強調表示の起動のいずれよりも先に設定しなければならない。メニューが定義さ
れてしまうと、このオプションを設定しても何の効果もない。しかしこうする
ことはできる。
:source $VIMRUNTIME/delmenu.vim
:set langmenu=de_DE.ISO_8859-1
:source $VIMRUNTIME/menu.vim
警告: こうすると、ユーザー自身の定義したメニューも含む、全てのメニュー:set langmenu=de_DE.ISO_8859-1
:source $VIMRUNTIME/menu.vim
がいったん削除される!
'langnoremap' 'lnr' 'nolangnoremap' 'nolnr'
'langnoremap' 'lnr' 切替 (既定ではオフ、defaults.vim でオンに設定される)
グローバル
{+langmap 機能付きでコンパイルされたときのみ有効}
これは 'langremap' に似ているが、値が逆になっている。また後方互換性の
ためだけに残されている。'langremap' を設定した時は、逆の値が
'langnoremap' に設定され、反対もまた同様である。
'langremap' 'lrm' 'nolangremap' 'nolrm'
'langremap' 'lrm' 切替 (既定ではオン、defaults.vim 内でオフに設定される)
グローバル
{+langmap 機能付きでコンパイルされたときのみ有効}
オフの場合、'langmap' の文字がマッピングの結果として適用されない様に
なる。基本的には、もし 'langmap' の設定により幾らかのマッピングが無効
になっていると気づいた場合には、このオプションの設定を試みると良い。
このオプションは後方互換性の為にデフォルトでオンである。マッピングが壊
れないようにするにはオフを設定すると良い。
'laststatus' 'ls'
'laststatus' 'ls' 数値 (既定では 1)
グローバル
最下ウィンドウにいつステータス行が表示されるかを設定する。
0: 全く表示しない
1: ウィンドウの数が2以上のときのみ表示
2: 常に表示
ウィンドウをいくつか表示しているときには、ステータス行があると見栄えが
よくなる。しかし画面上の行をさらに必要とする。status-line
'lazyredraw' 'lz' 'nolazyredraw' 'nolz'
'lazyredraw' 'lz' 切替 (既定ではオフ)
グローバル
オンのときは、マクロやレジスタの内容およびその他のキーボードから打ち込
まれないコマンドを実行する間、画面は再描画されなくなる。また、ウィンド
ウタイトルの更新も後回しになる。画面の再描画を強制的に行うには、コマン
ド :redraw を使うこと。
これにより表示エラーとなることがある。再描画によってちらつきや速度低下
になる場合にのみ一時的に設定することを目的としてる。
'linebreak' 'lbr' 'nolinebreak' 'nolbr'
'linebreak' 'lbr' 切替 (既定ではオフ)
ウィンドウについてローカル
{+linebreak 機能付きでコンパイルされたときのみ有効}
オンのときは、画面に収まりきる最後の文字ではなく、オプション 'breakat'
に指定された文字のところで、長い行を折り返す。'wrapmargin' や
'textwidth' と違い、これはファイルに実際の <EOL> を挿入しない。このオ
プションが影響するのはファイルの表示方法であり、内容ではない。
'breakindent' がオンのときは行はインデントされて表示される。そして、
'showbreak' に設定された文字が折り返された行の先頭に置かれる。このオプ
ションは、'wrap' がオフのときには使われない。
Note 大抵、<EOL> の後の <Tab> は正しい数の空白として表示されないので注
意。
'lines' E593
'lines' 数値 (既定では 24 またはターミナルの高さ)
グローバル
画面上の行数。普通このオプションはターミナルの初期化の時点で設定され、
手動で設定する必要はない。posix-screen-size も参照。
VimがGUI環境内やサイズ変更可能なウィンドウ内で実行されているときは、こ
のオプションを変更するとウィンドウサイズも変更される。このサイズ設定を
GUI でだけ使用したいなら、このコマンドを gvimrc ファイルに書くこと。
行数の最大値は、画面に収まる行数に制限される。可能な限りウィンドウの高
さを大きくするには次のコマンドを使う:
:set lines=999
最小値は2、最大値は1000。行数が期待したのより少なかったら、オプション 'guiheadroom' を確認する
こと。
あなたがこのオプションを変更したのに、Vimがディスプレイの行数の物理的
な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが
ある。
{訳注: オプション 'columns' も参照}
'linespace' 'lsp'
'linespace' 'lsp' 数値 (既定では 0, Win32のGUI版では 1)
グローバル
{VimのGUI版でのみ有効}
行間の幅のピクセル数。フォントが文字セルの高さを一杯に使っていて、行同
士が接触してしまうときに便利である。1 以上のときには下線を引く余裕がで
きる。
フォントによっては行間が広すぎることがある。その場合は 'linespace'を負
の値にすると調整することができる。しかしそうすると表示に問題が出る場合
がある。
'lisp' 'nolisp'
'lisp' 切替 (既定ではオフ)
バッファについてローカル
Lispモード: 挿入モードで <Enter> が入力されると、次の行のインデントを
Lisp の標準 (というかまあ、その一種) にする。また "cc" や "S" でも同様
である。これが機能するにはオプション 'autoindent' もオンでなければなら
ない。'cpoptions' のフラグ 'p' はインデントの方法 (Vi互換か、より良い
方法か) を変更する。'lispwords' も参照。
キーワードを構成する文字に '-' も含まれるようになる。'equalprg' が空の
ときには、外部プログラムを呼び出さず、Lisp用のインデント用アルゴリズム
を使うように、オペレータ "=" を再定義する。
このオプションは、'paste' がオンのときには使われない。
'lispoptions' 'lop'
'lispoptions' 'lop' 文字列 (既定では "")
バッファについてローカル
'lisp' オプションとともに有効化された場合、Lisp のインデントに影響を
与える項目のコンマ区切りのリスト。現在サポートされている項目は 1 つだ
けである。
expr:1 設定されている場合、Lisp のインデントに 'indentexpr' を
使用する
expr:0 Lisp のインデントに 'indentexpr' を使用しない (デフォ
ルト)
Note 'indentexpr' を使用する場合、= 演算子はすべての行をインデントす
る。それ以外の場合、最初の行はインデントされないことに注意 (Vi 互換)。
'lispwords' 'lw'
'lispwords' 'lw' 文字列 (既定値はとても長い)
グローバル/バッファについてローカル global-local
'lisp' オプションとともに有効化された場合、Lisp用のインデント方法を
設定するキーワードの、コンマ区切りのリスト。
'list' 'nolist'
'list' 切替 (既定ではオフ)
ウィンドウについてローカル
listモード: デフォルトではタブ文字を CTRL-I で表示し、行末に $ を表示
する。タブ文字と空白文字との差異や、行末に続く空白の差異を見るのに便利
である。オプション 'listchars' でより詳しく表示方法を設定できる。
カーソルはタブが占める桁の最初の位置に表示される。nolist の場合はノー
マルモードでカーソルをタブの上に移動させると、タブが占める桁の最後の位
置にカーソルが表示されるが、それと異なる。タブをスペースで表示しつつ、
カーソル位置をそのように変えたいなら、次のようにする:
:set list lcs=tab:\ \
{訳注: 最後、バックスラッシュの後にスペースがあることに注意}Note オプション 'cpoptions' がフラグ 'L' を含むならば、このオプション
は整形コマンドにも影響することに注意 ('textwidth' や 'wrapmargin' と共
に設定されたとき)。タブの表示方法の変更については、'listchars' を参照。
'listchars' 'lcs'
'listchars' 'lcs' 文字列 (既定では "eol:$")
グローバル/ウィンドウについてローカル global-local
'list' モードと :list コマンドでの表示に使われる文字を設定する。値は
指定文字列のコンマ区切りのリストである。 E1511
lcs-eol
eol:文字 行末の表示に使われる文字。指定されないと、行末には何も
表示されない。
lcs-tab
tab:xy[z] タブ文字の表示に使われる 2つ または 3つの文字。
3文字目は任意。
tab:xy 'x' が常に使用され、次に 'y' が適切な回数だけ使用され
る。したがって、"tab:>-" は以下のように表示される:
>
>-
>--
etc.
tab:xyz 'z' が常に使用され、次に 'x' が先頭に追加され、次に
'y' が適切な回数使用される。したがって、"tab:<->" は以
下のように表示される:
>
<>
<->
<-->
etc.
"tab:" が省略された場合、タブは ^I と表示される。
lcs-space
space:文字 スペースの表示に使われる文字。指定されないと、スペース
は空白のまま。
lcs-multispace
multispace:文字...
複数の連続した空白を表示するために循環的に使われる1つ
以上の文字。単一の空白を除いて "space" の設定を上書き
する。省略された場合、"space" の設定が使われる。例とし
て、:set listchars=multispace:---+ は10文字の連続ス
ペースで次のようになる:
---+---+--
lcs-lead
lead:文字 先頭のスペースの表示に使われる文字。指定されないと、先
頭のスペースは空白のまま。行頭のスペースでは "space"
および "multispace" の設定を上書きする。"tab:" と組み
合せられる、例えば:
:set listchars+=tab:>-,lead:.
lcs-leadmultispaceleadmultispace:c...
lcs-multispace 値と似ているが、先頭のスペースのみを
対象とする。先頭の複数スペースのために lcs-lead も
オーバーライドする。
:set listchars=leadmultispace:---+ は10文字の連続ス
ペースで次のようになる:
---+---+--XXX
ここで "XXX" はこの行の最初の空白ではない文字を意味す
る。
lcs-trail
trail:文字 行末のスペースの表示に使われる文字。指定されないと、行
末のスペースは空白のまま。行末のスペースでは "space"
および "multispace" の設定を上書きする。
lcs-extends
extends:文字 'wrap' がオフで、行が画面の右端よりも伸びているときに、
最終列に表示される文字。
lcs-precedes
precedes:文字 最初の列に表示される文字の前にテキストがある場合 {訳注:
上の行の末尾が画面の右端より伸びているとき} に、物理行
の最初に目に見える列に表示する文字。
lcs-conceal
conceal:文字 'conceallevel' が 1 のときに Conceal されたテキストの
代わりに表示される文字。
lcs-nbsp
nbsp:文字 ノーブレークスペース文字 (0xA0 (10進数では160) や
U+202F) の表示に使われる文字。指定されない場合は空白の
まま。{訳注: 0xA0はLatin1で改行なしスペースを表す}
文字 ':' と ',' は使うべきでない。'encoding' が "utf-8" のときは UTF-8
の文字が使える。そうでないときは printable な文字 {訳注: 文書先頭を参
照} だけが使える。全ての文字は幅が1でなければならない。 E1512
各文字は16進数で指定できる:
set listchars=eol:\\x24
set listchars=eol:\\u21b5
set listchars=eol:\\U000021b5
Note これには2重バックスラッシュを使う。16進文字の数は \\x で2桁、\\uset listchars=eol:\\u21b5
set listchars=eol:\\U000021b5
で4桁、\\U で8桁ちょうどでなければならない。
例:
:set lcs=tab:>-,trail:-
:set lcs=tab:>-,eol:<,nbsp:%
:set lcs=extends:>,precedes:<
"eol", "extends", "precedes" にはハイライトグループ "NonText" での強調:set lcs=tab:>-,eol:<,nbsp:%
:set lcs=extends:>,precedes:<
表示がなされ、"tab", "nbsp", "space", "multispace", "lead", "trail" に
はハイライトグループ "SpecialKey" が適用される。
hl-NonText hl-SpecialKey
'lpl' 'nolpl' 'loadplugins' 'noloadplugins'
'loadplugins' 'lpl' 切替 (既定ではオン)
グローバル
オンのときは、Vimが立ち上がるときにプラグインスクリプトが読み込まれる
load-plugins。
このオプションをユーザーのファイル vimrc 内でオフにすることで、プラグ
インの読み込みを無効化できる。
Note コマンドライン引数 "-u NONE", "-u DEFAULTS" または "--noplugin"
によってこのオプションをオフにできることに注意。-u --noplugin。
'luadll'
'luadll' 文字列 (既定値はビルドに依存)
グローバル
{+lua/dyn 機能付きでコンパイルされたときのみ有効}
Lua 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_LUA_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'macatsui' 'nomacatsui'
'macatsui' 切替 (既定ではオン)
グローバル
{サポートしない}
Mac OS X GUI のコードが削除されたため、すでにサポートされなくなった。
'magic' 'nomagic'
'magic' 切替 (既定ではオン)
グローバル
検索パターン内で使用可能な特別な文字を変更する。pattern を参照。
警告: このオプションをオフにするとプラグインの多くの動作を壊す可能性が
高い! 多くのパターンがこのオプションがオンであると仮定しており、オフに
なっているとそれらが失敗するからである。古い Vi 用のスクリプトを使うと
きにだけオフにするべきだろう。それ以外の状況では 'magic' がオンである
時に動作するパターンを書けば良い。また /\M が必要ならば "\M" を含め
ると良い。
Vim9 script では 'magic' の値は無視され、パターンは常にセットされて
いるかのように振る舞う。
'makeef' 'mef'
'makeef' 'mef' 文字列 (既定では "")
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
コマンド :make (:make_makeprg を参照) と :grep に使われるエラー
ファイルの名前。
値が空のときは、内部で生成された一時ファイルが使われる。
"##" が含まれているときは、その部分はファイル名の一意性を保つための数
字に置き換えられる。こうすれば ":make" で既存のファイルを上書きしてし
まうことがなくなる。
":cf" には使われ「ない」。それについてはオプション 'errorfile' を参照。
環境変数は展開される :set_env。
値に空白や '\' を含める方法については、option-backslash を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'makeencoding' 'menc'
'makeencoding' 'menc' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
外部コマンドの出力を読むときに使用されるエンコーディング。空の時はエン
コーディングは変換されない。
これは以下のコマンドに使用される: :make, :lmake, :grep, :lgrep,
:grepadd, :lgrepadd, :cfile, :cgetfile, :caddfile, :lfile,
:lgetfile および :laddfile
これは主に MS-Windows で 'encoding' を "utf-8" に設定している場合に有
用である。もし +iconv が有効化されており GNU libiconv が使われている
際には、'makeencoding' を "char" に設定することはシステムロケールのエ
ンコーディングに設定するのと同じ効果がある。例:
:set encoding=utf-8
:set makeencoding=char " システムロケールが使用される
:set makeencoding=char " システムロケールが使用される
'makeprg' 'mp'
'makeprg' 'mp' 文字列 (既定では "make", VMSでは "MMS")
グローバル/バッファについてローカル global-local
コマンド ":make" で使われるプログラム。:make_makeprg を参照。値には
文字 '%' と '#' を使える (:_% と :_# 参照)。これらはそれぞれ現在の
ファイル名と代替ファイル名に展開される。ファイル名に特殊文字が含まれる
ときは ::S を使う。
環境変数は展開される :set_env。値に空白や '\' を含める方法については、
option-backslash を参照。Note 文字 '|' は2回エスケープすることに注意:
1回目はコマンド ":set" に対して、2回目はコマンドの解釈に対してである。
ユーザーのフィルタが "マイフィルタ" であるときは、次のようにする。
:set makeprg=gmake\ \\\|\ マイフィルタ
引数が挿入される場所を指定するには、"$*" を (複数回でも) 使える。例: :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
セキュリティ上の理由から、このオプションを modeline または sandbox内で設定することはできない。
'matchpairs' 'mps'
'matchpairs' 'mps' 文字列 (既定では "(:),{:},[:]")
バッファについてローカル
括弧などの組を構成する文字。コマンド % で片方からもう片方にジャンプ
する。
設定できるのは違う文字の組だけである。つまりダブルクォートで囲まれた区
間をジャンプすることはできない。
文字はコロンで区切る。
組はコンマで区切って指定する。値に '<' と '>' を設定する例 (HTML用):
:set mps+=<:>
さらに興味深い例は、代入文の '=' と ';' の間でジャンプするもので、Cや
Java等の言語で便利である。
:au FileType c,cpp,java set mps+==:;
コマンド "%" のさらに発展的な使用法については、ディレクトリ
$VIMRUNTIME/pack/dist/opt/matchit 内のプラグイン matchit.vim を参照。
add-local-help
'matchtime' 'mat'
'matchtime' 'mat' 数値 (既定では 5)
グローバル
オプション 'showmatch' がオンのとき、マッチしている括弧を表示するため
の時間を0.1秒単位で指定する。Note このオプションでは、他の時間関係のオ
プションと違い、単位がミリ秒でないので注意。これは Nvi との互換性を保
つためである。
'maxcombine' 'mco'
'maxcombine' 'mco' 数値 (既定では 2)
グローバル
表示の際にサポートされている文字の組み合わせ数の最大値。
'encoding' が "utf-8" のときだけ適用される。
ほとんどの言語に対しては既定値で十分である。ヘブライ語は4以上が必要で
ある。最大値は6。
このオプションの値が2のときでも、それ以上の組み合わせのテキストを編集
することは可能である。ただしそれを表示することはできない。g8 やga
を使う。mbyte-combining を参照。
'maxfuncdepth' 'mfd'
'maxfuncdepth' 'mfd' 数値 (既定では 100)
グローバル
{+eval 機能付きでコンパイルされたときのみ有効}
ユーザー定義関数の関数呼び出しの深さの最大値。これは普通、終わらない再
帰呼び出しを捉えるために使われる。関数のさらに深い再帰呼び出しを使うと
きは、オプション 'maxfuncdepth' に、さらに大きい値を設定すること。しか
しこうするとメモリを余計に消費するので、メモリを使い果たしたときに落ち
る危険がある。
この制限を200より大きな値に増やした場合、Exコマンドの再帰の最大値も変
更される。E169 参照。
:function も参照。
コールバック関数の呼び出しの深さの最大値にも用いられる。
'maxmapdepth' 'mmd' E223
'maxmapdepth' 'mmd' 数値 (既定では 1000)
グローバル
マッピングに対するマッピングを、文字が使われるまでに繰り返す回数の最大
値。これは普通、":map x y" と ":map y x" のような堂々巡りで終わらない
マッピングを捉えるために使われる。しかしこれは ":map g wg" 等は捉えな
い。それは次のマッピングが行われる前に 'w' が使われているからである。
key-mapping も参照。
'maxmem' 'mm'
'maxmem' 'mm' 数値 (既定では 256 から 5120 の間 (システムによって
異なる) または利用できるメモリの半分)
グローバル
1つのバッファに使用できるメモリの最大値 (キロバイト単位)。この限界に達
すると、バッファにさらにメモリを割り当てるときには、他のメモリを解放す
る。
このオプションの最大値は約 2000000 である。限界を設けないときには
この値に設定すること。
'swapfile' がオフの場合、この値は無視される。
'maxmemtot' も参照。
'maxmempattern' 'mmp'
'maxmempattern' 'mmp' 数値 (既定では 1000)
グローバル
パターンマッチングに使うメモリ量の最大値(キロバイト単位)。設定可能な最
大値は約2000000。限界を設けないときにはこの値に設定すること。
E363
この制限に達したときは、エラーメッセージを表示し、たいていの場合
CTRL-C が押されたのと同じように振る舞う。
制限に達するのはたいてい、検索パターンが極めて非効率であるか複雑過ぎる
ときである。これは非常に長い行の上で "\(.\)*" を検索するとすぐになる。
".*" の方がはるかによい。
複雑なテキスト構造を構文ルールがマッチさせようとするときに、再描画で同
様に起こりうる。
'maxmempattern' の制限に達する前に Vim がメモリ不足になるかもしれず、
その場合は代わりに "Out of memory" エラーになる。
'maxmemtot' 'mmt'
'maxmemtot' 'mmt' 数値 (既定では 2048 から 10240 の間 (システムによっ
て異なる) または利用できるメモリの半分)
グローバル
全てのバッファで使用するメモリの合計の最大値 (キロバイト単位)。このオ
プションの最大値は約 2000000 (2 ギガバイト)である。限界を設けないとき
にはこの値に設定すること。
64 ビットマシンではもっと高くしても動作するかもしれない。けれど、本当
にテキストの編集に 2 ギガバイト以上も必要ですか? テキスト自体はス
ワップファイルに保存されるので、この設定でも 2 ギガバイト以上のファイ
ルは編集できることを、忘れないこと。メモリはアンドゥ情報を記憶するのに
必要なのだ。
'swapfile' がオフになっているバッファも、全体のメモリ使用量に数えられ
る。
'maxmem' も参照。
'menuitems' 'mis'
'menuitems' 'mis' 数値 (既定では 25)
グローバル
{+menu 機能付きでコンパイルされたときのみ有効}
メニューの項目数の最大値。自動生成されるメニュー、例えばバッファメニュー
に対して使われる。このオプションを変更しても直接の効果はなく、メニュー
を更新しなければならない。
'mkspellmem' 'msm'
'mkspellmem' 'msm' 文字列 (既定では "460000,2000,500")
グローバル
{+syntax 機能付きでコンパイルされたときのみ有効}
:mkspell に対するパラメーター。単語ツリーの圧縮を開始するタイミング
を設定する。単語がたくさんあると圧縮に時間がかかるが、メモリ不足になる
のを防ぐためには必要な事である。単語につき使われるメモリ量はそれらの単
語がどれだけ似ているかに密接に関係する。そのため、この設定は複雑になる。
3つの数値があり、それらをコンマで区切る:
{start},{inc},{added}
ほとんどの言語では圧縮しない単語ツリーがメモリに収まる。{start} は圧縮
を行う前に使えるメモリ量をキロバイト単位で指定する。これは Vim が利用
可能なメモリ量より少し少なくするべきである。
{start} の制限を超えたとき、別な圧縮を行う前に割り当てることができるメ
モリ量を {inc} によりキロバイト単位で指定する。これを低い値にするとよ
り少ない単語を追加した後に圧縮を行うことになる。高い値にするとより多く
のメモリが割り当てられることになる。
圧縮を行った後、さらにメモリが必要になって {inc} の制限が無視されて圧
縮が行われる前に {added}×1024 個の単語を追加することができる。これを
低い値にすると {inc} の制限にぶつかる機会が少なくなり、より少ないメモ
リを使うが、遅くなる。
これらの値が重要になる言語はイタリア語とハンガリー語である。システムが
約 512Mbyte のメモリを備えているときは既定値でうまくいく。1 GByte のメ
モリを持っているならこうしてもよい:
:set mkspellmem=900000,3000,800
512 Mbyte より少ないメモリしか持っていないなら、'mkspellmem' がどんな値であっても、ある言語に対しては :mkspellが失敗するかもしれない。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'modeline' 'ml' 'nomodeline' 'noml'
'modeline' 'ml' 切替 (Vimの既定値はオン (rootの場合はオフ)、
Viの既定値はオフ)
バッファについてローカル
'modeline' がオンの場合、'modelines' は setコマンドに対してチェックさ
れる行数を与える。
'modeline' がオフの場合、または 'modelines' がゼロの場合、行はチェック
されない。modeline を参照。
'modelineexpr' 'mle' 'nomodelineexpr' 'nomle'
'modelineexpr' 'mle' 切替 (既定ではオフ)
グローバル
オンにすると、式であるいくつかのオプションをモードラインで設定できるよ
うになる。オプションが 'modelineexpr' の影響を受けているかどうかを確認
すること。modeline も参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'modelines' 'mls'
'modelines' 'mls' 数値 (既定では 5)
グローバル
オプション 'modeline' がオンのときは、テキスト中のコマンド ":set" を
'modelines' に指定された行数だけ調べる。'modeline' がオフであるか、
'modelines' が 0 のときは、":set" は調べられない。modeline を参照。
NOTE: 'modeline' は、'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'modifiable' 'ma' 'nomodifiable' 'noma'
E21
'modifiable' 'ma' 切替 (既定ではオン)
バッファについてローカル
オフのときは、バッファの内容が変更できなくなる。オプション
'fileformat' と 'fileencoding' も変更できなくなる。
起動時にコマンドライン引数 -M でオフに設定できる。
'modified' 'mod' 'nomodified' 'nomod'
'modified' 'mod' 切替 (既定ではオフ)
バッファについてローカル local-noglobal
オンのとき、バッファは変更を受けたものとされる。これは以下のようなとき
にオンになる。
1. 最後に書き込みをした後にテキストが変更されたとき。undo をするコマ
ンドで元の状態まで戻ったときは、このオプションはオフになる。しかし
書き込みより前の編集を undo すると、再びこのオプションはオンになる。
テキストが最後に書き込まれたときと異なっているからである。
2. オプション 'fileformat' や 'fileencoding' が元の値と異なっていると
き。元の値とは、バッファが読み込まれたり書き込まれたときに設定され
た値である。コマンド ":set nomodified" は 'fileformat' や
'fileencoding' を現在の値に設定し、'modified' をオフにする。
'eol' と 'bomb' に似ている。
このオプションは、BufNewFile、BufRead/BufReadPost、BufWritePost、
FileAppendPost、VimLeave イベントでバッファが変更された場合には設定さ
れない。例として gzip-example 参照。
'buftype' が "nowrite" または "nofile" であるときもこのオプションを設
定できるが、無視される。
Note: テキストは実質同じであることもある、例えば "A" の上で "rA" を押
した場合も 'modified' はセットされる。
'more' 'nomore'
'more' 切替 (Vimの既定値: オン、Viの既定値: オフ)
グローバル
オンのときは、一覧表示で画面が一杯になったときは一旦停止し、「継続」プ
ロンプト more-prompt を表示する。オフのときは停止せず、最後まで表示
する。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'mouse'
'mouse' 文字列 (既定では "", GUI版とWin32では "a",
defaults.vim 内で "a" か "nvi" に設定される)
グローバル
オンのとき、マウスが利用可能になる。ほとんどの端末で動作する(xterm,
Win32 win32-mouse, QNX pterm, sysmouse 付きの *BSD コンソールおよび
gpm 付きの Linux コンソール)。GUIでマウスを使うことについては、
gui-mouse を参照。マウスの利用はモードごとに設定できる。
n ノーマルモードおよび端末モード
v ビジュアルモード
i 挿入モード
c コマンドラインモード
h ヘルプファイルを閲覧しているときの上記のモード全て
a 上記のモード全て
r 「続けるには」プロンプト hit-enter および「継続」プ
ロンプト more-prompt が出ているとき
普通、次のようにしてマウスを5モード全てで利用可能にする。
:set mouse=a
端末がアプリケーションに向かうマウスイベントを無効にできない場合は、以下を使用する:
:set mouse=nvi
そして ":" を押し、システム向けにテキストを選択して、Escを押してマウスイベントを使用しているVimに戻ることができる。
defaults.vim では、'term' オプションが "xterm" と一致しない場合、
"nvi" が使用される。
マウスを有効にしていなくても、GUI版ではモードレスセレクションにマウス
を使うことができる。しかしこのときにはカーソルは動かない。
mouse-using を参照。またオプション 'clipboard' も参照。
Note: ターミナルでマウスを有効にすると、Xサーバーにアクセスできるなら
ばコピー/貼り付けではレジスタ "* を使うことに注意。マウスボタンの
xterm風の操作は、シフトキーを押したままにすることで実現できる。
'clipboard' も参照。
'mousefocus' 'mousef' 'nomousefocus' 'nomousef'
'mousefocus' 'mousef' 切替 (既定ではオフ)
グローバル
{VimのGUI版でのみ有効}
オンのときは、マウスカーソルのおかれたウィンドウが自動的にアクティブに
なる。マウス以外でウィンドウ配置やウィンドウフォーカスを変更すると、マ
ウスカーソルはキーボードフォーカスと共に移動する。既定ではオフだが、こ
れはマウスカーソルを動かして予期しないウィンドウをアクティブにしてしま
うことがあるため、プルダウンメニューの利用を少し面倒にするからである。
MS-Windows: マウスのスクロールホイールを使ったときにどのウィンドウがス
クロールされるかについては 'scrollfocus' も参照。
'mousehide' 'mh' 'nomousehide' 'nomh'
'mousehide' 'mh' 切替 (既定ではオン)
グローバル
{VimのGUI版でのみ有効}
オンのとき、文字が入力されるときにはマウスカーソルが隠される。マウスが
動くとマウスカーソルは再び現れる。
'mousemodel' 'mousem'
'mousemodel' 'mousem' 文字列 (既定では "extend", Win32では "popup")
グローバル
マウスの動作モデルを設定する。モデル名は主にマウスの右クリックで行われ
る動作を表している。
extend 右クリックで選択範囲を広げる。これは xterm と同様の動
作である。
popup 右クリックでポップアップメニューを表示する。シフト+左
クリックで選択範囲を広げる。これは MS-Windows のような
動作になる。
popup_setpos "popup" と似ているが、カーソルが右クリックした場所に移
動する。その結果、選択範囲を対象とする操作が {訳注: マ
ウスのドラッグで選択した範囲ではなく} クリックしたオブ
ジェクトに対して働くようになる。
元々操作の対象となるはずの選択範囲内を右クリックしたと
きは、カーソルは移動しない。もちろん、選択範囲の外側を
左クリックすればビジュアルモードは終了する。
それぞれのモデルでの、マウス操作の働きの一覧:
マウス操作 extend popup(_setpos)
左クリック カーソル移動 カーソル移動
左ドラッグ 選択開始 選択開始
シフト+左 単語検索 選択範囲の拡張
右クリック 選択範囲の拡張 メニュー (カーソル移動)
右ドラッグ 選択範囲の拡張 なし
中央クリック 貼り付け 貼り付け
"popup" モデルでは、右クリックでポップアップメニューを表示する。これは
先に定義しておかなければならない。popup-menu を参照。
Note マウス操作による動作は、マッピングでさらに詳しく設定できることに
注意。gui-mouse-mapping を参照。しかしマッピングはモードレスセレクショ
ンには「使われない」 (GUIそのものの機能であるため)。
オプション 'mousemodel' は、コマンド :behave で設定できる。
'mousemoveevent' 'mousemev' 'nomousemoveevent' 'nomousemev'
'mousemoveevent' 'mousemev' 切替 (既定ではオフ)
グローバル
{VimのGUI版でのみ有効}
オンの時、マウスの移動イベントを入力キューへ引き渡し、マッピングに使用
できる。デフォルトはオフで、必要な時以外のマウスの移動によるオーバー
ヘッドを抑止する。gui-mouse-mapping を参照。
注意: このオプションを設定するとマウスの移動時にマッピング破棄で待ち状
態を作る。
現在はGUIでのみ動作し、端末内での動作は今後対応になる。
'mouseshape' 'mouses' E547
'mouseshape' 'mouses' 文字列 (既定では "i-r:beam,s:updown,sd:udsizing,
vs:leftright,vd:lrsizing,m:no,
ml:up-arrow,v:rightup-arrow")
グローバル
{+mouseshape 機能付きでコンパイルされたときのみ有効}
それぞれのモードでのマウスカーソルの外観を設定する。値はコンマ区切りの
指定部のリストであり、オプション 'guicursor' に使われるものと大分似て
いる。指定部は、次のような状態リストと外観設定からなる。
状態リスト:外観,状態リスト:外観,..
状態リストは、以下のモードまたはカーソル位置のダッシュ '-' 区切りのリ
ストである。
普通のウィンドウ内:
n ノーマルモード
v ビジュアルモード
ve 'selection' に "exclusive" が含まれているときのビジュ
アルモード (指定されなければ 'v' と同じ設定になる)
o Operator-pendingモード
i 挿入モード
r 置換モード
その他:
c コマンドラインへの追加時
ci コマンドラインへの挿入時
cr コマンドラインでの置換時
m 「続けるには」プロンプトまたは「継続」プロンプト表示中
e 全てのモードにおいて、マウスカーソルが最下ウィンドウよ
りも下に置かれているとき
s 全てのモードにおいて、マウスカーソルがステータス行に置
かれているとき
sd 全てのモードにおいて、ステータス行をドラッグ中のとき
vs 全てのモードにおいて、マウスカーソルが垂直分割の区切り
行に置かれているとき
vd 全てのモードにおいて、垂直分割区切りをドラッグ中のとき
a あらゆる場所
指定可能なマウスカーソルの形は以下の通りである。
avail 名前 外見
w x arrow 普通のマウスカーソル
w x blank カーソルなし (注意して使うこと!)
w x beam I 状の縦棒
w x updown 上下のサイズ変更矢印
w x leftright 左右のサイズ変更矢印
w x busy システムの「待ち」カーソル
w x no システムの「入力不可」カーソル
x udsizing 上下のサイズ変更を示す
x lrsizing 左右のサイズ変更を示す
x crosshair 大きくて細い +
x hand1 黒い手
x hand2 白い手
x pencil 文字を書くときの、あの鉛筆
x question 大きな ?
x rightup-arrow 右上向き矢印
w x up-arrow 上向き矢印
x <number> 任意の X11 のカーソルナンバー
(X11/cursorfont.h を参照)
上の "avail" という項目は、'w' ならばそのマウスカーソルをWin32で利用で
き、'x' ならばX11で利用できることを表す。
指定されなかったモードや、利用不可能なカーソルを指定されたモードでは、
通常のマウスカーソルを使う。
例:
:set mouseshape=s:udsizing,m:no
とすると、マウスカーソルはステータス行の上ではサイズ変更を表す形になり、「続けるには」プロンプトが表示されているときには入力不可を表す (この状
態ではマウスクリックに効果がないので)。
'mousetime' 'mouset'
'mousetime' 'mouset' 数値 (既定では 500)
グローバル
GUI版, Win32とUnixのxtermでのみ有効。ダブルクリックなどとして認識され
るクリックとクリックの間の時間を、ミリ秒単位で設定する。
'mzquantum' 'mzq'
'mzquantum' 'mzq' 数値 (既定では 100)
グローバル
{+mzscheme 機能付きでコンパイルされたときのみ有効}
MzScheme のスレッドを切り替える間隔(ミリ秒)。
負または0にするとスレッドのスケジューリングを行わなくなる。
NOTE: このオプションは 'compatible' がオフになるとVimの既定値に設定さ
れるので注意。
'mzschemedll'
'mzschemedll' 文字列 (既定値はビルドに依存)
グローバル
{+mzscheme/dyn 機能付きでコンパイルされたときのみ有
効}
MzScheme 共有ライブラリの名前を指定する。既定値はコンパイル時に指定さ
れる DYNAMIC_MZSCH_DLL である。
環境変数は展開される :set_env。
値は vimrc スクリプト内、もしくはもっと早い段階で設定されるべきであ
る。起動時の、load-plugins ステップ前。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'mzschemegcdll'
'mzschemegcdll' 文字列 (既定値はビルドに依存)
グローバル
{+mzscheme/dyn 機能付きでコンパイルされたときのみ有
効}
MzScheme 共有ライブラリの名前を指定する。既定値はコンパイル時に指定さ
れる DYNAMIC_MZGC_DLL である。
この値は、'mzschemedll' が GC コードを含むのであれば、それと同じにする
ことができる。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'nrformats' 'nf'
'nrformats' 'nf' 文字列 (default "bin,octal,hex",
defaults.vim 内で "bin,hex" に設定される)
バッファについてローカル
テキスト内の数をコマンド CTRL-A や CTRL-X で増減させるとき、Vimに何を
数として認識させるかを設定する。これらのコマンドの詳しい情報については
CTRL-A を参照。
alpha これが含まれると、単一のアルファベットも増減操作を受ける。これ
は a), b) 等の、文字を使ったリストに対して便利である。
octal-nrformats
octal これが含まれると、0 で始まる数は8進数として認識される。例:
"007" の上で CTRL-A を使うと "010" となる。
hex これが含まれると、"0x" や "0X" で始まる数は16進数として認識さ
れる。例: "0x100" の上で CTRL-X を使うと "0x0ff" となる。
bin これが含まれている場合には、"0b" か "0B" で始まる数値は2進数で
あるとみなす。例えば "0b1000" の上で CTRL-X を押すと1減算され、
結果 "0b0111" になる。
unsigned これが含まれている場合には、数字は符号無しであるとして扱わ
れる。結果として、先頭のダッシュもしくは負記号は数字の一部とし
ては扱われない。例えば:
CTRL-X を "9-2020" の "2020" 上で使った結果は "9-2019"
("unsigned" なしだとこれは "9-2021" になる)。
CTRL-A を "9-2020" の "2020" 上で使った結果は "9-2021"
("unsigned" なしだとこれは "9-2019" になる)。
CTRL-X を "0" もしくは CTRL-A を "18446744073709551615"
(2^64 - 1) 上で使っても効果はなく、オーバーフローが防がれ
る。
blank 含まれている場合は、先行する空白に基づいて数値を符号付きまたは
符号なしとして扱う。先頭にダッシュがある数値の直前に空白以外の
文字 (つまり、タブまたは " " ではない文字) がある場合、負の符
号は数値の一部としてはみなされない。例:
"Carbon-14" の "14" で CTRL-A を使用すると、"Carbon-15"
になる ("blank" がなければ "Carbon-13" になる)。
"Carbon -8" の "8" で CTRL-X を使用すると、"Carbon -9" に
なる (-8 の前に空白があるため。"unsigned" が設定されている
場合は、"Carbon -7" になる)。
この形式が含まれている場合、"unsigned" が設定されているかのよ
うにオーバーフローは防がれる。この形式と "unsigned" の両方が含
まれている場合、"unsigned" が優先される。
1 から 9 の数字で始まる数は、常に10進数として認識される。8進数または16
進数として認識されない数も10進数として認識される。
'number' 'nu' 'nonumber' 'nonu'
'number' 'nu' 切替 (既定ではオフ)
ウィンドウについてローカル
毎行の前に行番号を表示する。オプション 'cpoptions' にフラグ 'n' が含ま
れていないときは、折り返された行の先頭は行番号の表示される桁に入り込ま
ない ('compatible' がオフのときはこれが既定である)。
オプション 'numberwidth' で行番号の幅を設定することができる。
折り返された行が長すぎて {訳注: 行の途中の部分だけで画面一杯になってし
まい} 行の本当の先頭の文字が表示されていないときは、文字 '-' が行番号
の前に表示される。
ハイライトについては hl-LineNr と hl-CursorLineNr、そして
:sign-define の "numhl" 引数の箇所を参照。
number_relativenumber
'relativenumber' オプションは表示される番号をカーソルからの相対にする。
'number' と共にこれら4つの組み合わせがある。 (カーソルは3行目):
'nonu' 'nu' 'nonu' 'nu'
'nornu' 'nornu' 'rnu' 'rnu'
|apple | 1 apple | 2 apple | 2 apple
|pear | 2 pear | 1 pear | 1 pear
|nobody | 3 nobody | 0 nobody |3 nobody
|there | 4 there | 1 there | 1 there
'numberwidth' 'nuw'
'numberwidth' 'nuw' 数値 (Vim の既定値: 4 Vi の既定値: 8)
ウィンドウについてローカル
{+linebreak 機能付きでコンパイルされたときのみ利用可
能}
行番号を表示するのに使われる桁数の最小値。'number' か 'relativenumber'
がオンのときか行番号付きで印刷するときのみ意味がある。常に番号とテキス
トの間にスペースが1つ置かれるので、番号そのものに割かれる桁数はこれよ
り1文字少なくなる。
この値は最小の幅である。'number' がオンのときにはバッファの行数、
'relativenumber' がオンのときにはウィンドウの行数を、それぞれ表示する
のに足りないときは設定されたよりも広い幅が使われる。つまり、Vim の既定
値の4だと、999行目までの幅が割り当てられることになる。バッファが1000行
以上になると5桁が割り当てられるようになる。
最小値は1。最大値は20。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'omnifunc' 'ofu'
'omnifunc' 'ofu' 文字列 (既定では: 空)
バッファについてローカル
{+eval 機能付きでコンパイルされたときのみ利用可能}
このオプションは挿入モードにおける CTRL-X CTRL-O でのオムニ補完で使わ
れる関数を指定する。i_CTRL-X_CTRL-O
その関数がどのように起動され、何を返すべきかについての説明は
complete-functions を参照。値として関数名、lambda、Funcref が使
える。詳細は option-value-function を参照。
このオプションは普通、ファイルタイププラグインによって設定される。
:filetype-plugin-on
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'opendevice' 'odev' 'noopendevice' 'noodev'
'opendevice' 'odev' 切替 (既定ではオフ)
グローバル
{VimのMS-Windows版でのみ有効} E796
デバイスからの読み書きを有効にする。これを有効にすると、実際には入出力
をできないデバイスをオープンしてしまうと、Vim は動作を停止してしまう。
そのため既定ではオフになっている。
MS-Windowsで "aux.h"、"lpt1.txt" などを編集するとデバイスを編集中にな
ることに注意。
'operatorfunc' 'opfunc'
'operatorfunc' 'opfunc' 文字列 (既定では: 空)
グローバル
このオプションはオペレータ g@ で呼び出される関数を指定する。
より詳しい情報と例については :map-operator を参照。値として関数名、
lambda、Funcref が使える。詳細は option-value-function を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'osfiletype' 'oft'
'osfiletype' 'oft' 文字列 (既定では: "")
バッファについてローカル
このオプションは RISC OS でサポートされていたが、RISC OS サポートは削
除された。
'packpath' 'pp'
'packpath' 'pp' 文字列 (既定では: 'runtimepath' を参照)
パッケージを見つけるために使われるディレクトリ。 packages を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'paragraphs' 'para'
'paragraphs' 'para' 文字列 (既定では "IPLPPPQPP TPHPLIPpLpItpplpipbp")
グローバル
Nroff {訳注: UNIXで使われる画面整形システム} で使われる、段落を分ける
ためのマクロを指定する。値は2文字の組である (object-motions を参照)。
'paste' 'nopaste'
'paste' 切替 (既定ではオフ)
グローバル
オンにするとVimはPasteモードに移行する。これはテキストを別のウィンドウ
から切り取ったりコピーして、Vim内に貼り付けたいときに便利であり、予想
しない作用を避けることができる。
このオプションはVimをターミナルで使っているときに便利である。ターミナ
ルでは打ち込まれたテキストと貼り付けられたテキストの区別がつかないから
だ。GUI版のVimでは貼り付け時にすべき動作を知っているので、'paste' がオ
フでも大抵うまくいく。Vimがマウスクリックを扱えるようなターミナルでも
同様にうまくいく。
GUI を開始するとこのオプションはオフになる。そのため、.vimrc 内でこの
オプションをオンにすると、それはターミナル内では働くが、GUI ではオフに
なる。GUI 版で 'paste' をオンにすると次のような副作用がある: 例.
「ペースト」ツールバーボタンが挿入モードで動作しなくなる。このボタンは
マッピングを使っているためである。
'paste' がオンのときは、以下のように設定が変わる。
- 挿入モードとコマンドラインモードでのマッピングが無効になる
- 略語展開が無効になる
- 'autoindent' がオフになる
- 'expandtab' がオフになる
- 'hkmap' がオフになる
- 'revins' がオフになる
- 'ruler' がオフになる
- 'showmatch' がオフになる
- 'smarttab' がオフになる
- 'softtabstop' が 0 になる
- 'textwidth' が 0 になる
- 'wrapmargin' が 0 になる
- 'varsofttabstop' が空になる
以下のオプションの値に変化はないが、働きは無効になる。
- 'cindent'
- 'formatoptions' が空のときのような動作になる
- 'indentexpr'
- 'lisp'
- 'smartindent'
NOTE: 'paste' がオンのときに別のファイルの編集を始めると、モードライン
や autocommand によって設定が再び変わり、貼り付け時に問題が起きること
があるので注意。そのときは 'paste' を再びオンにするとよいだろう。
'paste' をオフにすると、上記のオプションの設定は 'paste' がオンになっ
た時点の前の状態に復元される。
'paste' をオンにする前にオフにしても何の効果もない。
'paste' がオンの間はマッピングが無効になるので、どれかのキーで 'paste'
を切り替えるには 'pastetoggle' を使う必要がある。
'pastetoggle' 'pt'
'pastetoggle' 'pt' 文字列 (既定では "")
グローバル
空でないとき、オプション 'paste' を切り替えるキー列を指定する。これは
以下のようなマッピングの設定に似ている。
:map {keys} :set invpaste<CR>
ここで {keys} は 'pastetoggle' の値が当てはまる。違うのは、こちらは 'paste' がオンでも有効だという点だ。
'pastetoggle' は挿入モードとノーマルモードで有効だが、コマンドライン
モードでは無効である。
マッピングが最初に調べられるので、'pastetoggle' を上書きできる。しかし
'paste' がオンならば挿入モードでマッピングは無視されるので、以下のよう
な設定が可能である。
:map <F10> :set paste<CR>
:map <F11> :set nopaste<CR>
:imap <F10> <C-O>:set paste<CR>
:imap <F11> <nop>
:set pastetoggle=<F11>
こうすると <F10> でPasteモードが始まり、<F11> でPasteモードが終わる。:map <F11> :set nopaste<CR>
:imap <F10> <C-O>:set paste<CR>
:imap <F11> <nop>
:set pastetoggle=<F11>
Note Pasteモードで <F10> を入力すると "<F10>" が挿入されるので注意。こ
れは、Pasteモードでは 'pastetoggle' で指定されたキー列以外は全てそのま
ま挿入されるからである。
このオプションの値が複数バイトからなる場合、'ttimeoutlen' が適用される。
'pex' 'patchexpr'
'patchexpr' 'pex' 文字列 (既定では "")
グローバル
{+diff 機能付きでコンパイルされたときのみ有効}
ファイルにパッチを適用し、ファイルの新しいバージョンを生成するために使
われる式。diff-patchexpr を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'patchmode' 'pm' E205 E206
'patchmode' 'pm' 文字列 (既定では "")
グローバル
値が空でないとき、ファイルの最も古いバージョンが保管されるようになる。
ソース配布物内のファイルに変更を加えたとき、元のバージョンを取っておき
たいならこれを使う。最初にファイルが書き込まれたときのみ、元のファイル
のコピーが作られる。コピーのファイル名は、元のファイル名の後に
'patchmode' の値を付け加えたものである。このオプションの値はドットで始
めるようにすべきである。".orig" や ".org" 等を使うこと。この機能を使う
には、'backupdir' が空であってはならない (詳細: 変更後のファイルの書き
込みが成功してから、バックアップファイルがオリジナルをコピーしたファイ
ルにリネームされるため、バックアップファイルを生成できなければならな
い)。バックアップすべきファイルがないときは、空ファイルが作られる。
'backupskip' がファイル名にマッチしたときは、元のファイルは保管されな
い。
圧縮ファイルに 'patchmode' を使うと、ファイル名末尾に拡張子が付けられ
るので (例えば "file.gz.orig")、その結果できたファイルは必ずしも圧縮ファ
イルとは認識されなくなってしまう。
通常のファイル名文字だけが使える。"/\*?[|<>" は不正である。
'path' 'pa' E343 E345 E347 E854
'path' 'pa' 文字列 (Unixでの既定値: ".,/usr/include,,"
他のシステムでの既定値: ".,,")
グローバル/バッファについてローカル global-local
値はディレクトリのリストであり、コマンド gf, [f, ]f, ^Wf, :find,
:sfind, :tabfind 等で、検索されるファイルが相対パス ("/", "./",
"../" で始まらないパス {訳注: MS-Windowsでは "C:/" 等で始まらないパス})
で指定されたときに使われるものである。オプション 'path' にディレクトリ
を指定するには、相対パスでも絶対パスでもよい。
- 複数のディレクトリ名はコンマで区切る。
:set path=.,/usr/local/include,/usr/include
- 区切りには空白も使える (Vim version 3.0 との後方互換性のため)。中に空白を含んだディレクトリ名を指定するには、空白の前に余分に '\' {訳注:
option-backslash を参照} を置き、その上で空白と '\' を '\' でエス
ケープすること。
:set path=.,/dir/with\\\ space
{訳注: 結果は ".,/dir/with\ space"}- 中にコンマを含んだディレクトリ名を指定するには、コンマの前に余分に
'\' を置き、その上で '\' を '\' でエスケープすること。
:set path=.,/dir/with\\,comma
{訳注: 結果は ".,/dir/with\,comma"}- カレントファイルに対し相対的にディレクトリを指定するには、こうする。
:set path=.
- カレントディレクトリを指定するには、2個のコンマで空文字列を挟む。 :set path=,,
- ディレクトリ名の末尾は ':' や '/' でもよい。- 環境変数は展開される :set_env。
- 公式プラグイン netrw.vim を使っているときはURLも指定できる。例えば
"http://www.vim.org" を追加すると ":find index.html" とすることがで
きる。
- "*", "**", ";" を使えばディレクトリツリーの上下に向かって検索できる。
詳しくは file-searching を参照。
- 文字 '\' の扱いには注意。オプションの値に '\' を1個含めるには、次の
ように2個打ち込む。
:set path=.,c:\\include
または、次のように代わりに '/' を使う。 :set path=.,c:/include
値に "." を含めるのを忘れないこと!そうしないと、カレントファイルと同じディレクトリ内のファイルさえも発見できない!
値の長さには制限がある。システムごとに異なるが、大抵は256文字か1024文
字等の長さである {訳注: これは半角の場合で、全角では半分}。
'path' でインクルードしたファイルを全て発見できているかどうかについて
は、:checkpath を参照。
リストにディレクトリを追加するときにはコマンド :set+=、リストからディ
レクトリを除くときにはコマンド :set-= を使うのがよい。こうすると将来
のバージョンで異なった既定値が使われるようになったときに、問題が起きる
のを防げる。ただしカレントディレクトリを取り除くには次のようにする。
:set path-=
またカレントディレクトリを追加するには次のようにする。 :set path+=
環境変数を使うには、その中の区切り文字を変える必要があるだろう。次のものは環境変数 $INCL を追加する例だが、その中ではディレクトリ名はセミコ
ロンで区切られているとする。
:let &path = &path .. "," .. substitute($INCL, ';', ',', 'g')
文字 ';' を ':' または指定可能な区切り文字で置換する。 Note この方法は、$INCL がコンマや空白を含んでいるときには使えないので注意。
'perldll'
'perldll' 文字列 (既定値はビルドに依存)
グローバル
{+perl/dyn 機能付きでコンパイルされたときのみ有効}
Perl 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_PERL_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'preserveindent' 'pi' 'nopreserveindent' 'nopi'
'preserveindent' 'pi' 切替 (既定ではオフ)
バッファについてローカル
カレント行のインデントを変更するとき、可能な限りインデントの構造を保つ
ようにする。普通、インデントはまずタブで埋められ、その後に必要なだけス
ペースで埋められる('expandtab'がオンになっているときは違い、スペース
だけで埋められる)。このオプションをオンにすると、インデントの既存の文
字をできるだけそのままにし、追加の際に必要なだけタブやスペースを追加す
るようになる。
'expandtab' は適用されない。タブはタブのままになる。
NOTE: ">>" を複数回使うと、インデントにタブとスペースが混在するように
なる。これは好ましくないかもしれない。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'copyindent' も参照。
空白文字を揃えるには :retab を使う。
'previewheight' 'pvh'
'previewheight' 'pvh' 数値 (既定では 12)
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
プレビューウィンドウの高さの既定値。コマンド :ptag とその関連コマン
ドで使われる。CTRL-W_} にカウントが指定されなかったときもこれが使わ
れる。'previewpopup' が設定されている時は使われない。
'previewpopup' 'pvp'
'previewpopup' 'pvp' 文字列 (既定では空)
グローバル
{+textprop または +quickfix 機能付きでコンパイルさ
れたときのみ有効}
空でない場合、プレビューウィンドウを開くコマンドにポップアップウィンド
ウが使用される。preview-popup を参照。
挿入補完情報には使用されない。使用するには "popup" を 'completeopt' に
追加する。
'previewwindow' 'nopreviewwindow'
'pvw' 'nopvw' E590
'previewwindow' 'pvw' 切替 (既定ではオフ)
ウィンドウについてローカル local-noglobal
{+quickfix 機能付きでコンパイルされたときのみ有効}
このオプションでプレビューウィンドウを決める。ただ1つのウィンドウでの
み、このオプションをオンに設定できる。普通、直接設定されることはないが、
コマンド :ptag, :pedit 等を使うと設定される。
'printdevice' 'pdev'
'printdevice' 'pdev' 文字列 (既定では空)
グローバル
{+printer 機能付きでコンパイルされたときのみ有効}
:hardcopy で使われるプリンタの名前。
pdev-option を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'printencoding' 'penc'
'printencoding' 'penc' 文字列 (いくつかのシステムを除き、既定は空)
グローバル
{+printer と +postscript 機能付きでコンパイルされ
たときのみ利用可能}
印刷の際に使われる文字エンコーディングを指定する。
penc-option を参照。
'printexpr' 'pexpr'
'printexpr' 'pexpr' 文字列 (既定値は、以下を参照)
グローバル
{+printer 機能と +postscript 機能付きでコンパイル
されたときのみ有効}
コマンド ":hardcopy" で生成されるPostScript (PS) ファイルを印刷するた
めに評価される expression を指定する。pexpr-option を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'printfont' 'pfn'
'printfont' 'pfn' 文字列 (既定では "courier")
グローバル
{+printer 機能付きでコンパイルされたときのみ有効}
コマンド :hardcopy の出力に使われるフォント名。pfn-option を参照。
'printheader' 'pheader'
'printheader' 'pheader' 文字列 (既定では "%<%f%h%m%=Page %N")
グローバル
{+printer 機能付きでコンパイルされたときのみ有効}
コマンド :hardcopy の出力のヘッダーの書式を定義する。
pheader-optionを参照。
'printmbcharset' 'pmbcs'
'printmbcharset' 'pmbcs' 文字列 (既定では "")
グローバル
{+printer, +postscript 機能付きでコンパイルされた
ときのみ利用可能}
コマンド :hardcopy の出力の中の CJK 文字に使われる文字セット。
pmbcs-option を参照。
'printmbfont' 'pmbfn'
'printmbfont' 'pmbfn' 文字列 (既定では "")
グローバル
{+printer, +postscript 機能付きでコンパイルされた
ときのみ利用可能}
コマンド :hardcopy の出力の中の CJK 文字に使われるフォント名のリスト。
pmbfn-option を参照。
'printoptions' 'popt'
'printoptions' 'popt' 文字列 (既定では "")
グローバル
{+printer 機能付きでコンパイルされたときのみ有効}
コマンド :hardcopy の出力の書式を設定する項目のリスト。
popt-option を参照。
'prompt' 'noprompt'
'prompt' 切替 (既定ではオン)
グローバル
オンならば、Ex モードでプロンプト ":" が表示される。
'pumheight' 'ph'
'pumheight' 'ph' 数値 (既定では 0)
グローバル
挿入モード補完のポップアップメニューに表示される項目数の最大値。
0 のときはスペースの許す限り多く表示される。
ins-completion-menu
'pumwidth' 'pw'
'pumwidth' 'pw' 数値 (既定では 15)
グローバル
挿入モード補完のポップアップメニューに使用する幅の最小値。
ins-completion-menu.
'pythondll'
'pythondll' 文字列 (既定値はビルドに依存)
グローバル
{+python/dyn 機能付きでコンパイルされたときのみ有効}
Python 2.x 共有ライブラリの名前を指定。既定値はコンパイル時に指定され
た DYNAMIC_PYTHON_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'pythonhome'
'pythonhome' 文字列 (既定では "")
グローバル
{+python/dyn 機能付きでコンパイルされたときのみ有効}
Python 2.x ホームディレクトリの名前を指定。'pythonhome' と環境変数
PYTHONHOME が設定されていない場合、コンパイル時に指定される
PYTHON_HOME が Python 2.x ホームディレクトリとして使われる。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'pythonthreedll'
'pythonthreedll' 文字列 (既定値はビルドに依存)
グローバル
{+python3/dyn 機能付きでコンパイルされたときのみ有効}
Python 3 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_PYTHON3_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'pythonthreehome'
'pythonthreehome' 文字列 (既定では "")
グローバル
{+python3/dyn 機能付きでコンパイルされたときのみ有効}
Python 3 ホームディレクトリの名前を指定。'pythonthreehome' と環境変数
PYTHONHOME が設定されていない場合、コンパイル時に指定される
PYTHON3_HOME が Python 3 ホームディレクトリとして使われる。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'pyxversion' 'pyx'
'pyxversion' 'pyx' 数値 (既定値はビルドに依存)
グローバル
{+python または +python3 機能付きでコンパイルされ
たときのみ有効}
pyx* 関数とコマンドで使用する python のバージョンを指定する
python_x。既定値は以下の通り:
以下でコンパイル 既定値
+python と +python3 0
+python のみ 2
+python3 のみ 3
使用可能な値は 0, 2, 3 のいずれかである。
'pyxversion' が 0 の場合、最初に実行された python2/3 コマンドまたは関
数によって 2 または 3 に設定される。例えば、:py は 2 に設定し、
:py3 は 3 に設定する。:pyx は、Python 3 が利用可能ならば 3 に設定
し、そうでなく Python 2 が利用可能ならば 2 に設定する。
has-pythonx も参照。
もし Vim が +python または +python3 のみでコンパイルされている場
合、'pyxversion' は効果がない。pyx* 関数とコマンドは、常にコンパイルさ
れたバージョンと同じとなる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'quickfixtextfunc' 'qftf'
'quickfixtextfunc' 'qftf' 文字列 (既定では "")
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
このオプションはクイックフィックスもしくはロケーションリストで表示する
テキストを取得するのに利用される関数を指定する。クイックフィックスもし
くはロケーションリストでの情報を各表示項目に付随する情報をカスタマイズ
して表示するときに利用できる。関数の書き方と例については
quickfix-window-function を参照。値として関数名、lambda、Funcref
が使える。詳細は option-value-function を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'quoteescape' 'qe'
'quoteescape' 'qe' 文字列 (既定では "\")
バッファについてローカル
文字列内で引用符をエスケープする文字。テキストオブジェクト a', a", a`
などで使われる a'。
このオプションの文字のどれかが文字列内に現れると、その次の文字はスキッ
プされる。既定値では、テキスト "foo\"bar\\" が1つの文字列とみなされる。
'readonly' 'ro' 'noreadonly' 'noro'
'readonly' 'ro' 切替 (既定ではオフ)
バッファについてローカル local-noglobal
オンのときは、書き込みコマンドは '!' を付けないと使えない。これは間違っ
てファイルを上書きしてしまうことを防ぐためのものである。Vimが読み込み
専用モードで起動された ("vim -R") ときと、実行可能ファイルの名前が
"view" のときにはオンが既定値になる。
'cpoptions' にフラグ 'Z' が入っていない場合、":w!" を使うとカレントバッ
ファの 'readonly' がオフになる。
コマンド ":view" を使って開かれたバッファでは、オプション 'readonly'
はオンになる。
バッファの変更を不許可とするには 'modifiable' を参照。
'redrawtime' 'rdt'
'redrawtime' 'rdt' 数値 (既定では 2000)
グローバル
{+reltime 機能付きでコンパイルされたときのみ有効}
画面を再描画するのにかける時間(ミリ秒)。'hlsearch' がオンのときのパ
ターン検索、:match ハイライトおよびシンタックスハイライトに対して適
用される。
再描画にこれで指定したミリ秒以上の時間がかかるとき、それ以上のマッチは
ハイライトされない。
シンタックスハイライトはウィンドウ毎に適用される。このリミットを超える
と、シンタックスハイライトは CTRL-L が使われるまで無効にされる。
非常に複雑なパターンを検索する際に Vim が応答しなくなるのを避けるため
である。
'regexpengine' 're'
'regexpengine' 're' 数値 (既定では 0)
グローバル
デフォルトで使う正規表現エンジンを選択する。 two-engines
設定できる値:
0 自動選択
1 古いエンジン
2 NFA エンジン
Note: NFA エンジンを使う設定のときは、サポートされていないパターンを使
うと、そのパターンはマッチしない。これは正規表現エンジンのデバッグ用。
自動選択を使用すると既定のエンジンの実行コストが高い場合に Vim の正規
表現エンジンのスイッチが有効となる。例えば NFA エンジンが多くの処理時
間を要する場合など。これは長いテキストで複雑なパターンの組み合わせによ
り Vim がハングしない様にする為の物である。
'relativenumber' 'rnu' 'norelativenumber' 'nornu'
'relativenumber' 'rnu' 切替 (既定ではオフ)
ウィンドウについてローカル
カーソル行からの相対的な行番号を表示する。相対行番号を見れば縦移動のコ
マンドでカウント指定 (count) を使うとき自分で数える必要がないので便
利である。特に他のコマンド (例: y d c < > gg gw =) と組み合わせるとき
など。
'cpoptions' に 'n' オプションが含まれていないときは、折り返された行を
表示するのに行番号の表示領域は使われない (これは 'compatible' がオフの
ときの既定動作である)。
行番号の表示領域の幅は 'numberwidth' オプションで設定できる。
折り返された行がとても長くてその行頭が画面外にあるときは、行番号の前に
'-' 文字が表示される。
行番号の強調表示には hl-LineNr か hl-CursorLineNr が使われる。
カーソル行の前の番号もまた 'number' の値に依存し、この2つのオプション
の全ての組み合わせについては number_relativenumber を参照せよ。
'remap' 'noremap'
'remap' 切替 (既定ではオン)
グローバル
再帰的マッピング {訳注: マッピングに対するマッピング、に対するマッピン
グ...} を有効にする。特定のマッピングに対して再帰的マッピングを禁止し
たいときは、コマンド ":noremap[!]" を使うこと。
NOTE: Vim script のポータビリティのために、このオプションは常に既定値
のオンのままにしておくこと。昔の Vi スクリプトを使うときだけこれをオフ
にすること。
'renderoptions' 'rop'
'renderoptions' 'rop' 文字列 (既定では空)
グローバル
{Vim が MS-Windows で GUI と DIRECTX 付きでコンパイル
されたときのみ有効}
テキストレンダラの選択とそのオプションの設定。オプションはレンダラごと
に異なる。
構文:
set rop=type:{renderer}(,{name}:{value})*
現在、選択できる追加のレンダラは一つだけである。
レンダラ 振る舞い
directx Vim は DirextX (DirectWrite) を使ってテキストを表示する。デ
フォルトの GDI よりも文字をきれいに表示できる。
MS-Windows の Vista 以降のバージョンで 'encoding' が "utf-8"
である必要がある。
オプション:
名前 意味 型 値
gamma gamma float 1.0 - 2.2 (おそらく)
contrast enhancedContrast float (不明)
level clearTypeLevel float (不明)
geom pixelGeometry int 0 - 2 (下記参照)
renmode renderingMode int 0 - 6 (下記参照)
taamode textAntialiasMode int 0 - 3 (下記参照)
scrlines Scroll Lines int (廃止予定)
詳細は次の URL を参照 (scrlines を除く):
https://msdn.microsoft.com/en-us/library/dd368190.aspx
geom: デバイスピクセルの内部構造。
0 - DWRITE_PIXEL_GEOMETRY_FLAT
1 - DWRITE_PIXEL_GEOMETRY_RGB
2 - DWRITE_PIXEL_GEOMETRY_BGR
詳細は次の URL を参照:
https://msdn.microsoft.com/en-us/library/dd368114.aspx
renmode: 文字レンダリングの方法。
0 - DWRITE_RENDERING_MODE_DEFAULT
1 - DWRITE_RENDERING_MODE_ALIASED
2 - DWRITE_RENDERING_MODE_GDI_CLASSIC
3 - DWRITE_RENDERING_MODE_GDI_NATURAL
4 - DWRITE_RENDERING_MODE_NATURAL
5 - DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC
6 - DWRITE_RENDERING_MODE_OUTLINE
詳細は次の URL を参照:
https://msdn.microsoft.com/en-us/library/dd368118.aspx
taamode: テキスト描画に使われるアンチエイリアスモード。
0 - D2D1_TEXT_ANTIALIAS_MODE_DEFAULT
1 - D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE
2 - D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE
3 - D2D1_TEXT_ANTIALIAS_MODE_ALIASED
詳細は次の URL を参照:
https://msdn.microsoft.com/en-us/library/dd368170.aspx
scrlines:
これはスクロールの振る舞いを最適化するのに使用されていたが、現
在では廃止予定である。指定されていた場合、単に無視される。
例:
set encoding=utf-8
set gfn=Ricty_Diminished:h12
set rop=type:directx
set gfn=Ricty_Diminished:h12
set rop=type:directx
'guifont' にラスターフォント (Courier、Terminal、FixedSysなど
拡張子に ".fon" が付いているもの) が選択されているときは、自動
的に GDI による描画に切り替わる。
NOTE: 一部のフォントとオプションの組み合わせによってはグリフが
描画されない場合がある。
- 'renmode:5' と 'renmode:6' は一部の特製フォント (ビットマッ
プしか含まない TrueType フォントなど) に対して動作しない。
- 'taamode:3' は一部のベクターフォントに対して動作しない。
NOTE: Windows 8.1 またはそれ以降では、このオプションを使うこと
で、色付き絵文字を表示することができる。ただし、色付き絵文字を
表示するためにはいくつかの条件がある。
- 選択したフォントが色無しの絵文字を含んでいる場合は、それが
使われる。
- 選択したフォントが絵文字を含んでいない場合、システムが代替
フォントを選択する。Windows 10 では "Segoe UI Emoji" が使
われる。
- この代替フォントが固定幅のグリフを持っていない場合、絵文字
は文字の描画幅を超えて描画されるかもしれない。
他のレンダタイプは現在のところサポートされていない。
'report'
'report' 数値 (既定では 2)
グローバル
変更された行の数の報告が出る最小値。変更された行の数がオプション
'report' より大きければ、ほとんどの ":" によるコマンドでメッセージが表
示される。必ず報告してほしいなら 'report' を 0 にすること。
コマンド ":substitute" では、基準は変更された行数ではなく、置換を行っ
た回数になる。
'restorescreen' 'rs' 'norestorescreen' 'nors'
'restorescreen' 'rs' 切替 (既定ではオン)
グローバル
{VimのMS-Windowsのコンソール版}
オンのとき、Vimを終了した後にコンソール画面の内容が復元される。外部コ
マンドを実行するときも同様である。
Windows版以外のVimでは: ファイル .vimrc で、オプション 't_ti' と
't_te' を設定することで実現できる。画面の復元を無効にするには次のよう
にする。
set t_ti= t_te=
復元を有効にするには次のようにする (xterm用の設定)。 set t_ti=^[7^[[r^[[?47h t_te=^[[?47l^[8
(ここで ^[ は <Esc> であり、入力するには CTRL-V <Esc> と打ち込む)'revins' 'ri' 'norevins' 'nori'
'revins' 'ri' 切替 (既定ではオフ)
グローバル
{+rightleft 機能付きでコンパイルされたときのみ有効}
挿入モードでの文字の挿入が通常と逆向きになる。"typing backwards" を参
照 ins-reverse。このオプションは、オプション 'allowrevins' がオンな
らば挿入モードでコマンド CTRL-_ を使うことで切り替えられる。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
'rightleft' 'rl' 'norightleft' 'norl'
'rightleft' 'rl' 切替 (既定ではオフ)
ウィンドウについてローカル
{+rightleft 機能付きでコンパイルされたときのみ有効}
オンのとき、画面表示の方向が右から左になる。つまり、ファイルに保存され
ている文字は右から左の方向へ表示される。このオプションを使うと、ヘブラ
イ語やアラビア語のような右から左に向かって書かれる言語によるファイルを
編集できる。このオプションはウィンドウごとに設定可能なので、ヘブライ語
と英語のファイルを同時に編集したり、同一のファイルを2通りに表示するこ
とができる (これは右から左のテキストと左から右のテキストが混在している
ファイルを編集するときに便利である。両方を異なるウィンドウで適切に表示
することができる)。rileft.txt を参照。
'rightleftcmd' 'rlc'
'rightleftcmd' 'rlc' 文字列 (既定では "search")
ウィンドウについてローカル
{+rightleft 機能付きでコンパイルされたときのみ利用可
能}
左←右書きモードで動作するコマンドを指定する:
search コマンド "/" と "?"
これはヘブライ語、アラビア語、ペルシア語などの言語で便利である。
オプション 'rightleft' を設定しないと 'rightleftcmd' は効果がない。
'rubydll'
'rubydll' 文字列 (既定値はビルドに依存)
グローバル
{+ruby/dyn 機能付きでコンパイルされたときのみ有効}
Ruby 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_RUBY_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'ruler' 'ru' 'noruler' 'noru'
'ruler' 'ru' 切替 (既定ではオフ, defaults.vim 内で
オンに設定される)
グローバル
カーソルが何行目の何列目に置かれているかを表示する {訳注: これをルー
ラーと呼ぶ}。行数と列数はコンマで区切られる。幅に余裕があるときは、表
示されているテキストの、ファイル内での相対位置が右端に表示される。
先頭 ファイル先頭の行が表示されているとき
末尾 ファイル末尾の行が表示されているとき
全て ファイル先頭と末尾の行の両方が表示されているとき
45% ファイル内での相対位置
オプション 'rulerformat' が設定されているときは、それによってルーラー
の内容が指定される。ルーラーはウィンドウごとに表示される。ウィンドウに
ステータス行が表示されていれば、ルーラーもそこに表示される。そうでなけ
れば画面 の末尾の行に表示される。ステータス行の内容が 'statusline' で
指定されているときは (つまりその値が空でないときは)、'statusline' が
'ruler' や 'rulerformat' より優先される。
表示された文字の数がテキスト上でのバイト数と違うときは (例えば、タブ文
字やマルチバイト文字があるとき)、テキスト上の列数 (バイト数) と画面上
の列数が、ダッシュで区切られて両方表示される。
空行では "0-1" と表示される。
空のバッファでは行数も0になり、"0,0-1" と表示される。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
ルーラーを常に表示したくはないが、テキスト内のどこにいるのか知りたいと
きは、コマンド "g CTRL-G" を使うこと g_CTRL-G。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'rulerformat' 'ruf'
'rulerformat' 'ruf' 文字列 (既定では空)
グローバル
{+statusline 機能付きでコンパイルされたときのみ有効}
値が空でないときは、オプション 'ruler' によって表示されるルーラーの内
容を指定する。
このオプションの書式は 'statusline' のものと同様である。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
ルーラーの幅は既定では17文字である。幅を15文字にするには、値の先頭に
"%15(" を置き、末尾に "%)" を置くこと。例:
:set rulerformat=%15(%c%V\ %p%%%)
'runtimepath' 'rtp' vimfiles
'runtimepath' 'rtp' 文字列 (既定値:
Unix: "$HOME/.vim または
$XDG_CONFIG_HOME/vim,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
$HOME/.vim/after"
Amiga: "home:vimfiles,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
home:vimfiles/after"
MS-Windows: "$HOME/vimfiles,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
$HOME/vimfiles/after"
Haiku: "$BE_USER_SETTINGS/vim,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
$BE_USER_SETTINGS/vim/after"
VMS: "sys$login:vimfiles,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
sys$login:vimfiles/after")
グローバル
以下のランタイムファイルが検索されるディレクトリのリスト。
filetype.vim ファイル名によるファイルタイプの決定 new-filetype
scripts.vim ファイルの内容によるファイルタイプの決定
new-filetype-scripts
autoload/ 自動的に読み込まれるスクリプト autoload-functions
colors/ 色テーマ定義ファイル :colorscheme
compiler/ コンパイラ定義ファイル :compiler
doc/ ヘルプドキュメント write-local-help
ftplugin/ ファイルタイププラグイン write-filetype-plugin
import/ :import によって探されるファイル
indent/ インデントスクリプト indent-expression
keymap/ キーマップ定義ファイル mbyte-keymap
lang/ 翻訳版メッセージ :menutrans および multi-lang
menu.vim GUI版メニュー menu.vim
pack/ パッケージ :packadd
plugin/ プラグインスクリプト write-plugin
print/ 印刷用のファイル postscript-print-encoding
spell/ スペルチェック用のファイル spell
syntax/ 文法ファイル mysyntaxfile
tutor/ Vimtutor用ファイル tutor
および、コマンド :runtime で検索される全てのファイル。
$XDG_CONFIG_HOME については、xdg-base-dir を参照。
ほとんどのシステムでの既定値は、以下の5カ所を検索するようになっている。
1. ユーザーの個人的な設定を読み込むため、ユーザーのホームディレクトリ
を検索する。
2. システム管理者による設定を読み込むため、システム共通のVim用ディレク
トリを検索する。
3. Vim付属のファイルを読み込むため、環境変数 $VIMRUNTIME 内を検索する。
after-directory
4. システム管理者が付属ファイルによる設定を上書きしたり、それに追加設
定をしたりできるようにするため、システム共通のVimディレクトリ内のディ
レクトリ "after" を検索する (これは滅多に使われない)。
5. ユーザーが付属ファイルやシステム管理者による設定を上書きしたり、そ
れに追加設定をしたりできるようにするため、ユーザーのホームディレク
トリ内のディレクトリ "after" を検索する。
packages を使用するとさらに多くのエントリが追加される。もしもとても
長くなる場合 :set rtp は省略されるので、全てをみる必要がある場合は
:echo &rtp を使用する。
Note オプション 'path' と違い、ワイルドカードのうち "**" 等は使えない
ことに注意。普通のワイルドカードは使えるが、ランタイムファイルの検索が
目に見えて遅くなることがある。速度を向上させるには、設定する項目の数を
なるべく少なくし、ワイルドカードの使用を避けること。
:runtime を参照。
例:
:set runtimepath=~/vimruntime,/mygroup/vim,$VIMRUNTIME
こうすると、ディレクトリ "~/vimruntime" (ユーザーの個人的Vimランタイムファイルを格納) を最初に検索し、次にディレクトリ "/mygroup/vim" (グルー
プ共通の設定ファイルを格納) を、最後に "$VIMRUNTIME" (付属ランタイム
ファイル) を検索する。
付属ランタイムファイルを使えるようにするため、どこかに必ず環境変数
$VIMRUNTIME を指定するべきだろう。付属ランタイムファイルの代わりに使う
ファイルを置くディレクトリは、環境変数 $VIMRUNTIME の前に指定すればよ
い。付属ランタイムファイルによる設定に追加するためのファイルを置くディ
レクトリは、環境変数 $VIMRUNTIME の後に指定すればよい。
Vim が --clean 付きで開始される場合、ホームディレクトリのエントリは
含まれない。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'scroll' 'scr'
'scroll' 'scr' 数値 (既定では、ウィンドウ高の半分)
ウィンドウについてローカル local-noglobal
コマンド CTRL-U や CTRL-D でスクロールする行数。ウィンドウのサイズが変
わると、ウィンドウの行数の半分に設定される。'scroll' オプションを設定
した後で、status-line か 'tabline' オプションを有効にした場合におき
る。
CTRL-U や CTRL-D を、カウントを指定して使うと、カウントはオプション
'scroll' の値として使われる。":set scroll=0" とすると、値はウィンドウ
高の半分に戻る。
'scrollbind' 'scb' 'noscrollbind' 'noscb'
'scrollbind' 'scb' 切替 (既定ではオフ)
ウィンドウについてローカル
scroll-binding も参照。このオプションが設定されている場合、カレント
ウィンドウをスクロールすると、スクロールバインドされている他のウィンド
ウ (このオプションが設定されているウィンドウ) もスクロールする。このオ
プションは、ファイルの2個のバージョン間の違いを見るのに便利である。
'diff' を参照。
このオプションがどのように解釈されるかを決定するオプションについては、
オプション 'scrollopt' を参照。
ウィンドウを分割して他のファイルを編集すると、ほとんどの場合このオプショ
ンはオフになる。よって ":split | edit file" はウィンドウを2つに分割し、
scroll-binding を設定するが、":split file" はそうならない。
'scrollfocus' 'scf' 'noscrollfocus' 'noscf'
'scrollfocus' 'scf' 切替 (既定ではオフ)
グローバル
{Vim の MS-Windows GUI 版のみで有効}
スクロールホイールが使われてこのオプションがオンのとき、マウスポインタ
の下のウィンドウがスクロールされる。このオプションがオフのとき、現在の
ウィンドウがスクロールされる。
MS-Windows 以外のシステムではこのオプションが常にオンであるかのように
ふるまう。
'scrolljump' 'sj'
'scrolljump' 'sj' 数値 (既定では 1)
グローバル
カーソルが画面外に出たときにスクロールする行数の最小値 (例えばコマンド
"j" 等によって)。スクロールコマンド (例えば CTRL-E, CTRL-D) には使われ
ない。ユーザーのターミナルのスクロールがとても遅いときに便利である。
-1 から -100 までの負の数に設定すると、ウィンドウの高さのパーセンテー
ジとして扱われる。つまり -50 はウィンドウの高さの半分スクロールする。
NOTE: このオプションは、'compatible' がオンになると 1 になるので注意。
'scrolloff' 'so'
'scrolloff' 'so' 数値 (既定では 0、defaults.vim 内で 5 に設定され
る)
グローバル/ウィンドウについてローカル global-local
カーソルの上または下には、最低でもこのオプションに指定した数の行が表示
される。これにより、編集中の箇所の周辺のテキストを見ることができる。と
ても大きい値 (999等) にすると、カーソルの置かれた行は常にウィンドウの
中央に表示される (ファイル先頭または末尾にいるときと、長い行が折り返さ
れているとき以外)。
ローカル値を使用した後は、次の2つのうちいずれかを使用してグローバル値
に戻る:
setlocal scrolloff<
setlocal scrolloff=-1
水平スクロールについてはオプション 'sidescrolloff' を参照。setlocal scrolloff=-1
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
'scrollopt' 'sbo'
'scrollopt' 'sbo' 文字列 (既定では "ver,jump")
グローバル
スクロール同期中ウィンドウ {訳注: オプション 'scrollbind' がオンのウィ
ンドウ} の動作を設定するキーワードの、コンマ区切りのリスト。'sbo' は
ScrollBindOptions の略である。
指定可能なキーワードは以下の通りである。
ver 同期中ウィンドウの垂直スクロールを同期させる
hor 同期中ウィンドウの水平スクロールを同期させる
jump これは垂直スクロールにおいて、2個のウィンドウ間の
offset に適用される。この offset とは同期中ウィンドウ
に表示されているテキストの先頭行のずれのことである。
ウィンドウ内を動き回るときは、別の同期中ウィンドウの表
示区域が、バッファの先頭より前またはバッファの末尾より
後ろに達してしまうかもしれない。それでも offset は変更
されず、カーソルが戻ってきたときは、同期中ウィンドウは
可能ならば求められる位置にスクロールしようとする。
カレントウィンドウを変更したときは、相対 offset を使っ
て2つのことが行われる。
1. 値に "jump" が含まれていないとき、新しくカレントウィ
ンドウになったウィンドウのスクロール位置により相対
offset が調節される。別のウィンドウに戻ったときは、
新しい相対 offset が使われる。
2. 値に "jump" が含まれているとき、同じ相対オフセット
を保つために他のウィンドウもスクロールする。他のウィ
ンドウに戻ったときも、同じ相対 offset を使う。
{訳注: "jump" について。
100行のファイル "short" と200行のファイル "long" をウィンドウ分割で並
べ、1行目を表示させたまま共に 'scrollbind' をオンにする。
1. "long" を開いているウィンドウで150行目に移動すると、"short" に150行
目はないのだから、ウィンドウの同期が崩れる。具体的には、"short" の
方だけ100行目を表示したままになる。しかしそのまま "long" の50行目に
移動すると、何事もなかったかのように "short" のウィンドウも50行目を
表示する。
2. しかし "long" の150 行目に移動した時点でカーソルを "short" のウィン
ドウ (の100行目) に移すと、"jump" によって違いが出る。
上記 1. では「"long" では150行目、"short" では100行目」という状態が新
たな基準となり、"short" のウィンドウで50行目に移ると、"long" のウィン
ドウはとにかく50行バック、というわけで100行目を表示する。2. では「1行
目同士を合わせる」という基準は変わらず、やはり100行目同士を合わせろ、
というわけでウィンドウを移って "short" の100行目に着いた瞬間に "long"
のウィンドウも100行目を表示する。
話を簡単にするために始めは共に1行目を表示しているとしたが、始めがずれ
ているとそれが基準となることに注意。}
scroll-binding も参照。
差分モードでは、たとえ "ver" が含まれていなくても常に垂直スクロール同
期をする。
'sections' 'sect'
'sections' 'sect' 文字列 (既定では "SHNHH HUnhsh")
グローバル
Nroff {訳注: UNIXで使われる画面整形システム} で使われる、章を分けるた
めのマクロを指定する。値は2文字の組である (object-motions を参照)。
既定では、章は nroff マクロの ".SH", ".NH", ".H", ".HU", ".nh" および
".sh" で始まることになる。
'secure' 'nosecure' E523
'secure' 切替 (既定ではオフ)
グローバル
オンのとき、コマンド ":autocmd" やシェルコマンド、書き込みコマンドがカ
レントディレクトリ内のファイル ".vimrc" や ".exrc" では使用できなくな
り、マッピングコマンドも表示されるようになる。問題が起きることはないと
分かっているときか、オプション 'exrc' がオフのときにのみこのオプション
をオフにすること。
Unixでは、このオプションはファイル ".vimrc" または ".exrc" の所有者が
ユーザー自身でないときのみ使われる。これはユーザーが "chown" を使える
システムでは危険である。そのときにはユーザーのファイル ~/.vimrc の末尾
で 'secure' をオンにしておいた方がよい。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'selection' 'sel'
'selection' 'sel' 文字列 (既定では "inclusive")
グローバル
このオプションは、選択時の動作を設定する。これはビジュアルモードと選択
モードでのみ使用される。
設定可能な値は以下の通り。
値 行末の後 末尾に操作
old X O
inclusive O O
exclusive O X
「行末の後」というのは、カーソルを行末より 1 文字後ろに置けることを表
す。
「末尾に操作」というのは、選択領域の末尾の文字が操作を受けることを表
す。例えば、選択領域の削除に "x" が使われたときなどに違いが出る。
"old" を指定して 'virtualedit' でカーソルが行末を超えられるようにした
場合には、改行は依然として含まれない。
"exclusive" に設定していると、'virtualedit' が空のときノーマルモードか
ら選択を開始し、末尾から後方に選択すると行末の文字を含めることができな
くなる。
オプション 'selection' は、コマンド :behave によって設定される。
'selectmode' 'slm'
'selectmode' 'slm' 文字列 (既定では "")
グローバル
値はキーワードのコンマ区切りのリストである。キーワードは領域選択が開始
されたときのうち、どの場合でビジュアルモードでなく選択モードを開始する
かを決定する。
指定可能なキーワードは以下の通りである。
mouse マウス使用時
key シフトキーと特別なキーの同時押しをしたとき
cmd コマンド "v", "V" または CTRL-V の使用時
Select-mode を参照。
オプション 'selectmode' はコマンド :behave で設定される。
'sessionoptions' 'ssop'
'sessionoptions' 'ssop' 文字列 (既定では "blank,buffers,curdir,folds,
help,options,tabpages,winsize,terminal")
グローバル
{+mksession 機能付きでコンパイルされたときのみ有効}
コマンド :mksession の効果を変更する。値はキーワードのコンマ区切りの
リストである。キーワードは、ある項目の保存と復元を有効にする。
キーワード 復元される項目
blank 空のウィンドウ
buffers ウィンドウに表示されたバッファだけでなく、隠れバッファ
と、リストに載っているだけで読み込まれていないバッファ
curdir カレントディレクトリ
folds 手動で作られた折り畳み、折り畳みの開閉の区別、折り畳み
関連のローカルなオプション
globals 大文字で始まり、最低1個の小文字を含む名前のグローバル
変数。文字列型と数値型の変数のみ保存される。
help ヘルプウィンドウ
localoptions ウィンドウまたはバッファに対してローカルなオプションと
マッピング (ローカルなオプションのグローバルな値ではな
い)
options 全てのオプションとマッピング (ローカルなオプションのグ
ローバルな値も)
skiprtp オプションから 'runtimepath' と 'packpath' を除く
resize Vimのウィンドウのサイズ: 'lines' と 'columns' の値
sesdir セッションファイルがおかれているディレクトリが、カレン
トディレクトリになる (ネットワーク越しに、異なったシス
テムからアクセスを受けるプロジェクトでは便利である)
slash ファイル名内の '\' がスラッシュに置換される
tabpages 全タブページ。これが含まれていないと、カレントタブペー
ジのみが復元される。そのため、タブページごとに別々のセッ
ションを保存することができる。
terminal コマンドが復元できる端末ウィンドウを含む
unix WindowsやDOS上でも、Unix形式の end-of-line (1個の
<NL>) を使う
winpos Vimのウィンドウ全体の位置
winsize ウィンドウサイズ
"curdir" と "sesdir" の両方を含めないこと。
"curdir" も "sesdir" も含まれていないときは、ファイル名は絶対パスで保
存される。
"options" を省略した場合、セッション復元後に多くの機能がうまく機能しな
くなる。
"slash" と "unix" は、Windows上でセッションファイルをUnixと共有すると
きに便利である。Unix版のVimはdos形式のスクリプトを読み込めないが、
Windows版のVimはunix形式のスクリプトを読み込めるからだ。
'shell' 'sh' E91
'shell' 'sh' 文字列 (既定では $SHELL または "sh", Win32: "cmd.exe")
グローバル
"!" や ":!" 等のコマンドで使うシェルの名前。この値を変えたときは、以下
のオプションも調べること: 'shelltype', 'shellpipe', 'shellslash',
'shellredir', 'shellquote', 'shellxquote', 'shellcmdflag'
コマンドには引数を与えることができる。例えば "csh -f" である。
値に空白や '\' を含める方法については、option-backslash を参照。環境
変数は展開される :set_env。
制限モード restricted-mode ではシェルコマンドは使えない。このモード
は $SHELL の値が "false" か "nologin" で終わる場合に使われる。
シェルの名前が空白を含むときは、引用符で囲み、そして、空白をエスケープ
する必要がある。引用符付きの例:
:set shell=\"c:\program\ files\unix\sh.exe\"\ -f
Note 引用符にそれぞれ付けられた '\' (コメントの開始を防ぐため) と空白にそれぞれ付けられた '\' (値の終わりと間違えないため) に注意。
Note また "-f" は引用符の中に入っていないことにも注意。それはコマンド
名の一部ではないからである。Vim はパスの区切りに使われている '\' を自
動的に認識する。
エスケープされた空白の例 (Vim は、$SHELL からのオプションを初期化する
場合にこれを行う):
:set shell=/bin/with\\\ space/sh
結果として 'shell' の値は "/bin/with\ space/sh" となり、2 つのバックスラッシュは :set によって消費される。
MS-Windowsでは、実行可能ファイルの名前が ".com" で終わるときは ".com"
まで含めなければならない。つまりシェルを "command.com" や "4dos.com"
に設定すると正しく機能するが、"command" や "4dos" に設定すると、必ずし
も全てのコマンドに対しては動作しなくなる (例えばフィルタコマンド)。
理由は不明だが、"4dos.com" を使ったときはカレントディレクトリが "C:\"
に変更される。これを防ぐには 'shell' を次のようにすること。
:set shell=command.com\ /c\ 4dos
セキュリティ上の理由から、このオプションを modeline または sandbox内で設定することはできない。
'shellcmdflag' 'shcf'
'shellcmdflag' 'shcf' 文字列 (既定では: "-c"
Win32 で 'shell' に "powershell" が含まるとき:
"-Command"、あるいは "sh" が含まれないとき:
"/c")
グローバル
"!" や ":!" 等のコマンドを実行するためにシェルに渡されるフラグ。例えば、
"bash.exe -c ls", "powershell.exe -Command dir" または
"cmd.exe /c dir" である。MS-Windowsでは、ユーザーがこのオプションを設
定する必要がないように、既定値は 'shell' に適した値が設定される。
Unix では一つ以上のフラグを指定できる。空白で区切られた各部は shell
コマンドの引数として渡される。
値に空白や '\' を含める方法については、option-backslash を参照。
MS-Windows については dos-shell と dos-powershell も参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellpipe' 'sp'
'shellpipe' 'sp' 文字列 (既定では ">", ">%s 2>&1", "| tee", "|& tee"
"2>&1| tee" または
"2>&1 | Out-File -Encoding default")
グローバル
{+quickfix 機能付きでコンパイルされたときのみ有効}
コマンド ":make" の出力をエラーファイルに導くために使われる文字列。
:make_makeprgも参照。値に空白や '\' を含める方法については、
option-backslash を参照。
必要であれば、一時ファイルの名前は "%s" で参照できる (値に "%s" が1個
も含まれていなければ、一時ファイル名は自動的に追加される)。
Amigaでの既定値は ">" である。MS-Windowsでの既定値は powershell を使う
なら "2>&1 | Out-File -Encoding default"、そうでない場合は ">%s 2>&1"
である。出力はファイルに直接保存され、スクリーンには表示されない。
Unixでの既定値は "| tee" である。コンパイラからの標準出力がファイルに
保存され、画面にも表示される。初期化の後にオプション 'shell' が "csh"
か "tcsh" だったときは、既定値は "|& tee" である。'shell' が "sh",
"ksh", "mksh", "pdksh", "zsh", "zsh-beta", "bash", "fish", "ash" また
は "dash" のときは、既定値は "2>&1| tee" である。つまり標準エラー出力
も含まれる。'shell' オプションは、使用される前にパスが削除される (例え
ば "/bin/sh" なら "sh" が使われる)。
Unix と MS-Windows で、'shell' オプションが "pwsh" のときデフォルトが
">%s 2>&1" になり、出力が画面には表示されなくなる。
このオプションの初期化は、ファイル ".vimrc" の読み込みと他の初期化の後
に行われる。これは 'shell' がその間に設定されていたときは、'shellpipe'
を自動的に変更するためである。ただし 'shellpipe' がユーザー自らによっ
て設定されていたときは、自動設定は行われない。
'shellpipe' が空のときは、":make" の出力はリダイレクトされない。この設
定は 'makeprg' のプログラムが自分で 'makeef' に書き込んでくれるときに
便利である。パイプ処理はしたくないが 'makeef' を含みたいときには、
'shellpipe' を1個の空白に設定すること。空白の前には ":set sp=\ " のよ
うに '\' を置くことを忘れないこと。
将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代
遅れになるだろう (少なくともUnixでは)。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellquote' 'shq'
'shellquote' 'shq' 文字列 (既定では "")
グローバル
"!" や ":!" 等のコマンドでコマンドをシェルに渡すときに、コマンドを囲む
引用符(の列)。リダイレクトの指示は常に引用符の外側に置かれる。リダイレ
クトの指示を中に含めるには、オプション 'shellxquote' を参照。両方のオ
プションを設定するのは、おそらく良い方法ではない。
既定値は空である。MS-Windows系のシステムの、MKS Korn Shell や bash 等
のサードパーティ製のシェルに対してのみ便利である。それらのシェルでは引
用符を "\"" とするべきである。dos-shell を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellredir' 'srr'
'shellredir' 'srr' 文字列 (既定では ">", ">&", ">%s 2>&1" もしくは
"2>&1 | Out-File -Encoding default")
グローバル
フィルタコマンドの出力を一時ファイルに導くために使われる文字列。:!も
参照。値に空白や '\' を含める方法については、option-backslash を参照。
必要であれば、一時ファイルの名前は "%s" で参照できる (このオプションの
値に "%s" が1個も含まれていなければ、一時ファイル名は自動的に追加され
る)。
既定値は ">" である。Unixでは、初期化の後にオプション 'shell' が "csh"
または "tcsh" だったときは、既定値は ">&" になる。'shell' が "sh",
"ksh", "mksh", "pdksh", "zsh", "zsh-beta", "bash", "fish" または
"pwsh" だったときは、既定値は ">%s 2>&1" になる。つまり標準エラー出力
も含まれる。Win32では、Unixと同様のチェックがなされ、加えて値が "cmd"
であるかどうか調べられる。そのときは既定値は ">%s 2>&1" になり、
"powershell" であるかを調べて、その場合は既定値を
"2>&1 | Out-File -Encoding default" にする(dos-powershell を参照)。
また ".exe" 付きのシェル名も探す。
このオプションの初期化は、ファイル ".vimrc" の読み込みと他の初期化の後
に行われる。これは 'shell' がその間に設定されていたときは、
'shellredir' を自動的に変更するためである。ただし 'shellredir' がユー
ザー自らによって設定されていたときは、自動設定は行われない。
将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代
遅れになるだろう (少なくともUnixでは)。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellslash' 'ssl' 'noshellslash' 'nossl'
'shellslash' 'ssl' 切替 (既定ではオフ)
グローバル
{VimのMS-Windows版でのみ有効}
オンのときは、ファイル名の展開にスラッシュが使われる。これは cmd.exe,
pwsh.exe, powershell.exe の代わりにUnix系のシェルを使うときに便利であ
る。'\' も入力できるが、Vimによってスラッシュに変換される。
Note このオプションをオンにしたりオフにしても、すでにVim内に読み込まれ
たファイル名には影響がないので、完全を期すためにはこのオプションはどの
ファイルを開くのよりも先に設定する必要があることに注意。この点は将来変
更になるかもしれない。
'shellslash' はパスの区切りとして '\' が使われるときだけ働く。これをテ
ストするには次のようにする:
if exists('+shellslash')
'completeslash' も参照。'shelltemp' 'stmp' 'noshelltemp' 'nostmp'
'shelltemp' 'stmp' 切替 (Vi の既定はオフ, Vim の既定はオン)
グローバル
オンのときは、シェルコマンドに一時ファイルを使う。オフのときはパイプを
使う。オフであってもパイプが使えない場合は一時ファイルを使う。
現在のところパイプは Unix と MS-Windows 2K 以降でのみサポートされてい
る。これを確認するには次のようにする:
:if has("filterpipe")
パイプを使うことの利点は、一時ファイルを他人に読み取られないことと、'shell' のプログラムがリダイレクトをサポートしていなくてもよいことであ
る。
一時ファイルを使うことの利点は、ファイルタイプとエンコーディングを判別
できることである。
'shelltemp' がオフのときは自動コマンドイベント FilterReadPre,
FilterReadPost, FilterWritePre, FilterWritePost が発生しない。
system() 関数はこのオプションを参照せず常に一時ファイルを利用する。
NOTE: このオプションは 'compatible' がオフになるとVimの既定値に設定さ
れるので注意。
'shelltype' 'st'
'shelltype' 'st' 数値 (既定では 0)
グローバル
{VimのAmiga版のみ}
Amigaでは、このオプションはシェルを使うコマンドの実行方法に影響する。
0 または 1: 常にシェルを使う
2 または 3: 行のフィルタ処理にのみシェルを使う
4 または 5: コマンド ':sh' にのみシェルを使う
シェルを使わないときは、コマンドは直接実行される。
0 または 2: "シェル名 'shellcmdflag' コマンド" で外部コマンドを実行
1 または 3: "シェル名 コマンド" で外部コマンドを実行
'shellxescape' 'sxe'
'shellxescape' 'sxe' 文字列 (既定では: ""
MS-Windows: "\"&|<>()@^")
グローバル
'shellxquote' が "(" に設定されているとき、このオプションで指定された
文字は '^' 文字でエスケープされる。これによって cmd.exe を使ってほとん
どの外部コマンドを実行できるようにする。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shellxquote' 'sxq'
'shellxquote' 'sxq' 文字列 (既定では "";
Win32 で 'shell' が cmd.exe なら: "("
Win32 で 'shell' が powershell.exeなら: "\""
Win32 で 'shell' に "sh" が含まれるなら: "\""
Unixで system() を使っているなら: "\"")
グローバル
"!" や ":!" 等のコマンドでコマンドをシェルに渡すときに、コマンドを囲む
引用符(の列)。リダイレクトの指示もこの中に含む。リダイレクトの指示を含
めないようにするには、オプション 'shellquote' を参照。両方のオプション
を設定するのは、おそらく良い方法ではない。
値が '(' なら末尾に ')' が追加される。値が '"(' なら ')"' が追加され
る。
値が '(' のときの動作に付いては 'shellxescape' も参照。
このオプションはほとんどのシステムでは初期設定は空になるが、Win32 版で
自動的にコマンドの最初と最後のクォート文字を取り除く cmd.exe,
powershell.exe または pwsh.exe を使う場合や、設定値が "\"" となる必要
のあるMKS Korn Shell や bash などのサードパーティ製のシェルを使う場合
に役立つことが知られている。ユーザーがこのオプションを設定する必要がな
いように、初期設定は 'shell' に適した値が設定される。dos-shell を参
照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'shiftround' 'sr' 'noshiftround' 'nosr'
'shiftround' 'sr' 切替 (既定ではオフ)
グローバル
インデントをオプション 'shiftwidth' の値の倍数に丸める。コマンド ">"
と "<" に適用される。挿入モードでの CTRL-T と CTRL-D では、インデント
は常に 'shiftwidth' の倍数に丸められる (これはVi互換の動作である)。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'shiftwidth' 'sw'
'shiftwidth' 'sw' 数値 (既定では 8)
バッファについてローカル
(自動)インデントの各段階に使われる空白の数。オプション 'cindent', コマ
ンド >>, << 等に使われる。
0 の場合は、'tabstop' の値が使われる。実際に使われる値を取得するには
shiftwidth() 関数を使う。
'shortmess' 'shm'
'shortmess' 'shm' 文字列 (Vimの既定値: "filnxtToOS", Viの既定値: "S",
POSIX の既定値: "AS")
グローバル E1336
このオプションは、コマンド CTRL-G 等によるファイル関連のメッセージで、
「継続」プロンプト hit-enter を避けるのに役立つ。またその他のメッセー
ジを避けるのにも役立つ。
値は以下のフラグのリストである。
フラグ 効果
f "(file 3 of 5)" の代わりに "(3 of 5)" を表示 shm-f
i "[Incomplete last line]" の代わりに "[noeol]" を表示 shm-i
l "999 行, 888 バイト" の代わりに "999L, 888B" を表示 shm-l
m "[Modified]" の代わりに "[+]" を表示 shm-m
n "[New File]" の代わりに "[New]" を表 shm-n
r "[readonly]" の代わりに "[RO]" を表示 shm-r
w 書き込みコマンドには "書込み" の代わりに "[w]" を、 shm-w
コマンド':w >> file' には "追加" の代わりに "[a]" を表示
x "[dos format]" の代わりに "[dos]", "[unix format]" shm-x
の代わりに "[unix]", "[mac format]" の代わりに "[mac]" を表示
a 上記の省略を全て行う shm-a
o ファイルの書き込み時のメッセージを、その後のファイル shm-o
の読み込み時のメッセージで上書きする (":wn" を使うときやオプ
ション 'autowrite' がオンのときに便利である)
O ファイルの読み込み時のメッセージや Quickfix 関係の shm-O
メッセージ (例えば ":cn") がその前のメッセージを必ず上書きする
s "下まで検索したので上に戻ります" と "上まで検索した shm-s
ので下に戻ります" というメッセージを表示しない。検索件数を使用
する場合、件数メッセージの前に "W" が表示されない(下記の
shm-S を参照)
t ファイル間連のメッセージが長すぎてコマンドラインに shm-t
収まらないときは、先頭を切り詰める。先頭には "<" が表示される。
Exモードでは無視される
T その他のメッセージが長すぎてコマンドラインに収まら shm-T
ないときは、中央を切り詰める。中央には "..." が表示される。Ex
モードでは無視される
W ファイルの書き込み時に "書込み" や "[w]" を表示しない shm-W
A スワップファイルがすでにあることが発見されたときに shm-A
"注意" メッセージを表示しない
I Vimの開始時に挨拶メッセージを表示しない :intro shm-I
c ins-completion-menu 関連のメッセージを表示しない。 shm-c
例えば、"-- XXX補完 (YYY)"、"1 番目の該当 (全該当 2 個中)"、
"唯一の該当"、"パターンは見つかりませんでした"、"始めに戻る"、
など
C "scanning tags" など、挿入モードの補完項目のスキャン shm-C
中にメッセージを表示しない
q "記録中 @a" の代わりに "記録中" を表示 shm-q
F コマンドに対する :silent のように、ファイルを編集中 shm-F
にファイル情報を表示しない。note これは autocommand および
'autoread' の再読み込みからのメッセージにも影響する
S 検索時に検索件数メッセージを表示しない。例えば shm-S
"[1/5]"。"S" フラグが指定されない (例えば、検索件数が表示され
る) 場合、"search hit BOTTOM, continuing at TOP" および
"search hit TOP, continuing at BOTTOM" メッセージは、検索件数
統計の前に "W" (覚え方: Wrapped) 文字のみで示される。
{訳注: 以下日本語メッセージの場合:
"[Incomplete last line]" "[最終行が不完全]"
"[Modified]" "[変更あり]"
"[New File]" "[新ファイル]"
"[New]" "[新]"
"[readonly]" "[読込専用]"
"[RO]" "[読専]"
"[dos format]" "[dosフォーマット]"
"[unix format]" "[unixフォーマット]"
"[mac format]" "[macフォーマット]"
}
このオプションはバッファを変更するとき <Enter> を打ち込むのを避ける機
会を提供する。が、表示の余裕がある限り有益なメッセージを表示する。
'shm' が空のときと同じようにメッセージ全体を表示するには、コマンド
":file!" を使うこと。
便利な値の例:
shm= メッセージの省略なし
shm=a メッセージを省略するが内容までは省略しない
shm=at メッセージを省略し、必要があれば内容も切りつめる
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'shortname' 'sn' 'noshortname' 'nosn'
'shortname' 'sn' 切替 (既定ではオフ)
バッファについてローカル
ファイル名が8文字に3文字の拡張子を付けたものであると仮定する。ファイル
名には複数のドット '.' は使えない。オンならば、拡張子 (".~" または
".swp") を付けるときにはファイル名の中のドットは下線 '_' に置き換えら
れる。このオプションは、ファイルをMS-DOS互換のシステム (例えば
messydos や crossdos) 上で編集するときに便利である。
'showbreak' 'sbr' E595
'showbreak' 'sbr' 文字列 (既定では "")
グローバル/ウィンドウについてローカル global-local
{+linebreak 機能付きでコンパイルされたときのみ有効}
折り返された行の先頭に表示する文字列。"> " や "+++ " に設定すると便利
である:
:set showbreak=>\
Note スペースの前にバックスラッシュをつけてエスケープしていることに注意。次のようにするともっと簡単である:
:let &showbreak = '+++ '
<Tab> 文字とコンマ以外の、printable な文字 {訳注: 文書先頭を参照} のみが指定できる (将来のバージョンでは、行末に表示される部分と行頭に表示さ
れる部分の区切りにコンマが使われるかもしれない)。
この文字列は、オプション 'highlight' のフラグ '@' に従って強調表示され
る。
Note 'showbreak' の文字列の次にタブ文字が来たときは、表示方法が異なる
ので注意。
'showbreak' の文字列を行番号の間に表示したいときは、'cpoptions' にフラ
グ "n" を加えること。
ウィンドウローカルの値がグローバルな値を上書きする。もし、グローバルな
値が設定されており、現在のウィンドウでは値を設定したくないときは NONE
を使う:
:setlocal showbreak=NONE
'showcmd' 'sc' 'noshowcmd' 'nosc'
'showcmd' 'sc' 切替 (Vimの既定値: オン、Unixでの既定値: オフ、
Viの既定値: オフ、defaults.vim 内でオンに設定
される)
グローバル
コマンド (の一部) を画面の最下行に表示する。ユーザーのターミナルの表示
が遅いときにはオフにすること。
ビジュアルモードでは、選択領域のサイズが以下のように表示される。
- 1行の中で選択しているときは、文字数を表示。
文字数とバイト数が違う場合はそれも表示される: 例えば "2-6" なら 2 文
字で 6 バイトという意味になる。
- 2行以上にわたって選択しているときは、行数を表示。
- 矩形選択のときは、画面上の文字数、つまり行数×列数を表示。
この情報は、'showcmdloc' オプションを使って別の場所に表示することがで
きる。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'showcmdloc' 'sloc'
'showcmdloc' 'sloc' 文字列 (既定では "last")
グローバル
このオプションを使用すると、(部分的に) 入力されたコマンドを別の場所に
表示できる。可能な値は以下:
last 画面の最終行 (デフォルト)。
statusline カレントウィンドウのステータス行。
tabline 'showtabline' が有効な場合の画面の最初の行。
このオプションを 'statusline' または 'tabline' に設定すると、コマンド
が変更されるたびに、つまりキーが押されるたびにこれらが再描画されること
になる。
'statusline' の %S 項目は、'statusline' または 'tabline' でテキストを
配置するために使用できる。カスタムの 'statusline' または 'tabline' を
使用しないと、都合のいい場所に表示される。
'showfulltag' 'sft' 'noshowfulltag' 'nosft'
'showfulltag' 'sft' 切替 (既定ではオフ)
グローバル
挿入モードでタグファイルから単語補完をするとき (ins-completion を参
照)、タグ名と整理された検索パターン (あれば) の両方をマッチする限り
表示する。そのため、C言語の関数にマッチすれば、どのような引数を必要と
するかのテンプレートを見ることができる (コーディングスタイルが適当なも
のであれば)。
Note: 'completeopt' に "longest" を含めている場合はこれを同時に使うこ
とはできない。検索パターンからの補完がタイプされたテキストにマッチしな
いことがあるからである。
'showmatch' 'sm' 'noshowmatch' 'nosm'
'showmatch' 'sm' 切替 (既定ではオフ)
グローバル
閉じ括弧が入力されたとき、対応する開き括弧にわずかの間ジャンプする。マッ
チした括弧が画面上に見えているときのみジャンプする。マッチを表示する時
間はオプション 'matchtime' で設定できる。
マッチする閉じ括弧がないときは、ビープ音が鳴る (マッチが見えても見えな
くても)。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
'cpoptions' にフラグ 'm' が含まれていないときは、ジャンプ中に文字を入
力するとカーソルがすぐに元の場所に戻る。
マッチの表示時のカーソルの形状や点滅方法については、'guicursor' の
"sm" の項目を参照。
オプション 'matchpairs' によって対応する文字を指定することができる。対
応する括弧を探すときは 'rightleft' と 'revins' が適用される。
カーソル下の括弧に対応する括弧を強調させる方法については matchparen プ
ラグインを参照 pi_paren.txt。
Note: このオプションの省略形式の名前の使用には、保護者への説明が望まれ
るので注意(笑)
'showmode' 'smd' 'noshowmode' 'nosmd'
'showmode' 'smd' 切替 (Vimの既定値: オン、Viの既定値: オフ)
グローバル
挿入モード、置換モードまたはビジュアルモードで最終行にメッセージを表示
する。このメッセージの強調表示の設定には、オプション 'highlight' のフ
ラグ 'M' を使うこと。
XIM が使用可能なときは、メッセージに "XIM" が含まれる。しかしこれは
実際に XIM が起動しているということではない。特に 'imactivatekey' が設
定されていないときは注意。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'showtabline' 'stal'
'showtabline' 'stal' 数値 (既定では 1)
グローバル
このオプションは、いつタブページのラベルを表示するかを指定する。
0: 表示しない
1: 2個以上のタブページがあるときのみ表示
2: 常に表示
これは GUI 版と非 GUI 版両方に適用される。
タブページについて詳しくは tab-page を参照。
'sidescroll' 'ss'
'sidescroll' 'ss' 数値 (既定では 0)
グローバル
水平スクロールの刻み幅。オプション 'wrap' がオフでカーソルが画面外に出
るときのみ使われる。
値が 0 のときはカーソルを画面の中央に置くようにスクロールする。
遅いターミナルを使っているときは、大きい値または 0 に設定すること。速
いターミナルを使っているときは小さい値または 1 に設定すること。コマン
ド "zh" と "zl" には使われない。
'sidescrolloff' 'siso'
'sidescrolloff' 'siso' 数値 (既定では 0)
グローバル/ウィンドウについてローカル global-local
オプション 'wrap' がオフのとき、カーソルの右または左には、最低でもこの
数だけの列が表示される。'sidescroll' を 1 以上に設定しているときにこの
オプションも 1 以上にすると、水平スクロールをしている周辺のテキストが
見えるようになる (行頭の近くにいるとき以外)。とても大きい値 (999等)に
すると、カーソルの置かれた列は常にウィンドウの中央に表示される (行頭の
近くにいるとき以外)。
ローカル値を使用した後は、次の2つのうちいずれかを使用してグローバル値
に戻る:
setlocal sidescrolloff<
setlocal sidescrolloff=-1
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。setlocal sidescrolloff=-1
例: 次の例のように、このオプションを 'sidescroll' と 'listchars' と一
緒に設定し、カーソルを "extends" の文字の上に決して来ないようにし
てみる。
:set nowrap sidescroll=1 listchars=extends:>,precedes:<
:set sidescrolloff=1
:set sidescrolloff=1
'signcolumn' 'scl'
'signcolumn' 'scl' 文字列 (既定では "auto")
ウィンドウについてローカル
{+signs 機能付きでコンパイルされたときのみ有効}
目印桁を表示するかどうかを指定する。有効な値は以下のとおり:
"auto" 表示すべき目印があるときのみ
"no" 常に表示しない
"yes" 常に表示する
"number" 目印を 'number' カラムに表示する。行番号カラムが表示さ
れていないのならば、"auto" のように振る舞う。
'smartcase' 'scs' 'nosmartcase' 'noscs'
'smartcase' 'scs' 切替 (既定ではオフ)
グローバル
検索パターンが大文字を含んでいたらオプション 'ignorecase' を上書きする。
検索パターンがキーボードから打ち込まれたときに 'ignorecase' がオンの場
合にのみ使われる。適用されるコマンドは "/", "?", "n", "N", ":g", ":s"
である。"*", "#", "gd" やタグ検索などには適用されない。"*" や "#" の後
で "/" を使い、検索パターンの履歴を呼び出して <Enter> を打ち込むことで、
'smartcase' の効果を適用することができる。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'smartindent' 'si' 'nosmartindent' 'nosi'
'smartindent' 'si' 切替 (既定ではオフ)
バッファについてローカル
新しい行を作ったときに高度な自動インデント smart autoindenting を行う。
C言語系のプログラミング言語で有効だが、他のプログラミング言語にも使え
る。オプション 'cindent' でも似たことができ、より多くの場面で適切に動
作するが、'cindent' の方がこちらより厳密である。 C-indenting を参照。
'cindent' がオンか 'indentexpr' が設定されているときは 'si' をオンにし
ても効果はない。'indentexpr' を使うとさらに高度な動作が実現できる。
'smartindent' を使うときは、'autoindent' もオンに設定するべきである。
インデントは、以下のときに自動的に挿入される。
- '{' で終わる行で新しい行を作ったとき。
- 'cinwords' 内のキーワードで始まる行の次に新しい行を作ったとき。
- '}' で始まる行の上に新しい行を作ったとき (コマンド "O" のみ)。
新しい行の先頭に '}' を入力すると、そこのインデントは対応する '{' と等
しくなる。
新しく作った行の最初の文字が '#' のとき、その行のインデントは取り除か
れ、'#' は最前列に置かれる。次の行のインデントは '#' の行の前と同じに
なる。こうしてほしくないなら、次のマッピングを使うこと。
":inoremap # X^H#"
ここで ^H は CTRL-V CTRL-H と打ち込むと入力される。
コマンド ">>" を使ったとき、'#' で始まる行は右に移動しない。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
'smarttab' 'sta' 'nosmarttab' 'nosta'
'smarttab' 'sta' 切替 (既定ではオフ)
グローバル
オンのときは、行頭の余白内で <Tab> を打ち込むと、'shiftwidth' の数だけ
空白が挿入される。他の場所では 'tabstop' または 'softtabstop' の数だけ
空白が挿入される。<BS> を使うと行頭の 'shiftwidth' 分のスペースを削除
する。
オフのときは、<Tab> を打ち込むと常に 'tabstop' または 'softtabstop' の
数だけ空白が挿入される。'shiftwidth' はテキストを右左にずらすときのみ
使われるshift-left-right。
挿入される文字 (タブ文字または空白) は 'expandtab' によって変わる。
ins-expandtab も参照。'expandtab' がオフのときは、<Tab> を打ち込むと
空白の数が最小になる {訳注: できる限り空白をタブ文字で置き換える}。
このオプションは 'paste' オプションがオンになった時にはリセットされ、
'paste' オプションがリセットされた際には復元される。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'smoothscroll' 'sms' 'nosmoothscroll' 'nosms'
'smoothscroll' 'sms' 切替 (既定ではオフ)
ウィンドウについてローカル
スクロールはスクリーン行で動作する。'wrap' が設定されており、ウィンド
ウの最初の行が折り返されている場合、その一部がウィンドウの上にあるかの
ように表示されないことがある。"<<<" が最初の行の先頭に表示され、
hl-NonText で強調表示される。
最後の行をできるだけ多く表示するには、'display' オプションに
"lastline" を追加することもできる。
NOTE: 部分的に実装されており、gj および gk ではまだ動作しない。
'softtabstop' 'sts'
'softtabstop' 'sts' 数値 (既定では 0)
バッファについてローカル
編集で <Tab> の幅として使用する空白の数。<Tab> を挿入したり <BS> を
使ったときに適用される。普通に <Tab> を挿入するような使用感でありなが
ら、実際にはスペース文字と <Tab> 文字が混ぜて使用される。これは 'ts'
を標準値の 8 にしたままで、編集作業では <Tab> 幅として他の値を使いたい
ときに便利である。その場合でも "x" 等のコマンドは実際の文字に対して動
作する。
'sts' がゼロならこの機能は無効になる。
'sts' がマイナスなら 'shiftwidth' の値が使われる。
'softtabstop' は、'paste' オプションがオンになった時には0に設定され、
'paste' オプションがリセットされた際には復元される。
ins-expandtab も参照。'expandtab' がオフのときは、<Tab> を打ち込むと
空白の数が最小になる {訳注: できる限り空白をタブ文字で置き換える}。
'cpoptions' にフラグ 'L' を含めると、'list' がオンのとき、タブの扱い方
が変わる。
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
Vim が +vartabs 機能付きでコンパイルされている場合、'varsofttabstop'
が空文字列以外の何かに設定されていると 'softtabstop' の値は無視される。
'spell' 'nospell'
'spell' 切替 (既定ではオフ)
ウィンドウについてローカル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
これがオンのときはスペルチェックが行われる。spell を参照。
その言語は 'spelllang' で指定する。
'spellcapcheck' 'spc'
'spellcapcheck' 'spc' 文字列 (既定では "[.?!]\_[\])'" \t]\+")
バッファについてローカル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
文の末尾を見つけるのに使うパターン。その次の単語が大文字で始まるかどう
かチェックされる。大文字でなければ、その単語が SpellCap hl-SpellCap
で強調される (その単語がスペリングミスともみなされていなければ)。
このチェックを行いたくなければ、このオプションを空にすること。
'spell' がオンのときだけ適用される。
特殊な文字について注意すること。スペースとバックスラッシュを含める方法
については option-backslash を参照。
言語に応じて自動的にこのオプションをオンにする方法については
set-spc-auto を参照。
'spellfile' 'spf'
'spellfile' 'spf' 文字列 (既定では空)
バッファについてローカル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
コマンド zg, zw で単語を追加するための単語リストファイルの名前。こ
のファイル名の末尾は ".{encoding}.add" でなければならない。ここにパス
を含める必要がある。そうしないと、カレントディレクトリにそのファイルが
作られる。
パスには、'isfname'、スペース、コンマ、'@' の文字を含めることができる。
E765
このオプションの値はファイル名のコンマ区切りのリストであってもよい。
コマンド zg と zw に与えるカウントによって、そのリストのどれにアク
セスするかを指定することができる。これによって、個人用の単語リストファ
イルとプロジェクト用の単語リストファイルを使い分けることができる。
このオプションが空なのに単語が追加されたときは、Vim が自動的に値を設定
する: 書き込み可能な最初の 'runtimepath' のディレクトリを使用する。そ
こに "spell" というディレクトリがなければ作成する。ファイル名には
'spelllang' に現れる最初の言語名が使われ、地域名は無視される。
そうして作られる ".spl" ファイルがスペルチェックに作られる。このファイ
ルは 'spelllang' に入っていなくてもよい。
普通は全ての地域に対して1つのファイルが使われるが、望むなら地域名を追
加することもできる。しかしその場合、'spellfile' がそのファイル名に設定
されているときだけ使われる。'spelllang' のエントリに対しては地域名を省
いたファイルだけが使われる。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'spelllang' 'spl'
'spelllang' 'spl' 文字列 (既定では "en")
バッファについてローカル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
コンマ区切りの単語リスト名のリスト。オプション 'spell' がオンのとき、
これらの言語に対してスペルチェックが行われる。例:
set spelllang=en_us,nl,medical
こうすると US 英語、オランダ語、医学用語が認識される。認識されない単語は強調される。
単語リスト名は、英数字、ダッシュ、またはアンダースコアで構成する必要が
ある。コンマやドットを含めてはならない。2文字の言語名と詳細を区切るの
にダッシュを使うことが推奨される。つまり、"en-rare" は頻度の低い(rare)
英語となる。
地域名は最後に書いて、"_xx" という形でなければならない。ここで "xx" は
小文字で2文字の地域名である。複数の地域名を列挙することもできる:
"en_us, en_ca" とすると US 英語とカナダ英語の両方に対応する。しかし
オーストラリア、ニュージーランド、英国に固有の単語には対応しない。
(Note: 現在のところ en_au と en_nz の辞書は en_ca, en_gb そして en_us
のものよりも古い)
"cjk" という名前が含まれる場合は、東アジアの文字はスペルチェックから除
外される。これは、アジアの文字を含むようなテキストを編集する際に便利で
ある。
Note "medical" 辞書は存在せず、これは単に長い名前の例でしかない。
E757
特別な場合として、.spl ファイルの名前をそのまま指定することができる。
その名前の最初の "_xx" は除去され、地域名として使われる (_xx はアン
ダースコア、2文字、そしてその後にアルファベットでないものが続くことを
意味する)。これは主にテスト用のためである。正しいエンコーディングが使
われているかどうか Vim はチェックしないので、ユーザーが確認しなければ
ならない。
'encoding' が設定されると、単語リストは再読み込みされる。そのため、2度
読み込むのを避けるため、'encoding' の後で 'spelllang' を設定するとよい。
関係するスペルファイルがどう探されるかについてはここで説明されている:
spell-load.
プラグイン spellfile.vim が動作しているならば、'runtimepath' に .spl
ファイルが見つからない言語名が指定されたとき、このプラグインによりユー
ザーに対してファイルをダウンロードするかどうか問い合わせが行われる。
このオプションの設定が成功すると、'runtimepath' の "spell/LANG.vim" が
読み込まれる。"LANG" は 'spelllang' の値のASCII文字でも数字でもなく、
ダッシュでもない最初の文字までである。
set-spc-auto を参照。
'spelloptions' 'spo'
'spelloptions' 'spo' 文字列 (既定では "")
バッファについてローカル
{+syntax機能付きでコンパイルされたときのみ有効}
スペルチェックのオプションのコンマ区切りのリスト:
camel 単語がCamelCasedの時、"Cased" は分割された単語とみな
す: 1語の中の後に小文字が続く大文字すべてが新たな単語
の開始を示している。
'spellsuggest' 'sps'
'spellsuggest' 'sps' 文字列 (既定では "best")
グローバル
{+syntax 機能付きでコンパイルされたときのみ利用可能}
スペリング候補の方法を指定する。コマンド z= と関数 spellsuggest()
の両方に適用される。次の要素のコンマ区切りのリストになる:
best 英語にもっともよく対応している内部メソッド。"fast" 方
式と同じように相異点を発見した上で、音の近さによるスコ
ア判定を少し用いて順序を改善する。
double 2つの方法を用い、その結果を混合させる内部メソッド。第
一の方法は "fast" で、第二の方法は候補と修正対象の音が
どれだけ似ているかを計算する。これは言語が sound
folding を明示するときだけ機能する。時間がかかるかもし
れず、必ずしもよい結果を出すとは限らない。
fast 文字の挿入、削除、交換など、単純な相異だけを判定する内
部メソッド。単純なタイプミスに対してよく機能する。
{number} z= でリストされる候補の最大数。spellsuggest() には
適用されない。候補の数は決して 'lines' の値 - 2 を超え
ない。
timeout:{millisec} サジェスト検索の時間を {millisec} ミリ秒に制限す
る。以降の方法に適用される。省略時は5000になる。負数の
ときは制限無しになる。{+reltime 機能付きでコンパイル
されたときのみ有効}
file:{filename} {filename} を読み込む。そのファイルにはスラッシュで
区切られた2つの列が書いていなければならない。第1列に間
違った単語が書かれ、第2列に候補となる正しい単語が書か
れている。
例:
theribal/terrible
内部メソッドでは候補リストの上の方には出てこない、あり
がちなミスのためにこれを使う。スラッシュを含まない行は
無視されるのでコメントとすることができる。
第 2 列の単語は正しいものでない場合は、それは使われな
い。その単語がスペルミスとして扱われている場合は
".add" ファイルにその単語を追加する。
このファイルは全ての言語に対して使われる。
expr:{expr} 式 {expr} を評価する。スペースによるトラブルを避けるた
め、関数を使うこと。引数なしで関数を呼び出すのが最善で
ある。expr-option-function を参照。
v:val が間違ってつづられた単語を保持する。この式を評
価した結果が候補とスコアからなるリストのリストにならな
ければならない。
例:
[['the', 33], ['that', 44]]
'verbose' をオンにして z= を使うと内部メソッドが使う
スコアを見ることができる。スコアは低いほどよい。
一時的に 'spellsuggest' から "expr:" の部分を除くなら
ば spellsuggest() を呼び出してもよい。
オプション 'verbose' が非0になっていない限り、エラーは
警告無しに無視される。
"best", "double", "fast" は、どれか1つだけ指定できる。他のものはどんな
順序で何回指定してもよい。例:
:set sps=file:~/.vim/sugg,best,expr:MySuggest()
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'splitbelow' 'sb' 'nosplitbelow' 'nosb'
'splitbelow' 'sb' 切替 (既定ではオフ)
グローバル
オンのとき、ウィンドウを横分割すると新しいウィンドウはカレントウィンド
ウの下に開かれる :split。
'splitkeep' 'spk'
'splitkeep' 'spk' 文字列 (既定では "cursor")
グローバル
このオプションの値は、水平分割を開いたり閉じたりサイズ変更したりすると
きのスクロール動作を決定する。
可能な値は以下:
cursor 同じ相対カーソル位置を維持する。
screen テキストを同じスクリーン行に維持する。
topline トップラインを同じに維持する。
"screen" と "topline" の値は、必要に応じてカーソル位置が変更される。こ
の場合、ジャンプリストには前のカーソル位置が設定される。"screen" の場
合、'wrap' が有効な場合、テキストは常に同じスクリーン行に維持されるわ
けではない。
'splitright' 'spr' 'nosplitright' 'nospr'
'splitright' 'spr' 切替 (既定ではオフ)
グローバル
オンのとき、ウィンドウを縦分割すると新しいウィンドウはカレントウィンド
ウの右に開かれる :vsplit。
'startofline' 'sol' 'nostartofline' 'nosol'
'startofline' 'sol' 切替 (既定ではオン)
グローバル
オンのときは、以下のコマンドで移動すると、カーソルは行内の最初の非空白
文字に移動する。オフのときは、カーソルは (可能ならば) 同じ列に置かれる。
適用されるコマンド:
- CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", "L", "gg"
- 行単位で行うときの "d", "<<", "==", ">>"
(operator-resulting-pos)
- カウントを指定したときの "%"
- バッファ変更コマンド (CTRL-^, :bnext, :bNext 等)
- 行番号のみの Ex コマンド (例えば ":25" や ":+")。
バッファ変更コマンドの場合は、カーソルはそのバッファが最後に編集された
ときの列に置かれる。
NOTE: このオプションは、'compatible' がオンになるとオンになるので注意。
{訳注: 実際の動作はドキュメントとかなり違う。移動先が1列目の場合と余白
以外の最初の文字の場合が混在している。ただ、オンのときはカーソルが元い
た列を無視して先頭の「方に」移動するのは確か}
'statusline' 'stl' E540 E542
'statusline' 'stl' 文字列 (既定では空)
グローバル/ウィンドウについてローカル global-local
{+statusline 機能付きでコンパイルされたときのみ有効}
値が空でないとき、このオプションはステータス行の表示内容を設定する。
status-line も参照。
値は、普通のテキストに挟まれた関数 printf 形式の項目からなる。項目の形
式は以下の通りである。
%-0{minwid}.{maxwid}{item}
{item} 以外の欄は指定しなくてもよい。パーセント記号そのものを表示する
には "%%" とする。
このオプションの先頭が "%!" である場合は式とみなされ、評価した結果がオ
プションの値となる。例:
:set statusline=%!MyStatusLine()
g:statusline_winid 変数はステータス行が属するウィンドウの window-IDに設定される。
この結果が %{} を含んでいると、それも評価される。
Note "%!" 式は現在のウィンドウとバッファのコンテキストで評価され
る。%{} アイテムは対象のウィンドウのコンテキストで評価される。
オプションを評価している間にエラーが発生すると、それ以降のエラーを避け
るためにオプションに空が設定される。そうしないと画面更新がループに陥っ
てしまう。
結果に印刷不可能な文字が含まれる場合、結果は予測できない。
Note このオプションが設定されているとき (さらにオプション 'laststatus'
が 2 であるとき) は、'ruler' にはコマンド CTRL-G の出力を設定する効
果しかないことに注意。
欄 意味
- その項目を左寄せする。minwid が項目の長さより大きい場合は、
既定では右寄せになる。
0 数値の頭に0を表示する。欄 '-' が優先する。
minwid 項目の長さの最小値。余白の穴埋めは '-' と '0' で設定する。
50以下でなければならない。
maxwid 項目の長さの最大値。文字列の項目の切り詰めでは '<' が左に
表示される。数値の項目は maxwid-2 文字に切り詰められ、それ
に ">数" が続く。ここで "数" は表示されなかった文字数であ
り、指数表記に似ている。
item 以下で説明するアルファベット1文字。
以下は、指定可能なステータス行の item の説明である。"item" の2文字目は
その item の種類を表す。
N 数値
S 文字列
F 以下で説明するフラグ
- 実際に表示されるものではない
item 意味
f S バッファ内のファイルのパス(入力された通り、またはカレントディレ
クトリに対する相対パス)
F S バッファ内のファイルのフルパス。
t S バッファ内のファイルのファイル名 (パスを除く)。
m F 修正フラグ。表示されるのは "[+]"。'modifiable' がオフのときは
"[-]"
M F 修正フラグ。表示されるのは ",+" または ",-"。
r F 読み込み専用フラグ。表示されるのは "[RO]"。
{訳注: 日本語メッセージの場合: "[読専]"}
R F 読み込み専用フラグ。表示されるのは ",RO"。
h F ヘルプバッファフラグ。表示されるのは "[help]"。
{訳注: 日本語メッセージの場合: "[ヘルプ]"}
H F ヘルプバッファフラグ。表示されるのは ",HLP"。
w F プレビューウィンドウフラグ。表示されるのは "[Preview]"。
{訳注: 日本語メッセージの場合: "[プレビュー]"}
W F プレビューウィンドウフラグ。表示されるのは ",PRV"。
y F バッファ内のファイルのタイプ。例えば "[vim]"。'filetype' を参照。
Y F バッファ内のファイルのタイプ。例えば ",VIM"。'filetype' を参照。
q S "[Quickfix List]"、"[Location List]" または空文字。
{訳注: 日本語メッセージの場合:
"[Quickfix List]" "[Quickfixリスト]"
"[Location List]" "[Locationリスト]"
}
k S 他言語用マッピング :lmap が使われているとき、変数
"b:keymap_name" または 'keymap' を "<keymap>" と表示する。
n N バッファ番号。
b N カーソル下の文字の文字コードの10進数表現。
B N 同上、ただし16進数表現。
o N カーソル下の文字がファイル内で何バイト目であるか。先頭では1。
覚え方: ファイル先頭からの隔たり (に1を足したもの)
{+byte_offset 機能付きでコンパイルされたときのみ有効}
O N 同上、ただし16進数表現。
N N 印刷時のページ番号 ('printheader' 内でのみ有効)。
l N 何行目にカーソルがあるか。
L N バッファ内の総行数。
c N 何列目にカーソルがあるか。(バイトインデックス)
v N 画面上の何列目にカーソルがあるか。(列番号)
V N 画面上の何列目にカーソルがあるか。表示形式は -{num}。値が 'c' と
等しければ表示されない。
p N 現在行がファイル内の何%の位置にあるか (CTRL-G と同様)
P S 現在表示されているウィンドウ内のテキストが、ファイル内の何%の位
置にあるか。これは 'ruler' で説明されているものに似ている。翻訳
されていない限り、値は常に3文字である {訳注: 日本語版では全角2文
字になりうる}。
S S 'showcmd' の内容、'showcmdloc' を参照。
a S 既定のタイトルと同様の引数ファイルリストを
"({current} of {max})" と表示する。ファイル引数の数が0または1の
ときは空。
{ NF '%{' と '}' の間の expression を評価し、結果に置き換える。
閉じ括弧 '}' の前には '%' がつかないことに注意。expression は
'}' の文字を含むことができないので、これを回避するには関数呼び出
しを使用すること。下記 stl-%{ を参照。
{% - これは expression の結果を statusline フォーマットの文字列として
再評価する以外は { とほぼ同じ。その結果式の戻り値が % の項目
を含む場合はそれが展開される。
expression は } 文字を含むことができ、expression の終了を意味す
るのは %} である。
例:
func! Stl_filename() abort
return "%t"
endfunc
stl=%{Stl_filename()} 結果は "%t"return "%t"
endfunc
stl=%{%Stl_filename()%} 結果は "現在のファイル名"
%} - {% expression の終了
( - 項目グループの開始。グループ内の項目全てに対する幅と寄せ方の設定
に使える。どこかで %) で閉じられなければならない。
) - 項目グループの終了。欄 width は指定できない。
T N 'tabline' 用: ラベル「タブページ N」の開始。最後のラベルの後に
%T を書くこと。この情報はマウスクリックに使われる。
X N 'tabline' 用: ラベル「タブ N を閉じる」の開始。ラベルの後に %X
を書くこと。例: %3Xclose%X。%999X は「カレントタブを閉じる」を
意味する。この情報はマウスクリックに使われる。
< - 行が長すぎるときに切り詰める位置。既定では先頭。欄 width は指定
できない。
= - 整列セクション間の分離点。各セクションは同数のスペースで区切られ
る。%= が 1 つあると、その後に続くものが右揃えになる。%= が 2 つ
あると中央部分があり、その左右に空白がある。
欄 width は指定できない。
# - ハイライトグループを設定する。この後に名前を書き、その後にまた #
を書く。つまり、%#HLname# と書くと、ハイライトグループ HLname に
なる。カレントウィンドウ以外のステータスラインに対しても同じ強調
が施される。
* - 使われるハイライトグループを User{N} に設定する。ここで {N} は欄
minwid から取られる。例えば %1* と設定する。%* や %0* で通常の強
調表示を復元する。ハイライトグループ User{N} と StatusLine の違
いは非カレントウィンドウのステータス行にはハイライトグループ
StatusLineNC が適用されることである。数 N は 1 以上 9 以下であ
る。hl-User1..9 を参照。
フラグを表示するとき、そのフラグがプレーンテキストの直後にあるな
ら、その先頭にコンマがある場合は削除される。そうすることによって以下の
例のようなフラグの使い方をしたとき、きれいに表示されるようになっている。
あるグループ内の全ての項目が空文字列 (つまり設定されていないフラグ) に
なり、かつそのグループに minwid が指定されていなかったときは、グループ
全体が空になる。これにより、次のようなグループは、フラグがどれも設定さ
れていないときは全く表示されない。
:set statusline=...%(\ [%M%R%H]%)...
気をつけてほしいのは、expression はステータス行が表示されるたびに評価されるということだ。
stl-%{ g:actual_curbuf g:actual_curwin
%{} を評価する際、あるバッファまたはウィンドウのステータス行が描画され
ている最中は、一時的にそのバッファまたはウィンドウがカレントバッファま
たはカレントウィンドウに設定され、そこで expression が評価される。変数
"g:actual_curbuf" は、本当のカレントバッファで関数 bufnr() が返す値
に設定され、"g:actual_curwin" は実際のカレントウィンドウの window-ID
に設定される。これらの値は文字列である。
このオプションがモードラインで設定されたときは、式はサンドボックス
(sandbox) の中で評価される。sandbox-option を参照。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
'statusline' を評価している間にテキストを変更したり他のウィンドウにジャ
ンプすることは許されていない textlock。
ステータス行が望みの時点 (例えば expression 内で使われる変数の設定をし
た後) で更新されていない場合は、:redrawstatus を使用することで強制的
に更新できる。
全て数字で返された結果は、表示用の数値と見なされる。それ以外の結果はフ
ラグ列と解釈され、上記の方法が適用される。
ステータス行で expression を使うときはエラーに気をつけること。Vimの描
画機構が使い物にならなくなるかもしれない!行き詰まってしまったならば、
プロンプトを表示させるために ':' か 'Q' を打ち込む。そしてVimを終了し
たら "vim --clean" として {訳注: エラーを起こす設定を読み込まないよう
にして} ユーザーのファイル .vimrc か何かを編集し、正常に戻す。
例:
'ruler' がオンのときの標準のステータス行に似せる
:set statusline=%<%f\ %h%w%m%r%=%-14.(%l,%c%V%)\ %P
同上、しかしカーソル下の文字の10/16進表現を表示する ("ga" のように) :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
カーソルが置かれているバイト数、カーソル下の文字のコード、修正フラグを赤で表示
:set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'
:hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red
圧縮ファイルが読み込まれたとき、フラグ ,GZ を表示するには次のようにす:hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red
る。まず
:set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h...
として、さらに {訳注: 自動解凍を行う役割の} :autocmd 内で :let b:gzflag = 1
および :unlet b:gzflag
を設定し、最後に次の関数を定義する。 :function VarExists(var, val)
: if exists(a:var) | return a:val | else | return '' | endif
:endfunction
: if exists(a:var) | return a:val | else | return '' | endif
:endfunction
'suffixes' 'su'
'suffixes' 'su' 文字列 (既定では ".bak,~,.o,.h,.info,.swp,.obj")
グローバル
この拡張子を持つファイルは、ワイルドカードに複数のファイルがマッチした
ときの優先度が低くなる。suffixes を参照。拡張子はコンマで区切って指
定する。コンマの後の空白は無視される。またドットは拡張子の始まりと見な
される。ドットやコンマが区切りと見なされないようにするには、前に '\'
を置くこと。値に空白や '\' を含める方法については、option-backslash
を参照。
ファイルを完全に無視するには、オプション 'wildignore' を参照。
リストに拡張子を追加するときにはコマンド :set+=、リストから拡張子を
除くときには :set-= を使うのがよい。こうすると将来のバージョンで異なっ
た既定値が使われるようになったときに、問題が起きるのを防げる。
'suffixesadd' 'sua'
'suffixesadd' 'sua' 文字列 (既定では "")
バッファについてローカル
値は拡張子のコンマ区切りのリスト。その拡張子は "gf", "[I" 等のコマンド
で検索されるファイルのものである。例:
:set suffixesadd=.java
'swapfile' 'swf' 'noswapfile' 'noswf'
'swapfile' 'swf' 切替 (既定ではオン)
バッファについてローカル
バッファでスワップファイルを使用する。このオプションは、特定のバッファ
でスワップファイルを使いたくないときにはオフに設定できる。例えば root
ユーザーさえもアクセスしてはならない機密情報等でオフにする。
注意: テキストは全てメモリ内に格納される。
- この手段は大きいファイルに使わないこと。
- クラッシュからの回復ができなくなる!
スワップファイルが作られるのはオプション 'updatecount' が非0 で、
'swapfile' がオンのときだけである。
'swapfile' がオフになったときは、カレントバッファのスワップファイルは
すぐに削除される。'swapfile' がオンで、'updatecount' が非0 のときは、
スワップファイルはすぐに作られる。
swap-file と 'swapsync' も参照。
スワップファイルを作成せずに新しいバッファを開きたい場合は
:noswapfile 修飾子を使う。
どこにスワップファイルが作成されるかについては、'directory' を参照。
このオプションは、'bufhidden' と 'buftype' と共に、特別な種類のバッファ
を指定するのに使われる。special-buffers を参照。
'swapsync' 'sws'
'swapsync' 'sws' 文字列 (既定では "fsync")
グローバル
値が空でないときは、書き込みの後にディスク上のスワップファイルの内容が
同期される。これにはいくらか時間がかかる。ビジー状態のUnixシステムでは
特にそうだ。
値が空のときは、スワップファイルの一部はメモリ内のままで、ディスクに書
き込まれないかもしれない。システムがクラッシュすると、仕事の成果が余計
ひどく失われるかもしれない。
Unixでは、Vimが求めなくとも時折システムが同期を行うので、これを空にす
ることの不利益は小さい。システムによってはスワップファイルは全く書き込
まれない。Unixシステムでは、値を "sync" にすると既定の関数 fsync() で
はなく関数 sync() を呼び出すが、システムによってはそちらの方がよい。
実ファイルに対してはオプション 'fsync' が適用される。
'switchbuf' 'swb'
'switchbuf' 'swb' 文字列 (既定では "")
グローバル
バッファを切り替えるときの動作を調節する。
主に quickfix コマンド用で、以下で説明するように一部の値は他のコマン
ドにも使用される。
以下の場合に、このオプションがチェックされる
- quickfix コマンド (:cc、:cn、:cp 等) によるエラーへのジャン
プ。
- stagコマンドを使ってタグにジャンプする。
- CTRL-W_f または CTRL-W_F コマンドを使ってファイルを開く。
- バッファ分割コマンド (:sbuffer, :sbnext, :sbrewind 等) を使っ
てバッファにジャンプする。
指定可能なキーワードは以下の通りである (コンマ区切りのリストにする)。
useopen これが含まれていれば、指定されたバッファを含むカレント
タブページの最初に開いているウィンドウにジャンプする
(もし存在すれば)。そうでなければ、他のウィンドウを調べ
ない。
usetab "useopen" と同様だが、他のタブページで開かれているウィ
ンドウも考慮する。
split これが含まれていると、quickfix コマンドでエラーを表
示するときに、バッファを読み込む前にカレントウィンドウ
を分割する。
含まれていないときは、分割はされない。カレントウィンド
ウが使われる (quickfix ウィンドウで使用されたとき: 前
に使われていたウィンドウ、もしくは他のウィンドウがない
場合は分割する)。
vsplit "split" と同様だが、垂直に分割する。
newtab "split" と同様だが、新しいタブページを開く。"split" と
両方指定された場合はこちらが優先される。
uselast これが含まれていると、quickfix コマンドでエラーにジャ
ンプするときに、前に使われたウィンドウにジャンプする。
ウィンドウで 'winfixbuf' が有効になっている場合、'switchbuf' は現在の
ところ分割ウィンドウには適用されない。
'synmaxcol' 'smc'
'synmaxcol' 'smc' 数値 (既定では 3000)
バッファについてローカル
{+syntax機能付きでコンパイルされたときのみ有効}
構文アイテムを検索する桁数の最大値。長い行において、この桁以降のテキス
トは強調されない。また構文の状態がクリアされるため、これ以下の行は正し
く強調されない可能性がある。
これは長い行を持つXMLファイルの描画が非常に遅くなるのを避けるために役
に立つ。
ゼロにするとその制限がなくなる。
'syntax' 'syn'
'syntax' 'syn' 文字列 (既定では "")
バッファについてローカル local-noglobal
{+syntax 機能付きでコンパイルされたときのみ有効}
このオプションが設定されたとき、コマンド ":syntax off" で構文強調表示
が無効にされていない限り、値の名前の構文定義が読み込まれる。
このオプションは、その時点以外では使われている構文定義を常に反映する訳
ではない (常に反映するのは変数 b:current_syntax)。
このオプションは、構文が自動的に認識されないファイルのモードラインで使
うのが最も便利である。例えば、IDLファイルでは次のようにする。
/* vim: set syntax=idl : */
このオプションの値にドットを含めると、ファイルタイプの区切りとなる。
例:
/* vim: set syntax=c.doxygen : */
こうするとまず最初に "c" の構文を使い、次に "doxygen" の構文を使うよう
になる。2番目のファイルタイプは追加として読み込まれるように準備されて
いなければならない。そうでないとスキップされる。ドットは1つ以上現れて
もよい。カレントファイルに対する構文強調表示を無効にするにはこうする。
:set syntax=OFF
オプション 'filetype' に従って、構文強調表示を開始するにはこうする。 :set syntax=ON
'syntax' の設定時に実際起きることは、autocommand のイベント Syntax が、このオプションの値を引数にして発生するということだ。
'cpoptions' のフラグ 's' や 'S' にかかわらず、このオプションの値は別の
バッファにはコピーされない。
英数字、'.'、'-'、'_' のみ使用できる。
'tabclose' 'tcl'
'tabclose' 'tcl' 文字列 (既定では "")
グローバル
このオプションは、タブページを閉じるときの動作を制御する (例:
:tabclose を使用)。空の場合、Vim は次 (右) のタブページに移動する。
可能な値 (コンマ区切りのリスト):
left 含まれている場合、次のタブページではなく前のタブページ
に移動する。
uselast 含まれている場合、可能であれば以前に使用したタブページ
に移動する。このオプションは他のオプションよりも優先さ
れる。
'tabline' 'tal'
'tabline' 'tal' 文字列 (既定では "")
グローバル
このオプションが空でないとき、Vimウィンドウの上にあるタブページ行の表
示内容を指定する。空のときは、既定のタブページ行が使われる。より詳しく
はsetting-tablineを参照。
タブページ行はオプション 'showtabline' で指定されたとき、またGUIのタブ
行がないときだけ表示される。'guioptions' に 'e' が入っていて、GUIがタ
ブ行に対応しているときは代わりに 'guitablabel' が使われる。Note: この
二つのタブページ行はかなり異なる。
このオプションの値は 'statusline' と同じように評価される。tabpagenr(),
tabpagewinnr(), tabpagebuflist()を使えば表示されるテキストを把握す
ることができる。1番目のラベルには "%1T"、2番目のラベルには "%2T" など。
閉じラベルにはアイテム "%X" を使う。
'tabline' で使用されているものを変更しても、タブページ行が更新されるト
リガーとならない場合は、:redrawtabline を使用すること。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
アクティブなタブページは1つだけである。他のタブページは表示されず、そ
の中のウィンドウにジャンプすることはできない。
'tabpagemax' 'tpm'
'tabpagemax' 'tpm' 数値 (既定では 10)
グローバル
コマンドライン引数-pや ":tab all" で開かれるタブページの最大数。
tabpage
'tabstop' 'ts'
'tabstop' 'ts' 数値 (既定では 8)
バッファについてローカル
ファイル内の <Tab> が対応する空白の数。コマンド :retab とオプション
'softtabstop' も参照 {訳注: このオプション説明の最後も参照}。
Note: 'tabstop' を 8 以外の数に設定すると、多くの場合、例えば印刷時に
ユーザーのファイルが間違って表示されうるので注意。
値は0より大きく10000未満である必要がある。
Vimでは、タブの主な使い方には以下の5種類がある。
1. 'tabstop' を常に 8 に保ち、'softtabstop' と 'shiftwidth' を 4 (また
は 3 等の好きな値) に設定し、'expandtab' をオフにする。するとVimは
タブと空白の両方を使うが、<Tab> と <BS> を打ち込むと、タブが 4 (ま
たは 3) 文字ごとに現れているかのように表示される。
これは推奨される方法であり、ファイルは他のツールでも、ターミナルで
一覧表示する場合も同じように見える。
2. 'softtabstop' と 'shiftwidth' を任意に設定し、'expandtab' を使用す
る。この方法では、常にスペースを挿入することになる。'tabstop' を変
更しても書式が崩れることはない (念のため 8 のままにしておく)。ファ
イルは少し大きくなる。
ファイル内にタブが存在しないかどうかを確認する必要がある。最初に
'expandtab' を設定し、%retab! を使用して、'tabstop' の値が正しく
設定されていることを確認することで、これらを取り除くことができる。
3. 'tabstop' と 'shiftwidth' を好きなように設定し、'expandtab' をオン
にする。この方法では常に空白が挿入される。'tabstop' が変更されても、
整形されたテキストはめちゃめちゃにならない。
直前の項目と同様に、ファイル内にタブが存在しないかどうかを確認する
必要がある。
4. 'tabstop' と 'shiftwidth' を好きなように設定し、再びファイルを編集
するときにはモードライン modeline でこれらを設定する。Vim を使用
してファイルを編集する場合にのみ機能し、他のツールは、タブストップ
が 8 スペースに相当すると仮定している。
5. 常に 'tabstop' と 'shiftwidth' を等しく設定し、'expandtab' をオフに
する。すると (1回目のインデントのみだが) どのタブ幅でもうまく働く。
こうするにしても、余白より後の最初の文字より後にタブ文字を挿入する
ときは、空白文字として挿入されるようにするとよいだろう。そうしない
と、'tabstop' が変更されたときに、整形されたコメントの形がおかしく
なる。
{訳注: 'shiftwidth' は自動インデントやコマンド "<<", ">>" でずれる幅。
'softtabstop' は <Tab> や <BS> を打ち込んだときにカーソルが動く幅。
'tabstop' は画面上でタブ文字が占める幅の設定}
Vim が +vartabs 機能付きでコンパイルされている場合、'vartabstop'
が空文字列以外の何かに設定されていると 'tabstop' の値は無視される。
'tagbsearch' 'tbs' 'notagbsearch' 'notbs'
'tagbsearch' 'tbs' 切替 (既定ではオン)
グローバル
タグを検索するとき (例えば :ta コマンド)、Vim は tags ファイル内で二
分探索か線形探索のどちらかを使用する。二分探索はタグの検索が「大幅に」
速くなるが、タグファイルが適切に整列されていないときには線形探索の方が
より多くのタグを発見できる。
Vim は普通はタグファイルが整列されているか、整列されていないことが明示
されているものと想定している。そうなっていない場合は 'tagbsearch' オプ
ションをオフに設定する必要がある。
'tagbsearch' がオンのときは、最初に tags ファイル内で二分探索が使われ
る。特定の状況下では、Vim は特定のファイルに対しては線形探索を使った
り、全てのファイルを線形探索で再試行したりする。'tagbsearch' がオフの
ときは線形探索のみが使われる。
タグファイルの先頭に、それが整列されていないことを示す行があったとき
は、そのファイルでは線形探索が使われる。
!_TAG_FILE_SORTED 0 /some comment/
['0' の前後の余白は、単一の <Tab> でなければならない]二分探索が完了し、'tags' で列挙されたどのファイルからもマッチが見つか
らなかった場合、かつ大文字小文字が無視される場合、もしくはその検索がタ
グ名による検索ではなくパターンによる検索であれば、線形探索を使って検索
が再試行される。
整列されていないタグファイル内のタグや、大文字と小文字の違いのあるマッ
チは、再試行でのみ見つかるだろう。
タグファイルが大文字・小文字を無視して整列されていることを示しているな
ら、'ignorecase' のための線形探索はしなくてもよくなる。それには
"!_TAG_FILE_SORTED" 行の値として '2' を使う。ほとんどの Unix では
"sort" にオプション -f をつけることで大文字・小文字を無視してタグファ
イルを整列することができる。そのコマンドは次のようになる: "sort -f -o
tags tags"。Universal ctags と Exuberant ctags のバージョン 5.x 以降
(少なくとも 5.5 以降) ではオプション --sort=foldcase をつけることでこ
れと同様のことができる。Note: これが機能するために文字は大文字にまとめ
られる。
デフォルトではタグ検索は大文字小文字を区別する。'ignorecase' が設定済
みで 'tagcase' が "followic" もしくは "ignore" に設定されている時は、
大文字小文字の違いが無視される。
'tagcase' が "followscs" で 'smartcase' が設定されている時、もしくは
'tagcase' が "smart" でパターンが小文字でのみ構成されている場合も、同
様に大文字小文字の違いが無視される。
'tagbsearch' がオフの場合、完全なマッチがあるときはタグの検索はより遅
くなるが、完全なマッチがないときは検索はより速くなる。整列されていない
タグファイル内のタグは 'tagbsearch' がオフでないと見つからないかもしれ
ない。
タグファイルが整列されていない、あるいは間違った順に整列されている
(ASCII コード順になっていない) ときは、'tagbsearch' をオフにするべきで
ある。またはタグファイル内に上記の行が含まれていなければならない。
このオプションは、マッチするすべてのタグを検索するようなコマンド (例え
ばコマンドライン補完や ":help") には影響しない。
'tagcase' 'tc'
'tagcase' 'tc' 文字列 (既定では "followic")
グローバル/バッファについてローカル global-local
このオプションはタグファイルを探索する際に大文字小文字をどの様に取り扱
うかを指定する:
followic オプション 'ignorecase' に従う
followscs 'smartcase' 及び 'ignorecase' オプションに従う
ignore 大文字小文字の違いを無視する
match 大文字小文字をマッチする
smart 大文字を使わない限りは、大文字小文字の違いを無視する
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'tagfunc' 'tfu'
'tagfunc' 'tfu' 文字列 (既定では "")
バッファについてローカル
{+eval 機能付きでコンパイルされたときのみ有効}
このオプションは、タグ検索を実行するために使用される関数を指定する。こ
の関数はタグパターンを取得し、一致するタグのリストを返さなければならな
い。tag-function を参照。関数の書き方と例の説明がある。値として関数
名、lambda、Funcref が使える。詳細は option-value-function を参
照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'taglength' 'tl'
'taglength' 'tl' 数値 (既定では 0)
グローバル
非0 のときは、タグ名のうち、前からこの値の文字数までが意味を持つ。
'tagrelative' 'tr' 'notagrelative' 'notr'
'tagrelative' 'tr' 切替 (Vimの既定値: オン、Viの既定値: オフ)
グローバル
オンのとき、タグファイルを別のディレクトリから使うと、そのタグファイル
でのタグ名は、タグファイルのあるディレクトリに対して相対的になる。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'tags' 'tag' E433
'tags' 'tag' 文字列 (既定では "./tags,tags",
+emacs_tags 機能付きでコンパイルされたとき
の既定値: "./tags,./TAGS,tags,TAGS")
グローバル/バッファについてローカル global-local
タグを使うコマンドで必要とするタグファイルの名前の、空白またはコンマ区
切りのリスト。ファイル名に空白やコンマを使うときは、'\' を前に置くこと
(値に空白/コンマや '\' を含める方法については、option-backslash を
参照)。
ファイル名が "./" で始まるときは、'.' はカレントファイルのパスに置き換
えられる。ただしそれはオプション 'cpoptions' にフラグ 'd' が含まれてい
ないときのみである。環境変数は展開される :set_env。tags-option も
参照。
"*" や "**" などのワイルドカードを使い、ディレクトリツリーの下に向かっ
てタグファイルを検索できる。file-searching を参照。例えば、
"/lib/**/tags" なら "/lib" 以下の "tags" という名前がすべて検索され
る。ファイル名自体にはワイルドカードを含めることはできない (そのまま使
われる)。例えば "/lib/**/tags?" なら "tags?" という名前のファイルが検
索される。
関数tagfiles()を使うと実際に使われるファイル名のリストを取得すること
ができる。
Vimが +emacs_tags 機能付きでコンパイルされたときは、Emacs形式のタグ
ファイルも利用できる。形式は自動的に認識される。そのときの既定値は、大
文字と小文字の区別がないシステム (MS-Windows) 以外では
"./tags,./TAGS,tags,TAGS" となる。emacs-tags
リストにファイル名を追加するときにはコマンド :set+=、リストからファ
イル名を除くときにはコマンド :set-= を使うのがよい。こうすると将来の
バージョンで異なった既定値が使われるようになったときに、問題が起きるの
を防げる。
'tagstack' 'tgst' 'notagstack' 'notgst'
'tagstack' 'tgst' 切替 (既定ではオン)
グローバル
オンのときは、タグスタック tagstack が通常通りに使われる。オフのとき
は、引数付きのコマンド ":tag" または ":tselect" は、タグをタグスタック
にプッシュしない。その後に引数無しの ":tag" や、":pop" 等のタグスタッ
クを使うコマンドを使うと、修正されていないタグスタックが使われるが、ア
クティブな項目へのポインタは変更される。
このオプションをオンにするのは、":tag" をマッピング内で使っていて、タ
グスタックを変更すべきでないときに便利である。
'tcldll'
'tcldll' 文字列 (既定値はビルドに依存)
グローバル
{+tcl/dyn 機能付きでコンパイルされたときのみ有効}
Tcl 共有ライブラリの名前を指定。既定値はコンパイル時に指定された
DYNAMIC_TCL_DLL の値。
環境変数は展開される :set_env。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'term' E529 E530 E531
'term' 文字列 (既定では $TERM、それが失敗したら
GUI版では: "builtin_gui"
Amigaでは: "amiga"
Haikuでは: "xterm"
Macでは: "mac-ansi"
Unixでは: "ansi"
VMSでは: "ansi"
Win32では: "win32")
グローバル
ターミナルの名前。ターミナル制御文字の選択に使われる。環境変数は展開さ
れる :set_env。
例:
:set term=$TERM
termcap を参照。'termbidi' 'tbidi'
'notermbidi' 'notbidi'
'termbidi' 'tbidi' 切替 (既定ではオフ、"mlterm" のときはオン)
グローバル
{+arabic 機能付きでコンパイルされたときのみ有効}
端末がテキストの双方向性 (Bi-directionality) (Unicode による定義) をサ
ポートしていることを示す。端末はいくつかの言語 (例えばアラビア語) で必
要とされている変形文字 (shaping) も処理することが期待される。
このオプションをオンなっている場合、'arabic' をオンに設定しても
'rightleft' はオンにならず、そして 'arabicshape' の値は無視される。
Note: 'termbidi' を設定するとすぐに 'arabicshape' が無視されるようにな
るが、'rightleft' は自動的には変更されない。
このオプションは GUI を開始するとリセットされる。
詳細は arabic.txt を参照のこと。
'termencoding' 'tenc'
'termencoding' 'tenc' 文字列 (既定では ""; GTK+ GUI では "utf-8")
グローバル
ターミナルで使われるエンコーディング名。このオプションは、どの文字エン
コーディングをキーボードが生成し、どの文字エンコーディングをディスプレ
イが理解できるかを指定する。GUI版ではキーボードにのみ適用される (ディ
スプレイにはオプション 'encoding' が使われる)。
E617 E950
Note: これはGTK+ GUIには適用されない。GUIの初期化に成功した後で強制的
に 'termencoding' が "utf-8" に設定される。
これを他の値に設定しようとしても失敗し、エラーメッセージが表示される。
Win32 GUIとコンソールでは 'termencoding' は使用されない。Win32では常に
Unicode文字が渡されるからである。
空のときは、'encoding' で指定されたエンコーディングが使われる。これが
通常の値である。
'termencoding' と 'encoding' の組み合わせが全て正しいわけではない。
encoding-table を参照。
このオプションの値は、内部変換または関数 iconv() でサポートされていな
ければならない。iconv() が値を扱えないときは、変換はなされず、非ASCII
文字で問題が生じるだろう。
例: ユーザーは euc-jp (日本語) に設定されたロケールで作業していて、
UTF-8 のファイルを編集したいとする。
:let &termencoding = &encoding
:set encoding=utf-8
ユーザーのシステムがUTF-8のロケールをサポートしていないときは、ユーザー:set encoding=utf-8
がこのように設定する必要がある。
'termguicolors' 'tgc' 'notermguicolors' 'notgc' E954
'termguicolors' 'tgc' 切替 (既定ではオフ)
グローバル
{+termguicolors 機能付きでコンパイルされたときのみ有
効}
オンのとき、highlight-guifg と highlight-guibg がターミナル内で使
われる(24ビットカラー)。
ISO-8613-3 互換なターミナルが必要。このオプションを設定しても機能しな
い (色が UI に付かない) 場合は、xterm-true-color を読むと助けになる
かもしれない。
Win32 のコンソールでは、Windows 10 version 1703 (Creators Update) より
も新しいバージョンが必要である。以下のように確認する:
if has('vcon')
これには Vim が +vtp 機能付きでビルドされている必要がある。Note "cterm" の特徴はまだ使われているが、"gui" はそうではないことに注
意。
Vim を Windows Terminal で使用する場合、通常、Windows Terminal の背景
は Vim の背景色で塗りつぶされる。'termguicolors' を設定し、Normal ハイ
ライトグループの guibg を NONE に設定すると、背景が透明になる:
:hi Normal guibg=NONE
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'termwinkey' 'twk'
'termwinkey' 'twk' 文字列 (既定では "")
ウィンドウについてローカル
ターミナルウィンドウ内で CTRL-W コマンドを開始するキー。他のキーはウィ
ンドウ内で動作しているジョブに送られる。
キーは、単一文字、key-notation (例: <Up>、<C-F>)、またはキャレットで
始まる文字 (例: ^F は CTRL-F) で指定できる:
:set twk=X
:set twk=^I
:set twk=<C-L>
この文字列は 1 つのキーストロークでなければならないが、マルチバイトで:set twk=^I
:set twk=<C-L>
も良い。
未設定の場合は CTRL-W が使用されるため、CTRL-W : でコマンドラインに移
動する。'termwinkey' が CTRL-L に設定されている場合は、CTRL-L : でコマ
ンドラインに移動する。
'termwinscroll' 'twsl'
'termwinscroll' 'twsl' 数値 (既定では 10000)
バッファについてローカル
{+terminal 機能なしでコンパイルされた場合は無効}
保持されるスクロールバック行の数。この制限を超えた場合、最初の 10% の
スクロールバック行が削除される。これはメモリの使用を削減するためだけの
ものである。Terminal-Normal を参照。
また、1回の書き込みで端末に送信されるテキストの制限としても使え、列数
* 3(1表示幅あたりの平均バイト数)になる。
'termwinsize' 'tws'
'termwinsize' 'tws' 文字列 (既定では "")
ウィンドウについてローカル
terminal ウィンドウが開かれるときに利用するサイズ。書式:
{rows}x{columns} もしくは {rows}*{columns}
- 空の場合、ターミナルはウィンドウからサイズを取得する。
- "x" で設定されている場合 (例えば "24x80")、ターミナルのサイズはウィ
ンドウサイズに調節されない。ウィンドウがそれより小さい場合、左上の部
分のみ表示される。
- "*" で設定されている場合 (例えば "10*50")、ターミナルのサイズはウィ
ンドウサイズに従うが、指定された行および/もしくは列よりは小さくなら
ない。
- 行がゼロなら、ウィンドウの高さを使う。
- 列がゼロなら、ウィンドウの幅を使う。
- "0x0" もしくは "0*0" の場合、空の場合と同じになる。
- term_start() 内のオプション "term_rows" と "term_cols" によって無
視される。
例:
"30x0" は 30 行と、現在のウィンドウの幅を使用する。
"20*0" は少なくとも 20 行と、現在のウィンドウの幅を使用する。
"0*40" は現在のウィンドウの高さと、少なくとも 40 列を使用する。
Note ターミナルウィンドウ中で動作しているコマンドはターミナルのサイズ
を黙って変更するかもしれない。この場合、Vim のウィンドウは可能ならばそ
のサイズに調節される。
'termwintype' 'twt'
'termwintype' 'twt' 文字列 (既定では "")
グローバル
{Vim が MS-Windows 上で terminal 機能付きでコンパイ
ルされたときのみ有効}
端末ウィンドウを開くときに使われる仮想コンソール(pty)を指定する。
設定可能な値:
"" ConPTY が安定していればそれを使う。それ以外は winpty
が使われる。
"winpty" winpty を使う。サポートされていない場合は失敗する
"conpty" ConPTY を使う。サポートされていない場合は失敗する
ConPTY のサポートはプラットフォーム次第である。Windows 10 October
2018 Update は、ConPTYをサポートする最初のバージョンだが、それでもまだ
不安定と考えられている。Windows 10 の次のリリースでは、ConPTY が安定す
る可能性がある。winpty のサポートはインストールする必要がある。どちら
もサポートされていない場合は、端末ウィンドウを開くことはできない。
'terse' 'noterse'
'terse' 切替 (既定ではオフ)
グローバル
オンのときは、オプション 'shortmess' にフラグ 's' を追加する (こうする
とファイルの端まで検索してしまったときのメッセージが表示されなくなる)。
オフのときは、オプション 'shortmess' からフラグ 's' を取り除く。
'textauto' 'ta' 'notextauto' 'nota'
'textauto' 'ta' 切替 (Vimの既定値: オン、Viの既定値: オフ)
グローバル
このオプションは時代遅れである。オプション 'fileformats' を使うこと。
後方互換性のため、'textauto' がオンのときは、'fileformats' はシステム
の既定値に設定される。'textauto' がオフになったときは、'fileformats'
は空になる。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'textmode' 'tx' 'notextmode' 'notx'
'textmode' 'tx' 切替 (Win32では: 既定ではオン、
他のシステムでは: 既定ではオフ)
バッファについてローカル
このオプションは時代遅れである。オプション 'fileformat' を使うこと。
後方互換性のため、'textmode' がオンのときは、'fileformats' は "dos" に
なる。'textmode' がオフのときは、'fileformats' は "unix" になる。
'textwidth' 'tw'
'textwidth' 'tw' 数値 (既定では 0)
バッファについてローカル
入力されているテキストの最大幅。行がそれより長くなると、この幅を超えな
いように空白の後で改行される。値を 0 に設定すると無効になる。
'textwidth' は、'paste' オプションがオンになった時には0が設定され、
'paste' オプションがリセットされた際には復元される。
オプション 'textwidth' が 0 のときは、'wrapmargin' が使われる場合があ
る。'formatoptions' と ins-textwidth を参照。
'formatexpr' が設定されている場合、その値を使って改行される。
NOTE: このオプションは、'compatible' がオンになると 0 になるので注意。
'thesaurus' 'tsr'
'thesaurus' 'tsr' 文字列 (既定では "")
グローバル/バッファについてローカル global-local
同義語補完コマンド i_CTRL-X_CTRL-T で単語の検索に使われるファイルの
名前の、コンマ区切りのリスト。compl-thesaurus を参照。
'thesaurusfunc' がバッファまたはグローバルで設定されている場合、このオ
プションは使用されない。
ファイル名にコンマを含めるときは、その前に '\' を置くこと。コンマの後
の空白は無視されるが、それ以外では空白はそのままファイル名に含まれる。
値に空白や '\' を含める方法については、option-backslash を参照。リス
トにディレクトリを追加または削除する場合は :set+= および :set-= を
使うのがよい。こうすると将来のバージョンで異なった既定値が使われるよう
になったときに、問題が起きるのを防げる。セキュリティ上の理由から、バッ
ククォート (`) をこのオプションの値に使うことはできない。
'thesaurusfunc' 'tsrfu'
'thesaurusfunc' 'tsrfu' 文字列 (既定では空)
グローバル/バッファについてローカル global-local
{+eval 機能付きでコンパイルされたときのみ有効}
このオプションは CTRL-X CTRL-T での同義語補完で利用する関数を指定する。
i_CTRL-X_CTRL-T compl-thesaurusfunc を参照。
値として関数名、lambda、Funcref が使える。詳細は
option-value-function を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'tildeop' 'top' 'notildeop' 'notop'
'tildeop' 'top' 切替 (既定ではオフ)
グローバル
オンのとき、チルダコマンド "~" が operator のように使用できる。
{訳注: 普通チルダは、打ち込まれた時点でカーソル下のアルファベットの大
文字/小文字を変換するが、このオプションがオンのときは、"d" 等のように
範囲を指定されるまで変換しない。このオプションがオフでも、"g~{motion}"
なら範囲を指定できる。case を参照}
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'timeout' 'to' 'notimeout' 'noto'
'timeout' 'to' 切替 (既定ではオン)
グローバル
'ttimeout' 'nottimeout'
'ttimeout' 切替 (既定ではオフ、defaults.vim 内でオンに設定さ
れる)
グローバル
これら2個のオプションは共に、Vimがマッピングされたキー列やキーコードの
一部を受け取ったときの動作を決定する。
'timeout' 'ttimeout' 動作
オフ オフ タイムアウト (時間切れ) を設けない
オン オンまたはオフ マッピングとキーコードにタイムアウトあり
オフ オン キーコードにタイムアウトあり
両方オフのときは、完全なマッピングやキー列を受け取るか、受け取った文字
列に対応するマッピングやキー列はないと明らかになるまで、Vimは待つ。例
えば "vl" をマッピングして 'v' を入力したとき、'v' の次に 'l' が来るか
どうか判断するには次の文字が入力されることが必要である。
どちらかがオンのとき、Vimは次の文字が入力されるまで約1秒待つ。その後入
力された文字をそれぞれ単一の文字として解釈する。待ち時間はオプション
'timeoutlen' で設定できる。
遅いターミナルや非常にビジーなシステムでは、時間切れを設けるとカーソル
キーの動作がおかしくなることがある。両方オフのときは、<Esc> で始まるキー
コードがあるとVimは <Esc> が入力された後ずっと待ち状態になる。ユーザー
は <Esc> を2回打ち込まなければならない。キーコードに問題はないが、マッ
ピングされたキー列を1秒でタイムアウトにされたくなければ、'ttimeout' を
オン、'timeout' をオフにすること。
NOTE: 'ttimeout' は、'compatible' がオンになるとオフになるので注意。
'timeoutlen' 'tm'
'timeoutlen' 'tm' 数値 (既定では 1000)
グローバル
'ttimeoutlen' 'ttm'
'ttimeoutlen' 'ttm' 数値 (既定では -1、defaults.vim 内で100に設定され
る)
グローバル
キーコードやマッピングされたキー列が完了するのを待つ時間 (ミリ秒単位)。
すでにコマンドの一部がタイプされているとき、CTRL-\ CTRL-NとCTRL-\
CTRL-Gにも適用される。
普通、オプション 'timeoutlen' のみが使われ、'ttimeoutlen' は -1 に設定
される。キーコードに対して異なった待ち時間を設定したいときは、
'ttimeoutlen' を非負の値に設定すること。
ttimeoutlen マッピング待ち キーコード待ち
負 'timeoutlen' 'timeoutlen'
0以上 'timeoutlen' 'ttimeoutlen'
タイムアウト (時間切れ) になるのは、'timeout' と 'ttimeout' でそう設定
されているときのみである。便利な設定は次の通り。
:set timeout timeoutlen=3000 ttimeoutlen=100
(マッピングは3秒、キーコードは0.1秒で時間切れ)'title' 'notitle'
'title' 切替 (既定ではオフ、
タイトルが復元できるときにはオン)
グローバル
オンのとき、ウィンドウのタイトルがオプション 'titlestring' の値 (空で
なければ) になる。空の場合は次のようになる。
filename [+=-] (path) - VIM
ここでの意味は以下の通り。
filename 編集されているファイルの名前
- ファイルが変更できない、つまり 'ma' がオフであ
ることを表す
+ ファイルが変更を受けたことを表す
= ファイルが読み込み専用であることを表す
=+ ファイルが読み込み専用であるが変更を受けたこと
を表す
(path) 編集されているファイルのパス
- VIM サーバー名、変数 v:servername の値または "VIM"
ターミナルがウィンドウタイトルを設定できるもののときのみ有効である
(現在のところAmigaとWin32のコンソール版、全てのGUI版と 't_ts' が空でな
いターミナルのみ --- これらは既定では Unix xterm と iris-ansi であり、
このときターミナルオプション 't_ts' は組み込み termcap から取られる)。
X11
Vimが HAVE_X11 が定義された状態でコンパイルされた場合は、可能ならば元
のタイトルが復元される。HAVE_X11 が定義されていたら、コマンド
":version" の出力には "+X11" が含まれ、定義されていなかったら "-X11"
が含まれる。これはアイコン名 'icon' にも働く。
しかしVimが引数 -X 付きで起動した場合は、タイトルは復元されない (GUI
版を除く)。
タイトルを復元できないときは、'titleold' がタイトルになる。その場合は
Vimの外でタイトルを復元したいと思うかもしれない。ネットワーク越しに
xterm を使っているときは、次のコマンドが使える。
rsh マシン名 xterm -display $DISPLAY &
ssh -X マシン名 xterm &
ssh -X マシン名 xterm &
すると環境変数 $WINDOWID の値が受け継がれ、ウィンドウのタイトルは、Vim
の終了後に戻るべき状態に戻る。
'titlelen'
'titlelen' 数値 (既定では 85)
グローバル
ウィンドウタイトルが占める列の割合 (パーセント単位)。タイトルがこれよ
り長かったときは、パス名の後ろの部分のみが表示される。この切り詰めを示
すためには、パス名の前に文字 '<' が表示される。
割合で指定しているため、タイトルが占める長さはウィンドウの幅に従って調
整できる。しかし完全にその通りになる訳ではない。それは実際に利用できる
文字数は、使われているフォントやタイトルバー内の他のものによっても変わ
るからだ。値が 0 のときは、フルパスが使われる。フルパスを使わないとき
は 1 以上 30000 以下の数を指定する。
このオプションはオプション 'titlestring' にも使われる。
'titleold'
'titleold' 文字列 (既定では "Vim を使ってくれてありがとう")
グローバル
このオプションの値は、Vimの終了時に元のウィンドウタイトルが復元できな
い場合のタイトルに使われる。オプション 'title' がオンであるか
'titlestring' が空でないときのみ有効である。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'titlestring'
'titlestring' 文字列 (既定では "")
グローバル
空でないとき、ウィンドウタイトルに使われる。オプション 'title' がオン
のときのみ有効である。
ターミナルがウィンドウタイトルを設定できるもののときのみ有効である (現
在のところAmigaとWin32のコンソール版、全てのGUI版とターミナルオプショ
ン 't_IS' が空でないターミナルのみ)。
Vimが HAVE_X11 が定義された状態でコンパイルされた場合は、可能ならば元
のタイトルが復元される X11。
値に関数 printf 形式の '%' による書式指定が含まれているときは、
'statusline' と同じ方法で展開される。無効な '%' 形式が含まれている場
合、値はそのまま使用され、値が設定される時にエラーや警告は表示されな
い。
'modelineexpr' がオフの場合は、モードラインでこのオプションを設定する
ことはできない。
例:
:auto BufEnter * let &titlestring = hostname() .. "/" .. expand("%:p")
:set title titlestring=%<%F%=%l/%L-%P titlelen=70
'titlelen' の値は、利用できる場所の中で項目を中央や右にそろえるために:set title titlestring=%<%F%=%l/%L-%P titlelen=70
使われる。
ファイル名を最初に表示したい人は、こう設定する。
:set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%)
Note (ファイル名を除いた) パスを得るため、"%{ }" と expression を使っていることに注意。"%( %)" は、区切りの空白を必要なときだけ加えるために
使われている。
NOTE: 'titlestring' に特殊な文字 (例えば文字 <CR> や文字 <NL>) を使う
と、表示がおかしくなることがあるので注意。
{+statusline 機能付きでコンパイルされたときのみ有効}
'toolbar' 'tb'
'toolbar' 'tb' 文字列 (既定では "icons,tooltips")
グローバル
{Vimの +GUI_GTK版, +GUI_Motif版, +GUI_Photon版の
み}
ツールバーの様々な設定を行う。指定可能な値は以下の通り。
icons ツールバーのボタンにアイコンが表示される。
text ツールバーのボタンに名前が表示される。
horiz ツールバーのボタンのアイコンとテキストが水平に
配置される。{GTK+ 2 GUIでのみ利用可能}
tooltips ツールバーのボタンでツールチップが表示される。
ツールチップとは、マウスカーソルがツールバーのボタン上にしばらく置かれ
たときに飛び出す、ヘルプテキストのことである。
ツールバーにアイコンと名前を両方表示したいときは、このように設定する。
:set tb=icons,text
Motifでは両方同時には表示できない。両方求められると、アイコンだけが表示される。
オプション 'toolbar' が空であるか、適切な値が一つもないときは、このオ
プションは無視される。ツールバーを無効にしたいときは、'guioptions' を
設定する必要がある。例:
:set guioptions-=T
gui-toolbar も参照。'toolbariconsize' 'tbis'
'toolbariconsize' 'tbis' 文字列 (既定では "small")
グローバル
{GTK+ GUI版でのみ利用可能}
ツールバーのアイコンのサイズを制御する。設定可能な値は次の通り:
tiny 最も小さいアイコンを使用する。
small 小さいアイコンを使用する(既定値)。
medium 中程度のアイコンを使用する。
large 大きいアイコンを使用する。
huge さらに大きいアイコンを使用する。
giant 非常に大きいアイコンを使用する。
各種アイコンサイズのピクセル単位での正確な大きさは、使用しているテーマ
に依存する。共通の大きさはgiant=48x48、huge=32x32、large=24x24、
medium=24x24、small=20x20、tiny=16x16である。
'toolbariconsize' が空のときは、ユーザーの設定または現在使用しているテー
マによって決定されるグローバルなデフォルトサイズが使用される。
'ttybuiltin' 'tbi' 'nottybuiltin' 'notbi'
'ttybuiltin' 'tbi' 切替 (既定ではオン)
グローバル
オンのときは、外部の termcap の前に組み込みの termcap を探す。
オフのときは、外部の termcap の後に組み込みの termcap を探す。
このオプションが変更されたときは、変更を有効にするため、次にオプション
'term' を設定する必要がある。例:
:set notbi term=$TERM
termcap も参照。関連情報: このオプションは既定ではオンである。それは普通、組み込み
termcap のエントリの方が良いものだからだ (多くのシステムでおかしな
xterm エントリが含まれている...)。
'ttyfast' 'tf' 'nottyfast' 'notf'
'ttyfast' 'tf' 切替 (既定ではオン)
グローバル
高速ターミナル接続を行う。再描画のとき、行挿入/削除コマンドを使う代わ
りに、より多くの文字が画面に送られる。複数のウィンドウが開かれており、
なおかつターミナルが部分スクロールをサポートしていないとき、再描画が滑
らかになる。
また折り返された行のそれぞれの行末で、文字の extra writing {訳注: 端末
に行の折り返しを認識させ、複数行にまたがった文字列をコピーする際、余分
な改行が含まれてしまうことを防ぐテクニック} を有効にする。これは xterm
等のターミナルで、マウスを使ってコピーやペーストをするときに役立つ。
{訳注: "tty" とは、昔のコンピュータに使われていたテレタイプ (TeleTYpe)
端末 (コンソールみたいなもの) から来た言葉である}
以前は一部の端末名にのみデフォルトが設定されていたが、最近ではほぼすべ
ての端末が高速になったため、デフォルトが "on" になった。接続が遅い場合
は、このオプションを off に設定するとよい。例えば、ホスト名に応じて次
のようになる:
if hostname() =~ 'faraway'
set nottyfast
endif
set nottyfast
endif
'ttymouse' 'ttym'
'ttymouse' 'ttym' 文字列 (既定値は 'term' によって異なる)
グローバル
{VimのUnix版とVMS版でのみ使用可能で、GUI版では無効。
Vimが +mouse 機能付きでコンパイルされたときのみ有効}
マウスコードが、このオプションで指定したターミナル名に従って認識される。
現在のところ、以下のターミナル名を設定できる。
xterm-mouse
xterm xterm 風にマウスを扱う。マウスが生成するコードは
"<Esc>[Mscr" である。ここで "scr" は次のような3バイト
のコードである。
"s" = ボタンの状態
"c" = 桁数足す 33
"r" = 行数足す 33
これは223桁までしか機能しないことに注意。解決策につい
ては "dec"、"urxvt"、"sgr" を参照。
xterm2 "xterm" と動作が似ているが、ドラッグ中もマウス位置を返
すような xterm に対して働く。こちらの方がずっと動作が
速く、正確である。これを使うには、ユーザーの xterm が
最低でもパッチレベルが 88 で XFree 3.3.3 に対応してい
なければならない。Vimがこれを自動認識する方法について
は、以下を参照。
netterm-mouse
netterm NetTerm 風にマウスを扱う。マウスの左クリックが生成する
コードは"<Esc>}r,c<CR>" である。ここで "r,c" は、それ
ぞれ行数と桁数を表す10進数である。他のマウスイベントは
サポートされていない。
dec-mouse
dec DEC terminal 風にマウスを扱う。マウスが生成するのは、
"<Esc>[" で始まるかなり複雑なコードである。
Xtermが "--enable-dec-locator" つきでconfigureされてい
るならば、Xtermでもこれを利用できる。
jsbterm-mouse
jsbterm JSB term 風にマウスを扱う。
pterm-mouse
pterm QNX pterm 風にマウスを扱う。
urxvt-mouse
urxvt urxvt (rxvt-unicode) 風にマウスを扱う。
端末がこのエンコードスタイルをサポートしているときのみ
機能する。"xterm" や "xterm2" のような 223 桁の制限は
ない。
sgr-mouse
sgr SGR スタイルのマウスレポートを発行するターミナル用に
マウスを扱う。xterm のバージョン 277 かそれ以降で動作
する。マウスは 223 桁を超えても機能する。このオプショ
ンは "xterm2" と後方互換性がある。このスタイルでは
"xterm2" スタイルのマウスコードもデコードできる。
マウスを使用するには、コンパイル時に +mouse_xterm +mouse_dec
+mouse_netterm +mouse_jsbterm +mouse_urxvt +mouse_sgr 等のどれ
かの機能を有効にしておかなければならない。
本当に認識されるのは "xterm"(2) のみである。NetTerm のマウスコードは、
コンパイル時に有効にされていれば必ず認識される。DEC terminal のマウス
コードは、コンパイル時に有効にされ、かつオプション 'ttymouse' が
"xterm"、"xterm2"、"urxvt"、"sgr" でないときのみ認識される (dec マウス
コードはそれらのコードと競合するため)。
このオプションが自動的に "xterm" に設定されるのは、'term' が "xterm"、
"mlterm"、"screen"、"tmux"、"st" (完全一致のみ)、"st-"、"stterm" のい
ずれかで始まり、'ttymouse' がまだ設定されていないときである。
terminfo/termcap エントリ "XM" が存在し、最初の番号が "1006" の場合、
'ttymouse' は "sgr" に設定される。これは多くの最新の端末で機能する。
加えて、Vim が +termresponse 機能付きでコンパイルされていて、t_RV
に xterm のバージョン番号を要求するためのエスケープシーケンスが設定さ
れているときは、さらに高度な判定が行われる。
xterm バージョンが 95 以上、276 以下であると報告されたときは "xterm2"
に設定される。Vim が Mac Terminal.app, iTerm2 もしくは mintty を検出し
たときと、xterm バージョンが 277 以上のときは "sgr" に設定される。
'ttymouse' を "xterm2" や "sgr" に自動的に設定したくないときは、次のよ
うに t_RV を空に設定する。
:set t_RV=
'ttyscroll' 'tsl'
'ttyscroll' 'tsl' 数値 (既定では 999)
グローバル
画面をスクロールする行数の最大値。この行数以上スクロールするときは、ウィ
ンドウが再描画される。スクロールがとても遅いが再描画は遅くないようなター
ミナルでは、表示を高速化するため、このオプションを 3 等の小さい数にす
るとよい。
'ttytype' 'tty'
'ttytype' 'tty' 文字列 (既定値は $TERM によって決まる)
グローバル
上記のオプション 'term' の別名。
'undodir' 'udir'
'undodir' 'udir' 文字列 (既定値は ".")
グローバル
{+persistent_undo 機能付きでコンパイルされたときのみ
有効}
アンドゥファイル用のディレクトリをコンマ区切りのリストで指定する。
書式についての詳細は 'backupdir' を参照。
"." はファイルのディレクトリを意味する。アンドゥファイルの名前は例えば
"file.txt" なら ".file.txt.un~" になる。
別ディレクトリに保存される場合は、アンドゥファイルの名前は対象のファイ
ルの絶対パスのパス区切り文字を "%" で置換した名前になる。
保存するとき: 最初に見つかった、存在するディレクトリが使われる。"." は
常に有効なので "." 以降に指定されたディレクトリは使用されない。読み込
むとき: アンドゥファイルを探すためにすべてのエントリが試行される。最初
に見つかったファイルが使用される。見つかったファイルが読めなかったりエ
ラーが発生したりしても、それ以降のエントリは使用されない。
undo-persistence 参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'undofile' 'noundofile' 'udf' 'noudf'
'undofile' 'udf' 切替 (既定ではオフ)
バッファについてローカル
{+persistent_undo 機能付きでコンパイルされたときのみ
有効}
オンにすると、バッファをファイルに保存したときにアンドゥ履歴がアンドゥ
ファイルに自動的に保存され、そして、後でそのファイルを開いたときにアン
ドゥファイルからアンドゥ履歴が復元される。
アンドゥファイルが保存されるディレクトリは 'undodir' で設定する。
この機能の詳細は undo-persistence を参照のこと。
'undoreload' の処理の過程でファイルが読み込まれるときはアンドゥファイ
ルは読み込まれない。
'undofile' がオフに設定されたときアンドゥファイルは削除「されない」。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
'undolevels' 'ul'
'undolevels' 'ul' 数値 (既定では 100、
Unix, VMS, Win32での既定値は 1000)
グローバル/バッファについてローカル global-local
アンドゥ可能な変更の最大値。アンドゥをするための情報はメモリに蓄えられ
るため、大きい数を設定するとメモリの消費量も多くなる。にもかかわらず、
1回の変更ですでに大量のメモリを使用する可能性がある。
Vi互換にするには、次のように 0 にすること。アンドゥは 1 回だけ可能で、
もう 1 回 "u" を使うとアンドゥがアンドゥ {訳注: リドゥ} される。
set ul=0
しかしVi互換にするには、オプション 'cpoptions' にフラグ 'u' を追加してもよい。こうするとコマンド CTRL-R でリドゥできる。
undo-two-ways も参照。
アンドゥを無効にするには、-1 にすること。現在のバッファに対してだけ
無効にするには次のようにする。
setlocal ul=-1
これは 1 回の変更でもメモリを使い果たしそうなときに役立つ。グローバルな値が使われる場合、ローカルな値が -123456 に設定される。
clear-undo も参照。
'undoreload' 'ur'
'undoreload' 'ur' 数値 (既定は 10000)
グローバル
リロードするときにアンドゥのためにバッファ全体を保存する。これは ":e!"
コマンドを実行したときや、バッファが Vim の外で変更されたためにそれを
リロードするときに使用される。 FileChangedShell
保存は、オプションの値が負数に設定されているか、行数が設定値より少ない
場合にのみ実行される。
リロードのアンドゥを無効化するにはこのオプションをゼロに設定する。
リロードのためにアンドゥが保存されるときは、アンドゥファイルは読み込ま
れない。
Note: この機能によってバッファ全体がメモリに保持される。メモリ不足が起
こる場合はこのオプションに小さい値を設定すること。
'updatecount' 'uc'
'updatecount' 'uc' 数値 (既定では 200)
グローバル
この回数だけ文字を打ち込むと、スワップファイルがディスクに書き込まれる。
0 にすると、スワップファイルは全く作られない (復旧に関する章
crash-recovery を参照)。Vimを引数 "-n" 付きで起動すると、オプション
'updatecount' を 0 に設定できる。startup を参照。読み込み専用モード
で編集しているときは、このオプションは 10000 に初期化される。
'swapfile' により、スワップファイルをバッファごとに無効化できる。
'updatecount' が 0 から 非0 に変更されたときは、'swapfile' がオンになっ
ている全てのバッファで、スワップファイルが作られる。'updatecount' が 0
になったときは、既存のスワップファイルは削除されない。
'swapsync' も参照。
'buftype' が "nofile" や "nowrite" であるようなバッファでは、このオプ
ションの意味はない。
'updatetime' 'ut'
'updatetime' 'ut' 数値 (既定では 4000)
グローバル
この時間の間 (ミリ秒単位) 入力がなければ、スワップファイルがディスクに
書き込まれる (crash-recovery を参照)。また autocommand のイベント
CursorHold にも使われる。
'varsofttabstop' 'vsts'
'varsofttabstop' 'vsts' 文字列 (既定では "")
バッファについてローカル
{+vartabs 機能付きでコンパイルされている場合のみ有効}
<Tab> の挿入や <BS> の使用などの編集における、1 つの <Tab> に相当する
空白の数のリスト。可変幅の <Tab> が挿入されるように感じられる動作だが、
実際には空白と <Tab> が混合して使用される。タブ幅はコンマで区切られ、
最後の値は後ろに続くすべてのタブに適用される。
例えば、9 列目からステートメントが、41 列目からコメントが始まるアセン
ブリ言語のファイルを編集する際、以下のように使用すると便利だろう:
:set varsofttabstop=8,32,8
これは soft tabstop を、8 個および 8 + 32 個、そして以降すべての列に対して 8 個の空白に設定する。
Note: 'varsofttabstop' が設定されている場合、'softtabstop' の値は無
視される。
'vartabstop' 'vts'
'vartabstop' 'vts' 文字列 (既定では "")
バッファについてローカル
{+vartabs 機能付きでコンパイルされている場合のみ有効}
ファイルの中において、1 つの <Tab> に相当する空白の数をコンマで区切っ
たリスト。それぞれの値は 1 つのタブに対応し、最後の値は後ろに続くすべ
てのタブに適用される。例:
:set vartabstop=4,20,10,8
これは最初のタブを 4 個の空白、二つ目を 20 個の空白、三つ目を 10個の空白、続くすべてのタブを 8 個の空白に変換する。
Note: 'vartabstop' が設定されている場合、'tabstop' の値は無視される。
'verbose' 'vbs'
'verbose' 'vbs' 数値 (既定では 0)
グローバル
値が 0 より大きいとき、Vimは実行中の動作に関するメッセージを表示する。
現在のところ、以下のメッセージが表示される。
1以上 ファイル viminfo が読み書きされたとき。
2以上 コマンド ":source" でファイルを読み込んだとき。
4以上 シェルコマンド。
5以上 検索されたタグファイルとインクルードファイル全て。
8以上 autocommand のグループが実行されたファイル。
9以上 実行された autocommand 全て。
11以上 パス上のアイテム検索。
12以上 実行された関数全て。
13以上 例外が発生/捕捉/終了/破棄されたとき。
14以上 ":finally" 節において保留されている全て。
15以上 スクリプトから実行された Ex コマンド全て (200 文字から後は切り
捨て)。
16以上 実行された Ex コマンド全て。
このオプションは、引数 "-V" でも設定できる。-V を参照。
このオプションは、コマンド :verbose でも設定できる。
'verbosefile' が設定されている場合、verboseのメッセージは表示されない。
'verbosefile' 'vfile'
'verbosefile' 'vfile' 文字列 (既定では "")
グローバル
このオプションが空でないとき、全てのメッセージはこの名前のファイルに書
き出される。ファイルが既に存在するときは、そこに追加される。
ファイルへの書き出しはVimが終了したときか、または 'verbosefile' が空に
設定されたとき終了する。書き込みはバッファされるので出力が欠けることが
ある。
'verbosefile' を新しい値に設定すると、最初に空に設定したのと同じことに
なる。:redirとの違いは、'verbosefile' が設定されているとき冗長なメッ
セージは画面に表示されないことである。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'viewdir' 'vdir'
'viewdir' 'vdir' 文字列 (既定値 Amiga用: "$VIM/vimfiles/view",
Win32用: "$HOME/vimfiles/view",
Unix用: "$HOME/.vim/view" または
"$XDG_CONFIG_HOME/vim/view"
VMS用: "sys$login:vimfiles/view")
グローバル
{+mksession 機能付きでコンパイルされたときのみ有効}
コマンド :mkview によるファイルを格納するディレクトリの名前。
$XDG_CONFIG_HOME については、xdg-base-dir を参照。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'viewoptions' 'vop'
'viewoptions' 'vop' 文字列 (既定では "folds,options,cursor,curdir")
グローバル
{+mksession 機能付きでコンパイルされたときのみ有効}
コマンド :mkview の効果を変更する。値はキーワードのコンマ区切りのリ
ストである。キーワードは、ある項目の保存と復元を有効にする。
キーワード 復元される項目
cursor ファイル/ウィンドウ内のカーソル位置
folds 手動で作られた折り畳み、折り畳みの開閉の区別、折り畳み
関連のローカルなオプション
options ウィンドウまたはバッファについてローカルなオプションと
マッピング (ローカルなオプションのグローバルな値は含め
ない)
localoptions "options" と同じ
slash ファイル名内の '\' がスラッシュに置換される
unix Windows上でも、Unix形式の end-of-line (1個の <NL>) を
使う
curdir :lcd で設定されていた場合のウィンドウローカルなディ
レクトリ
"slash" と "unix" は、MS-Windows上でビューファイルをUnixと共有するとき
に便利である。Unix版のVimはdos形式のスクリプトを読み込めないが、
MS-Windows版のVimはunix形式のスクリプトを読み込めるからだ。
'viminfo' 'vi' E526 E527 E528
'viminfo' 'vi' 文字列 (Viの既定値は "", Vimの既定値は、
MS-Windowsでは: '100,<50,s10,h,rA:,rB:,
Amigaでは: '100,<50,s10,h,rdf0:,rdf1:,rdf2:
他のシステムでは: '100,<50,s10,h)
グローバル
{+viminfo 機能付きでコンパイルされたときのみ有効}
値が空でないとき、viminfo ファイルが起動に先立って読み込まれ、また終了
時に書き出される (viminfo-file を参照)。ただし、'viminfofile' が
"NONE" の時は除く。
値は指定部のコンマ区切りのリストである。指定部には、効果を指定するフラ
グ 1 文字の次に、その値を指定する数または文字列を指定する。指定されな
かったものについては、既定値が使われる。フラグとその動作の一覧は、以下
の通りである。
フラグ 動作
viminfo-!
! これが含まれると、アルファベットの大文字で始まり、小文字を含ま
ないグローバル変数を保存・復元する。つまり "KEEPTHIS" と
"K_L_M" は保存されるが、"KeepThis" と "_K_L_M" は保存されない。
入れ子になったリストと辞書は正しく復元されず、空文字列になる。
viminfo-quote
" 各レジスタで保存される行数の最大値。これはフラグ '<' の古い表
記である。この表記の不利点は、(エスケープのために)バックスラッ
シュを " の前に書かないといけないことである。そうしないとコメ
ントの開始と見なされてしまう!
viminfo-%
% これが含まれると、バッファリストを保存・復元する。Vimの起動時
にファイル名が引数に含まれていると、バッファリストは復元されな
い。Vimの起動時にファイル名が引数に含まれていないと、バッファ
リストが viminfo ファイルから復元される。Quickfix ('buflisted')
と非リスト対象 ('buflisted') 無名バッファおよびリムーバブルメ
ディア上のバッファ (viminfo-r) は保存されない。
このフラグの後に続けて数値を書くと、保存されるバッファ数の最大
値を指定することができる。数値が書かれていない場合、全てのバッ
ファが保存される。
viminfo-'
' マークが復元されるファイル履歴の最大値。オプション 'viminfo'
が空でないときは、常にこれを設定しなければならない。
また、このオプションを設定するとジャンプリスト jumplistと
changelist も viminfo ファイルに蓄えられることになる。
viminfo-/
/ 保存される検索パターンの履歴の最大値。非0 の値を指定すると、前
回の検索パターンと置換パターンも保存される。これが含まれないと
きは、'history' の値が使われる。
viminfo-:
: 保存されるコマンドライン履歴の最大値。これが含まれないときは、
'history' の値が使われる。
viminfo-<
< 各レジスタで保存される行数の最大値。0 にすると、レジスタは保存
されなくなる。'"' はこのフラグの古い表記である。
下記のフラグ 's' も参照: 's' はKbyte単位で最大値を指定する。
viminfo-@
@ 保存される input-line 履歴の最大値。これが含まれないときは、
'history' の値が使われる。
viminfo-c
c これが含まれると、viminfo ファイル内のテキストを、書き込まれた
ときのエンコーディングから現在のエンコーディングに変換する。
viminfo-encoding {訳注: および 'encoding'} を参照。
viminfo-f
f ファイルマークを保存するかどうか。0 を指定すると、ファイルマー
ク ('0 から '9, 'A から 'Z) は保存されない。これが含まれなかっ
たり、値が非0 のときは、みな保存される。'0 は (終了時やコマン
ド ":wviminfo" の実行時の) カーソル位置の保存に使われる。
viminfo-h
h viminfo ファイルの読み込み時に、'hlsearch' を無効にする。含ま
れないときは、最後の検索コマンド以来、コマンド ":nohlsearch"
が使われたかどうかによる。
viminfo-n
n これでファイル viminfo の名前を指定する。名前は 'n' のすぐ後に
続けて指定する。'viminfo' の最後に指定しなければならない!もし
も 'viminfofile' オプションが設定されていると、その
('viminfofile' で設定された) 名前は、ここの 'viminfo' で指定さ
れた名前を上書きする。環境変数はオプションの設定時ではなく、
ファイルの読み込み時に展開される。
viminfo-r
r リムーバブルメディア {訳注: USBメモリ、CD-ROM等の取り外せる記
憶装置。この中身は取り替えてしまえば全く変わるので、ファイル履
歴の意味がない} の指定。引数は文字列 (次の ',' まで) である。
これは複数個指定できる。それぞれがマーク履歴の対象外になるパス
の先頭部を指定する。これはリムーバブルメディアを避けるためであ
る。MS-Windowsでは "ra:,rb:", Amigaでは "rdf0:,rdf1:,rdf2:" と
するとよい。ここに一時ファイルを指定することもできる (Unixの例:
"r/tmp")。大文字と小文字の区別はない。それぞれの 'r' の引数の
最大長は 50 文字である。
viminfo-s
s Kbyte単位でのフラグの最大値。0のときレジスタは保存されない。現
在のところこれはレジスタにのみ適用される。既定値の "s10" の状
態では、10Kbyteを超えるテキストを持つレジスタは除外される。上
記のフラグ '<' も参照: '<' は行数で制限値を指定する。
例:
:set viminfo='50,<1000,s100,:0,n~/vim/viminfo
'50 最近編集した 50 ファイル内のマークは保存される。
<1000 レジスタの中身 (それぞれ 1000 行まで) は保存される。
s100 100Kbyteを超えるテキストを持つレジスタは保存されない。
:0 コマンドラインの履歴は保存されない。
n~/vim/viminfo 使用するファイル名は "~/vim/viminfo" である。
'/' がない '/' が指定されていないので、既定値が使われる。つまり全
ての検索履歴や前回の検索パターン、置換パターンが保存さ
れる。
'%' がない バッファリストは、保存も復元もされない。
'h' がない 'hlsearch' による強調表示は復元される。
'viminfo' を空の値から他の値へ変更するとき、:rviminfoを使うと、その
ファイルの中身を読み込むことができる。これは自動的には行われない。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
NOTE: このオプションは 'compatible' がオフになるとVimの既定値に設定さ
れるので注意。
'viminfofile' 'vif'
'viminfofile' 'vif' 文字列 (既定では: "")
グローバル
{+viminfo 機能付きでコンパイルされたときのみ有効}
値が空でないとき、viminfo で使われているファイル名を上書きする。
"NONE" のとき、viminfo の読み込みも書き込みもされない。
このオプションはコマンドラインの -i フラグで設定することができる。
コマンドラインからの --clean フラグはこれを "NONE" に設定する。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'virtualedit' 've'
'virtualedit' 've' 文字列 (既定では "")
グローバル/ウィンドウについてローカル global-local
値は、以下のキーワードのコンマ区切りのリストである。
block 矩形ビジュアルモードで仮想編集を有効にする。
insert 挿入モードで仮想編集を有効にする。
all 全てのモードで仮想編集を有効にする。
onemore 行末の1文字先までカーソルを移動できるようにする。
none ローカルの値で使うとき、グローバルの値が設定されていた
としても仮想編集を有効にしない。グローバルの値で使うと
き、"none" は "" と同じ。
NONE "none" の代替記法。
仮想編集とは、実際に文字がないところにもカーソルを置けるようにすること
である。つまりタブ文字の内部や行末より後ろにカーソルを移動できる。ビ
ジュアルモードで長方形を選択するときや、表を編集するときに便利である。
{訳注: フリーカーソルモードとも呼ばれる}
"onemore" は同じではない。"onemore" は単にカーソルを行の最後の文字の直
後まで移動できるようにするだけである。これによっていくつかのコマンドが
より一貫性を持つようになる。以前は、空行では常にカーソルは行末を越えて
いた。しかしこれはVi互換からはほど遠い。これを設定すると動かなくなるプ
ラグインや Vim script もあるかもしれない。例えばlでカーソルが最後の
文字の後に移動できるためである。よく注意して使うこと!
コマンド $ はカーソルを行の最後の文字へ移動させる。最後の文字を越え
はしない。そのため、$ によってカーソルが左へ移動することもありえる!
コマンド g$ はスクリーン行の最後に移動するだろう。
"all" と "onemore" を同時に設定することは意味がないが、そのように設定
しても警告は出ない。
他の値と合せて使うとき、"none" は無視される。
NOTE: このオプションは、'compatible' がオンになると "" になるので注意。
'visualbell' 'vb' 'novisualbell' 'novb' beep
'visualbell' 'vb' 切替 (既定ではオフ)
グローバル
ビープ音に、実際は音でなくビジュアルベル {訳注: 画面フラッシュ} を使う。
ビジュアルベルに使われるターミナルコードは、ターミナルオプション
't_vb' で指定される。音もフラッシュも使いたくないならば、次のようにす
ること {訳注: しかしエラーが分からなくなるという諸刃の剣}。
:set vb t_vb=
短いフラッシュを望むのなら多くのターミナルでこれを使うことができる: :set vb t_vb=^[[?5h$<100>^[[?5l
ここで、$<100> は時間を特定する。これを小さくまたは大きくすることで、フラッシュを速くしたり遅くしたりすることができる。
Note: Vim はベルを 0.5 秒毎に制限する。これは、例えばキーリピートのよ
うな多くのベルがあった時に、フラッシュのためのフラッシュ待ちを回避す
る。'visualbell' が設定されていなくても生じることに注意。
GUI 版では、't_vb' の既定値は "<Esc>|f" であり、画面の色を 20 ミリ秒だ
け反転させる。違った時間を設定したいときは、"<Esc>|40f" とすること。こ
こで 40 の所にはミリ秒単位で時間を設定する。
Note: GUIが開始するとき、't_vb' は既定値に設定されることに注意。
gvimrc ファイルで再設定する必要があるだろう。
Amigaではこのオプションは無効で、常に画面フラッシュが使われる。
'errorbells' も参照。
'warn' 'nowarn'
'warn' 切替 (既定ではオン)
グローバル
バッファが変更される間にシェルコマンドが使われたら、警告メッセージを表
示する。
'weirdinvert' 'wiv' 'noweirdinvert' 'nowiv'
'weirdinvert' 'wiv' 切替 (既定ではオフ)
グローバル
このオプションは termcap オプション 't_xs' と同じ効果を持つ。これは
Vim version 4.x との後方互換性のためのものである。
このオプションをオンにすると、't_xs' が非0 になる。またこのオプション
をオフにすると、't_xs' が 0 になる。GUI版では効果がない。
'whichwrap' 'ww'
'whichwrap' 'ww' 文字列 (Vimの既定値: "b,s"、Viの既定値: "")
グローバル
カーソルを左右させるキーのうち、ここで指定したものでは、カーソルが行頭
/末にあるときに前/次行に移動できるようになる。以下のキーでこれを有効
にするには、文字を連結すること {訳注: はて?以下の文字を値に加えろとい
うことか?}。
フラグ キー モード
b <BS> ノーマルとビジュアル
s <Space> ノーマルとビジュアル
h "h" ノーマルとビジュアル (非推奨)
l "l" ノーマルとビジュアル (非推奨)
< <Left> ノーマルとビジュアル
> <Right> ノーマルとビジュアル
~ "~" ノーマル
[ <Left> 挿入と置換
] <Right> 挿入と置換
例:
:set ww=<,>,[,]
こうすると、カーソルキーでのみ行末/頭の移動ができる。移動キーが削除オペレータや変更オペレータと共に使われたときは、<EOL> も
文字に含まれる。このためカーソルが行末を通るときは、"3h" の動きと
"3dh" の動きは異なる。これは "x" と "X" にも当てはまる。それは、それら
のコマンドは "dl" と "dh" と同様に働くからだ。これを使うときは、バック
スペースでカーソル前の文字を削除できるようにするため、マッピング
":map <BS> X" を使うとよい。
値に 'l' が含まれているとき、(空行でない)行末でオペレータの後にlを使う
と、カーソルが次行に移動しない。これによって "dl", "cl", "yl" などが普
通に動作する。
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、
'compatible' がオフになるとVimの既定値に設定されるので注意。
'wildchar' 'wc'
'wildchar' 'wc' 数値 (Vimの既定値: <Tab>、Viの既定値: CTRL-E)
グローバル
コマンドラインで、オプション 'wildmode' で指定したようにワイルドカード
を展開するために打ち込まなければならない文字。
より詳しくは cmdline-completion を参照。
その文字はマクロ内では認識されない。それには 'wildcharm' を参照。
CTRL-C, <CR> や Enter などのいくつかのキーは機能しない。
<Esc> も使用できるが、2 回続けて押すと、フェイルセーフ対策としてコマン
ドラインが終了する。
'wc' は数値オプションだが、数値、単一文字、key-notation (例: <Up>、
<C-F>)、またはキャレットで始まる文字 (例: ^F は CTRL-F) で指定でき
る:
:set wc=27
:set wc=X
:set wc=^I
:set wc=<Tab>
NOTE: このオプションは 'compatible' がオンになるとViの既定値に設定され、:set wc=X
:set wc=^I
:set wc=<Tab>
'compatible' がオフになるとVimの既定値に設定されるので注意。
'wildcharm' 'wcm'
'wildcharm' 'wcm' 数値 (既定では空 (0))
グローバル
このオプションはオプション 'wildchar' と全く同様に働くが、こちらはマク
ロ内でも認識される点が異なっている。ex-edit-index を探せば、このオプ
ションに適した「予備」コマンドラインキーが見つかるだろう。普通、ユーザー
が実際に 'wildcharm' で指定されたキーを打ち込むことはない。自動的に補
完モードを呼び出すマッピング内でのみ使うこと。例えば次のようにする。
:set wcm=<C-Z>
:cnoremap ss so $vim/sessions/*.vim<C-Z>
こうすると ":ss" と打ち込んだ後でコマンド CTRL-P や CTRL-N が使える。:cnoremap ss so $vim/sessions/*.vim<C-Z>
'wildignore' 'wig'
'wildignore' 'wig' 文字列 (既定では "")
グローバル
ファイルパターンのリスト。パターンのどれかにマッチしたファイルは、ワイ
ルドカード (wildcards) の展開時と、ファイル/ディレクトリ名の補完時
に無視される。また、フラグを与えて無効化しない限り、expand(),
glob(), globpath() の結果に影響する。
パターンは :autocmd と同様のものである。autocmd-patterns を参照。
オプション 'suffixes' も参照。
例:
:set wildignore=*.o,*.obj
リストにパターンを追加するときにはコマンド :set+=、リストからパターンを除くときにはコマンド :set-= を使うのがよい。こうすると将来のバー
ジョンで異なった既定値が使われるようになったときに、問題が起きるのを防
げる。
'wildignorecase' 'wic' 'nowildignorecase' 'nowic'
'wildignorecase' 'wic' 切替 (既定ではオフ)
グローバル
オンのとき、ファイル名やディレクトリを補完するときに大文字と小文字が無
視される。
'fileignorecase' が設定されているときは効果は無い。
ワイルドカードの展開にシェルが使用されるとき (特殊文字が含まれていると
き) はこのオプションは適用されない。
'wildmenu' 'wmnu' 'nowildmenu' 'nowmnu'
'wildmenu' 'wmnu' 切替 (既定ではオフ、defaults.vim 内で
オンに設定される)
グローバル
オンのとき、コマンドライン補完が拡張モードで行われる。オプション
'wildchar' で指定されたキー (普通 <Tab>) を打ち込むと補完を開始し、コ
マンドラインのすぐ上に可能性のあるマッチが表示される。
'wildoptions' に "pum" が含まれている場合、補完マッチはポップアップメ
ニューに表示される。それ以外の場合は、コマンドラインのすぐ上に表示さ
れ、最初にマッチしたものがハイライトされる (ステータス行がある場合は上
書きされる)。
<Tab> や CTRL-P /CTRL-N 等の前/次のマッチを表示するキーは、強調部分を
適切なマッチに移動させる。
'wildmode' が有効なときは、"full" が指定されたところで "wildmenu" モー
ドが使われる。"longest" と "list" では "wildmenu" モードは開始されない。
現在のモードは wildmenumode() で確認できる。
1行に収め切れない程マッチがあるときは、{訳注: その後にマッチがあるなら}
文字 ">" が右端に表示され、{訳注: その前にマッチがあるなら} 文字 "<"
が左端に表示される。ステータス行は必要に応じてスクロールする。
"wildmenu" モードは、補完候補の選択に使われないキーが打ち込まれた時点
で終了する。
"wildmenu" がアクティブな間、以下のキーは特別な意味を持つ:
CTRL-P - 前のエントリへ移動
CTRL-N - 次のエントリへ移動
<CR> - メニュー補完時、カーソルがドットの直後にあるとき: サ
ブメニューに移動する。
CTRL-E - 補完を終了し、マッチ選択の前の状態に戻る。
CTRL-Y - 現在選択しているマッチに決定し、補完を停止する。
コマンドライン補完のポップアップメニューを使用しない場合、以下のキーは
特別な意味を持つ:
<Left> <Right> - 前/次のマッチを選択 (CTRL-P/CTRL-N と同じ)
<Up> - ファイル名/メニュー名補完時: 親ディレクトリ/親メ
ニューに移動する。
<Down> - ファイル名/メニュー名補完時: サブディレクトリ/サブ
メニューに移動する。
コマンドライン補完でポップアップメニューを使用する場合、以下のキーは特
別な意味を持つ:
<Up> <Down> - 前/次のマッチを選択 (CTRL-P/CTRL-N と同じ)
<PageUp> - いくつかのエントリを遡ってマッチするものを選択する。
<PageDown> - いくつかのエントリを進んでマッチするものを選択する。
<Left> - ファイル名/メニュー名補完時: 親ディレクトリ/親メ
ニューに移動する。
<Right> - ファイル名/メニュー名補完時: サブディレクトリ/サブ
メニューに移動する。
これにより、メニューがコンソールから扱える console-menus。
<Left> や <Right> キーで、別のマッチに移動するのではなく、カーソルを移
動させたいときは、次のようにする。
:cnoremap <Left> <Space><BS><Left>
:cnoremap <Right> <Space><BS><Right>
:cnoremap <Right> <Space><BS><Right>
現在のマッチの表示には、ハイライトグループ "WildMenu" が使われる
hl-WildMenu。
'wildmode' 'wim'
'wildmode' 'wim' 文字列 (Vimの既定値は "full")
グローバル
オプション 'wildchar' で指定されたキーで開始する補完モード。値は、キー
ワードの4個までのコンマ区切りのリストである。それぞれのキーワードで、
連続して 'wildchar' を使ったときの動作を指定する。1個目のキーワードが
'wildchar' を1回目に使ったときの動作を指定し、2個目のキーワードが2回目
の動作を指定、等となる。
各部分はコロンで区切られたリストで次の可能な値で構成される:
"" 最初のマッチのみを補完する。
"full" 次のマッチを完全に補完する。最後のマッチの次には元の文
字列が使われ、その次は再び最初のマッチが補完される。
'wildmenu' が有効ならばそれも開始する。
"longest" 共通する最長の文字列までが補完される。それ以上長い文字
列を補完できないときは、次の候補に移る。
"list" 複数のマッチがあるときは、全てのマッチを羅列する。
"lastused" バッファ名が補完され1より多くマッチした時、バッファを
最終利用時刻でソートする (カレントバッファ以外)。
マッチが1個しかないときは、どの場合でも完全に補完される。
コロン区切りで利用できる例:
"longest:full" "longest" と似ているが、'wildmenu' が有効ならばそれも
開始する。次の完全なマッチを補完しない。
"list:full" 複数のマッチがあるときは、全てのマッチを羅列し、最初の
マッチを補完する。
"list:longest" 複数のマッチがあるときは、全てのマッチを羅列し、共通す
る最長の文字列までが補完される。
"list:lastused" 複数のバッファが一致する場合、一致する全バッファを最終
利用時刻でソートし羅列する (カレントバッファ以外)。
例:
:set wildmode=full
最初のマッチ、次のマッチ...を完全に補完する (既定値) :set wildmode=longest,full
共通する最長の文字列を補完し、次からマッチを完全に補完する :set wildmode=list:full
全てのマッチを羅列し、そして最初のマッチを完全に補完する :set wildmode=list,full
補完せずに全てのマッチを羅列し、次からマッチを完全に補完する :set wildmode=longest,list
共通する最長の文字列を補完し、次から他の候補を羅列するより詳しくは cmdline-completion を参照。
'wildoptions' 'wop'
'wildoptions' 'wop' 文字列 (既定では "")
グローバル
コマンドライン補完 cmdline-completion の挙動を変える単語のリスト。
以下の値をサポートする:
fuzzy 補完のマッチ検索にファジーマッチ fuzzy-matching を使
用する。この値が設定された場合、補完でワイルドカード展
開が使用されなくなる。マッチ結果はアルファベット順ソー
トの代わりに "ベストマッチ" のソートになる。
これはワイルドカード展開より多くマッチすることがある。
現在、ファイルとディレクトリ名にはファジーマッチベース
の補完はサポートされておらず、かわりにワイルドカード展
開が使用される。
pum 補完のマッチの表示に補完ポップアップメニュー
ins-completion-menu と同じようにポップアップメニュー
を使う。
tagfile CTRL-Dでマッチするタグを一覧表示するとき、タグの種類と
そのタグのファイル名が表示される。1行につき1つのマッチ
が表示される。よく使われるタグの種類は次の通り:
d #define マクロ
f 関数
'winaltkeys' 'wak'
'winaltkeys' 'wak' 文字列 (既定では "menu")
グローバル
{VimのWin32版、Motif版、GTK版、Photon GUI版でのみ有効}
GUI版では、メニュー内で下線付きで表示されている文字とALTキーを組み合わ
せて使うことで、メニューの項目にアクセスできるものがある。これはマッピ
ングや特殊な文字の入力にALTキーを使うことと衝突する。このオプションは、
そのときの動作を指定する。
no ALTキーをメニューに使わない。ALTキーを使った組み合わせはマッピ
ングに使えるが、自動的にメニューの操作に使われることはない。こ
のときメニューの操作は、コマンド :simalt で可能である。
yes ALTキーの扱いはウィンドウシステムに任される。ALTキーとのキーの
組み合わせは、マッピングには使えない。
menu メニューのショートカットキーになっている文字と組み合わせてALT
キーを使うとウィンドウシステムが扱うが、他のキーはマッピングに
使える。
オプション 'guioptions' からフラグ 'm' が取り除かれ、メニューが無効に
なっていると、ALT キーはメニューには全く使われない。
このオプションは<F10>には適用されない; Win32版とGTK版では、マッピング
されていない限り<F10>を押すとメニューが選択される。
'wincolor' 'wcr'
'wincolor' 'wcr' 文字列 (既定では "")
ウィンドウについてローカル
通常の色 hl-Normal の代わりにこのウィンドウに使用するハイライトグルー
プ名。
'window' 'wi'
'window' 'wi' 数値 (既定では: 画面の高さ - 1)
グローバル
ウィンドウが1つだけで、このオプションの値が 'lines' - 1 より小さいと
き、CTRL-F と CTRL-B にこのウィンドウの高さが使われる。'window' -
2 行(ただし最小値は1行)だけ画面がスクロールする。
'window' が 'lines' - 1 に等しいとき、CTRL-F と CTRL-B は折り返された
行を考慮したより賢い方法でスクロールする。
Vimウィンドウをリサイズするときに、このオプションの値が1より小さいか
'lines' 以上ならば 'lines' - 1 に設定される。
Note: Vim のウィンドウの高さと混同しないこと。それには 'lines' を利用
する。
'winfixbuf'
'winfixbuf' 'wfb' 切替 (既定ではオフ)
ウィンドウについてローカル
有効にすると、ウィンドウとそれが表示しているバッファがペアになる。
例えば、:edit を使用してバッファを変更しようとすると失敗する。
ウィンドウのバッファを変更する :cnext のような他のコマンドも
'winfixbuf' が有効なウィンドウをスキップする。ただし、Ex コマンドに
"!" 修飾子がある場合は、バッファを強制的に切り替えることができる。
'winfixheight' 'wfh' 'nowinfixheight' 'nowfh'
'winfixheight' 'wfh' 切替 (既定ではオフ)
ウィンドウについてローカル local-noglobal
'equalalways' をオンにしてウィンドウを開閉したとき、ウィンドウの高さを
保つ。CTRL-W_=に対しても同様。preview-windowとquickfix-windowに
対してはデフォルトでオンになる。
これをオンにしていても、利用できる高さが不足している場合には高さが変わ
る。
'winfixwidth' 'wfw' 'nowinfixwidth' 'nowfw'
'winfixwidth' 'wfw' 切替 (既定ではオフ)
ウィンドウについてローカル local-noglobal
'equalalways' がオンになっていてウィンドウを開閉したとき、ウィンドウの
幅を保つ。CTRL-W_=に対しても同様。
これをオンにしていても、利用できる幅が不足している場合には幅が変わる。
'winheight' 'wh' E591
'winheight' 'wh' 数値 (既定では 1)
グローバル
カレントウィンドウの行数の最小値。これは絶対的な最小値ではなく、余裕の
ないときには行数はこれよりも少なくなる。この指定より小さいウィンドウに
フォーカスが移動すると、他のウィンドウの行数を減らしてそのウィンドウを
大きくする。
通常の編集時には 'winheight' を小さい値にしておくこと。
値を 999 にすると、常にカレントウィンドウが画面のほとんどを占め、ほか
のウィンドウは 'winminheight' の高さになる。
(ただしこうすると ":all" を使ったときウィンドウが2つしか作られないとい
う難点もある)。"vim -o 1 2 3 4" としたとき2個のウィンドウしか作られな
いのを避けるには、イベント VimEnter を使って、スタートアップが行われ
た後にこのオプションを設定すればよい:
au VimEnter * set winheight=999
最小値は1。カレントウィンドウの高さを変更するコマンドの後では、ウィンドウの高さは
調整されない。
'winheight' はカレントウィンドウに適用される。他のウィンドウの高さの最
小値の設定には、'winminheight' を使うこと。
'winminheight' 'wmh'
'winminheight' 'wmh' 数値 (既定では 1)
グローバル
カレントウィンドウではないウィンドウの高さの最小値。これは絶対的な最小
値であり、ウィンドウは決してこれより低くはならない。
0 に設定すると、ウィンドウは必要に応じて高さゼロに「潰される」 (つまり、
ステータス行のみになる)。ウィンドウがアクティブになると、高さは最低 1
行にはなる (カーソルの居場所が必要なため)。
カレントウィンドウの高さの最小値の設定には、'winheight' を使うこと。
このオプションの効果があるのは、ウィンドウを小さくするときだけである。
大きな値を使わないこと。そうするとウィンドウを幾つも開いたときにエラー
になる。値は 0 から 3 までが適当である。
'winminwidth' 'wmw'
'winminwidth' 'wmw' 数値 (既定では 1)
グローバル
カレントウィンドウではないウィンドウの幅の最小値。これは絶対的な最小値
であり、ウィンドウは決してこれより狭くはならない。
0 に設定すると、ウィンドウは必要に応じて幅ゼロに「潰される」 (つまり、
垂直分割の区切りのみになる)。ウィンドウがアクティブになると、幅は最低
1 列にはなる (カーソルの居場所が必要なため)。
カレントウィンドウの幅の最小値の設定には、'winwidth' を使うこと。
このオプションの効果があるのは、ウィンドウを小さくするときだけである。
大きな値を使わないこと。そうするとウィンドウを幾つも開いたときにエラー
になる。値は 0 から 12 までが適当である。
'winptydll'
'winptydll' 文字列 (既定では "winpty32.dll" または "winpty64.dll")
グローバル
{Vim が MS-Windows 上で terminal 機能付きでコンパイ
ルされたときのみ有効}
:terminal コマンドで使われる winpty 共有ライブラリの名前を指定する。
デフォルトは Vim が 32-bit 用もしくは 64-bit 用向けにビルドされている
かどうかに依存する。もしも見つからなければ、"winpty.dll" にフォールバッ
クしようとする。
環境変数は :set_env で展開される。
セキュリティ上の理由から、このオプションを modeline または sandbox
内で設定することはできない。
'winwidth' 'wiw' E592
'winwidth' 'wiw' 数値 (既定では 20)
グローバル
カレントウィンドウの列数の最小値。これは絶対的な最小値ではなく、余裕の
ないときには列数はこれよりも少なくなる。カレントウィンドウの列数が指定
したものより少ないときは、他のウィンドウの列数を減らしてそれを増やす。
カレントウィンドウが常に画面を埋めるようにするには、999 に設定すること。
普通の編集時には小さい値に設定すること。
カレントウィンドウの幅を変更するコマンドの後では、ウィンドウの幅は調整
されない。
'winwidth' はカレントウィンドウに適用される。他のウィンドウの幅の最小
値の設定には、'winminwidth' を使うこと。
'wrap' 'nowrap'
'wrap' 切替 (既定ではオン)
ウィンドウについてローカル
このオプションは、テキストの表示方法を変える。これはバッファ内のテキス
トには変更を与えない。それについてはオプション 'textwidth' を参照。
オンのときは、ウィンドウの幅より長い行は折り返され、次の行に続けて表示
される。オフのときは、折り返しは行われず、長い行は一部のみが表示される。
カーソルが表示されていない部分に移動すると、画面は水平スクロールする。
行の分割は、必要であれば単語の中ででも行われる。折り返しを単語の境界で
行うには、'linebreak' を参照。
水平スクロールをもっと便利にするには、次のようにしてみるとよい。
:set sidescroll=5
:set listchars+=precedes:<,extends:>
'sidescroll'、'listchars' や wrap-off を参照。:set listchars+=precedes:<,extends:>
オプション 'diff' がオンの場合、モードライン modeline からこのオプ
ションを設定することはできない。
'wrapmargin' 'wm'
'wrapmargin' 'wm' 数値 (既定では 0)
バッファについてローカル
ウィンドウの右端からこの文字数だけ離れたところで折り返しが始まる。この
境界を超えてテキストを入力すると、<EOL> が挿入され、挿入は次行に続く。
'number' や 'foldcolumn' など幅をとるオプションを使用していると、テキ
ストの幅がこの値より少なくなる。これはVi互換の動作である。
オプション 'textwidth' が非0 のときは、このオプションは使われない。
このオプションは 'paste' オプションがオンになった時には0が設定され、
'paste' オプションがリセットされた際には復元される。
'formatoptions' と ins-textwidth も参照。
'wrapscan' 'ws' 'nowrapscan' 'nows'
'wrapscan' 'ws' 切替 (既定ではオン) E384 E385
グローバル
検索がファイル末尾まで進んだら、ファイル先頭から再び検索する。スペリン
グミスを検索する]sと[sにも適用される。
'write' 'nowrite'
'write' 切替 (既定ではオン)
グローバル
ファイルの書き込みを有効にする。オフのときは、書き込みができない。読込
専用モードに使える。ただしファイルの編集は可能である。コマンドライン引
数 -m や -M を使ってオフに設定できる。テキストをフィルタにかけるこ
とも可能であり、一時ファイルの書き込みも可能である。
'writeany' 'wa' 'nowriteany' 'nowa'
'writeany' 'wa' 切替 (既定ではオフ)
グローバル
いかなるファイルも "!" なしに書き込みができる。
'writebackup' 'wb' 'nowritebackup' 'nowb'
'writebackup' 'wb' 切替 (+writebackup 機能付きでコンパイルされたなら
既定値はオン、そうでないなら既定値はオフ)
グローバル
ファイルの上書きの前にバックアップを作る。オプション 'backup' がオンで
ない限り、バックアップは上書きに成功した後削除される。
警告: このオプションをオフにするということは、すなわち、何らかの理由で
Vim がバッファを正しく保存できなかったときに、そのまま Vim を終了して
しまうと、あなたは元のファイルと新しく書いた内容の両方を失うということ
を意味する。例えばファイルシステムが一杯で書き込みができないような場合
のみこのオプションをオフにすること (そして、保存が成功するまで Vimを終
了してはならない)。
他の説明は backup-table を参照。
'backupskip' のパターンがマッチしたら、バックアップは作られない。
バックアップが新しいファイルになるか、元のファイルがリネームされる (そ
して新しいファイルが書かれる) かは 'backupcopy' に依存する。
NOTE: このオプションは、'compatible' がオンになると既定値に設定される
ので注意。
'writedelay' 'wd'
'writedelay' 'wd' 数値 (既定では 0)
グローバル
打ち込まれた文字が画面に送られるまでの遅延時間を、ミリ秒単位で指定す
る。非0 のときは、文字は画面に一つ一つ送られる。これはデバッグ用のオプ
ションである。
'xtermcodes' 'noxtermcodes'
'xtermcodes' 切替 (既定ではオン)
グローバル
termresponse メカニズムで xterm のパッチレベル141以上を検出し、かつ、
このオプションが設定されている場合、Vim は実際の端末のキーコードと色数
を端末に要求する。これは、termlib/terminfo エントリから取得できない端
末の様々な構成オプションの面倒を見るものである。xterm-codes 参照。
副作用として、t_Co が変更されると Vim が表示を再描画する。
vim:tw=78:ts=8:noet:ft=help:norl: