Vim documentation: options
main help file
*options.txt* For Vim バージョン 7.3. Last change: 2010 Aug 15
VIM REFERENCE MANUAL by Bram Moolenaar
オプション *options*
1. オプションの設定 |set-option|
2. オプションの自動設定 |auto-setting|
3. オプションの要約 |option-summary|
オプションの概要については、help.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バージョンでターミナルコードを変更するのは便利とは
言えない...
*E518* *E519*
:se[t] {option}? {option} の値を表示する。
:se[t] {option} 切替オプション: セット、すなわちオンに切り替える。
数値オプション: 値を表示する。
文字列オプション: 値を表示する。
:se[t] no{option} 切替オプション: リセット、すなわちオフに切り替える。
*:set-!* *:set-inv*
:se[t] {option}! または
:se[t] inv{option} 切替オプション: オンとオフを切り替える。 {Vi にはない}
*:set-default* *:set-&* *:set-&vi* *:set-&vim*
:se[t] {option}& オプションを既定値に設定する。オプション 'compatible'
のその時点の値によって違うかもしれない。 {Vi にはない}
:se[t] {option}&vi オプションをViの既定値に設定する。 {Vi にはない}
:se[t] {option}&vim オプションをVimの既定値に設定する。 {Vi にはない}
:se[t] all& ターミナルオプション以外の全てのオプションを既定値に設
定する。オプション 'term', 'lines' と 'columns' の値は
変更されない。 {Vi にはない}
*:set-args* *E487* *E521*
:se[t] {option}={value} または
:se[t] {option}:{value}
数値および文字列オプションの値を {value} に設定する。
数値オプションの値は、10進数、(0x を頭に付けて) 16進数、
または ('0' を頭に付けて) 8進数で指定できる (16進数と8
進数は、関数 strtol() を持つマシンでのみ利用可能)。
オプション 'wildchar' で指定された文字 (既定では
<Tab>、オプション 'compatible' がオンにならば CTRL-E)
を打ち込むと、古い値を挿入できる。|cmdline-completion|
を参照。
{option} と '=' の間には空白を入れることができる。それ
らは無視される。'=' と {value} の間に空白を入れてはい
けない。
{value} 内での空白や '\' の使用に関しては、
|option-backslash| を参照 (訳注: 文書先頭も参照)。
:se[t] {option}+={value} *:set+=*
数値オプションに対しては {value} だけその値を増す。文
字列オプションに対しては後ろに {value} を追加する。オ
プションがコンマ区切りのリストのときは、値が空でない限
り、元の値と {value} の間にコンマが付け加えられる。
オプションがフラグのリストであるときは、冗長なフラグは
取り除かれる。すでに入っているフラグを加えようとしたと
きは、そのオプションの値は変わらない。
< 上の |:set-args| も参照。
{Vi にはない}
:se[t] {option}^={value} *:set^=*
数値オプションに対してはその値を {value} 倍する。文字
列オプションに対しては前に {value} を追加する。オプショ
ンがコンマ区切りのリストのときは、{value} と元の値の間
にコンマが付け加えられる。
上の |:set-args| も参照。
{Vi にはない}
:se[t] {option}-={value} *:set-=*
数値オプションに対しては {value} だけその値を減らす。
文字列オプションに対しては {value} を (それが含まれて
いたら) 取り除く。
そのとき {value} が含まれていな
くても、警告やエラーは出ない。オプションがコンマ区切り
のリストであり、取り除くオプションが唯一の値でない限り、
間のコンマも削除される。
オプションがフラグのリストであるときは、{value} は値の
中に現れるままに、正確に指定しなければならない。問題
が起こるのを避けるために、フラグを取り除くときは1個ず
つ指定すること。
上の |:set-args| も参照。
{Vi にはない}
1回のコマンド ":set" に対し、複数の {option} を引数に指定できる。例:
引数の中にエラーがあると、エラーメッセージが現れ、エラーの元になったオプション
以降は無視される。
*:set-verbose*
オプション 'verbose' の値が非0 なら、オプションの値を表示するとき、同時に、そ
のオプションが最後に設定されたのはどこであったかも分かる。例:
これは特定のオプション名が指定されたときのみ機能する。コマンド ":set all" や、
引数のないコマンド ":verbose" ではメッセージが現れない。
オプションが手動で設定されていると、メッセージ "Last set" は現れない。
オプションが関数やユーザコマンド、オートコマンド autocommand の実行中に設定さ
れたときは、それらが定義されているスクリプト名が報告される。
Note 'compatible'を設定すると副作用として他のオプションも設定されることがある。
以下のような特殊なメッセージがある:
Last set from modeline
モードライン |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
オプションを評価中にエラーが発生し、クリアされた。
{Vi mが |+eval| 機能付きでコンパイルされたときのみ有効}
*:set-termcap* *E522*
Termcap オプションを設定するには、{option} に "t_xx" の形式を使ってもよい。こ
れは termcap による値を上書きする。これはマッピングの中で利用することもできる。
"xx" の部分が特別な文字を含むときは、<t_xx> の形式を使うこと:
これは特殊なコードを普通のキーに変換する際にも使われる。例えば Alt-b が <Esc>b
を出力するなら、次のようにすること。
(ここで ^[ は本物の <Esc> である。入力には CTRL-V <Esc> を使うこと)
マッピングの利点は、どんなときにも機能することである。
t_xxの形のオプションは安全上の理由により、モードライン|modeline|やサンドボック
ス|sandbox|では設定できない。
コマンド ":set" によるリスト表示の外見は、Viとは違う。長い文字列オプションはリ
ストの終わりに現れる。オプションの数も極めて多い。コマンド "set all" による表
示は、画面に収まらないだろう。そうしたとき、Vimは「継続」プロンプト
|more-prompt| を出す。
*option-backslash*
文字列オプションの値に空白を含めるには、空白の前に '\' を置く必要がある。値に
'\' を含めるには、2個繰り返す。結果的には、オプションの値の中の '\' の数は半分
になる (端数は切り捨て)。
例をいくつか挙げる。
文字 "|" によって、コマンド ":set" を後に続くコマンドと分けることができる。文
字列オプションの値に "|" を含めるには、代わりに "\|" を使うこと。次の例ではオ
プション 'titlestring' の値を "hi|there" に設定している。
しかし次の例では、2個のオプション 'titlestring', 'iconstring' をそれぞれ "hi",
"there" に設定している。
また、ダブルクォート文字はコメントを開始する。オプションの値に'"'を含めるには
'\"'と書くこと。次の例は'titlestring'を'hi "there"'に設定する:
MS-DOSとWin32では、ファイル名の中の '\' は大抵は取り除かれない。正確に言うと、
値にファイル名を取るオプション (環境変数が展開されるもの) では、通常のファイル
名に使われる文字の前の '\' は取り除かれない。しかし、特別な文字 (空白、'\' そ
のもの、コンマ等) の前の '\' は、上で説明した通りの働きをする。
オプションの値が "\\" で始まるときは、特別な状態になる。
最初の例では、始まりの部分の '\' はそのまま保たれている。しかし2番目の例では、
'\' の数は半分になっている。つまり、'\' をそのまま保ちたいときでも、半分にした
いときでも、どちらがよいか指定できることが分かる。3番目の結果は、おそらく希望
通りのものではないだろう。このやり方は避けること。
*add-option-flags* *remove-option-flags*
*E539* *E550* *E551* *E552*
値がフラグのリストからなるオプションもある。そういったオプションにフラグを追加
したいとき、既存の値を変更したくないならば、こうすること。
オプションからフラグを取り除くには、こうすること。
これはオプション 'guioptions' からフラグ 'a' を取り除く。
Note フラグは1個ずつ追加したり取り除いたりするよう注意。オプション
'guioptions' が "ab" という値であるとき、"set guioptions-=ba" は機能しない。な
ぜなら、"ba" という文字列は現れていないからである。
*:set_env* *expand-env* *expand-environment-var*
特定の文字列オプションでは環境変数が展開される。'$' とそれに続く環境変数名
が、その値に置き換えられる (その環境変数が存在するとき)。環境変数が存在しない
とき、'$' とそれに続く変数名は変更を受けない。識別子に使えない non-id 文字 (英
字、数字、'_' 以外) なら、どれでも環境変数名の後に続けることができる。識別子に
使えない文字とそれに続く文字は、環境変数の値の後ろにそのまま追加される。例:
コマンド ":set opt-=値" でオプションから文字列を取り除いたり、コマンド ":set
opt+=値" でオプションに文字列を追加したりするときには、環境変数の展開が行われ
てからそうした操作がなされる。
ローカル変数の扱い *local-options*
いくつかのオプションは、1つのウィンドウや1つのバッファのみに適用される。それぞ
れのウィンドウやバッファは、そうしたオプションの独自のコピーを保持しているため、
独自の値を持つことができる。これにより、あるウィンドウ内では 'list' オプション
をオンにするが、他のウィンドウではオフにする、ということが可能になる。またオプ
ション 'shiftwidth' を、あるバッファ内では 3 にし、他では 4 にすることもできる。
以降では、特定の状況下でそれらのローカルオプションがどうなるかを説明する。実際
には、それらを全て知る必要はない。なぜなら、Vimはおそらくユーザが予想する通り
にオプションの値を使うからである。残念ながら、ユーザの予想通りに働くのは、いく
らか複雑なことである...
ウィンドウを分割すると、ローカルオプションは新しいウィンドウにコピーされて引き
継がれる。そのため、ウィンドウを分割した直後には、2つのウィンドウの内容は同じ
ように見える。
新しいバッファを編集するとき、そのバッファのローカルオプションは初期化されなけ
ればならない。その以前のカレントバッファのローカルオプションは、そのバッファの
みに適用すべきものかもしれないので、新しいバッファには適用されない。その代わり、
バッファについてローカルなオプションにはそれぞれグローバルな値があり、新しいバッ
ファにはそれが適用される。コマンド ":set" によって、ローカルな値とグローバルな
値の両方が変更される。コマンド "setlocal" はローカルな値のみを変更するので、そ
れで指定した値は新しいバッファには適用されない。
すでに編集されているバッファを編集するときは、最後に使われたウィンドウ内のロー
カルオプションが再び使われる。このバッファがこのウィンドウ内ですでに編集されて
いたなら、そのときの値が再び用いられる。そうでなければ、そのバッファが最後に編
集されたウィンドウ内の値が用いられる。
特定のバッファの種類についてウィンドウ内のローカルオプションを設定することも可
能である。同じウィンドウ内で別のバッファを編集するときは、ウィンドウについてロー
カルなオプションを使い続けたくはないだろう。そのためVimはウィンドウについてロー
カルなオプションのグローバルな値を記憶しており、別のバッファの編集時にはそれを
用いる。ウィンドウはそれぞれ、それらの値の独自のコピーを持っている。そのため、
それらのオプションはウィンドウについてはローカルであるが、そのウィンドウ内の全
てのバッファについてグローバルである。それらを用いて、次のようなことが可能であ
る。
こうするとオプション 'list' はバッファ "二つ目" にも適用される。コマンド
":set list" により、グローバルな値もオンになったからである。
今度はバッファ "二つ目" ではオプション 'list' はオフである。なぜならコマンド
":set nolist" がグローバルな値をオフにしたが、コマンド ":setlocal list" はバッ
ファ "一つ目" についてローカルな値をオンにしただけで、":e 二つ目" ではグローバ
ルな値が適用されるからである。 Note 次にこうすると
最後にバッファ "一つ目" を編集したときの通りにオプション 'list' の値が戻るわけで
はないので注意。ウィンドウについてローカルなオプションは、バッファそれぞれに対
して復元されるわけではないからである。
*:setl* *:setlocal*
:setl[ocal] ... コマンド ":set" と似ているが、カレントバッファ/ウィン
ドウについてローカルな値のみを設定する。全てのオプショ
ンがローカルな値を持つわけではない。オプションがローカ
ルな値を持たないときは、グローバルな値が設定される。
引数が "all" のとき: 全てのローカルオプションのローカ
ルな値を表示する。
引数がないとき: 全てのローカルオプションのローカルな値
で、既定値と異なるものを表示する。
特定のローカルオプションを表示するときは、ローカルな値
も表示する。グローバルまたはローカルな切替オプションに
対しては、グローバルな値が表示される場合には、オプショ
ン名の前に "--" が表示される。
グローバルオプションに対しては、グローバルな値が表示さ
れる (しかし、これは将来変更されるかもしれない)。
{Vi にはない}
:setl[ocal] {option}< 値をコピーすることによって{option}のローカルな値をグロ
ーバルな値と同じにする。{Vi にはない}
:se[t] {option}< ローカルな値を空にすることによって{option}のローカルな
値をグローバルな値と同じにする。|global-local|のオプショ
ンに対してだけ意味がある。{Vi にはない}
*:setg* *:setglobal*
:setg[lobal] ... コマンド ":set" と似ているが、ローカルオプションのグロー
バルな値のみを設定し、ローカルな値は変更しない。
オプションの値を表示するときは、グローバルな値が表示さ
れる。
引数が "all" のとき: 全てのローカルオプションのグロー
バルな値を表示する。
引数がないとき: 全てのローカルオプションのグローバルな
値で、既定値と異なるものを表示する。
{Vi にはない}
バッファ/ウィンドウについてローカルなオプションに対して:
コマンド グローバルな値 ローカルな値
:set オプション=値 設定される 設定される
:setlocal オプション=値 なし 設定される
:setglobal オプション=値 設定される なし
:set オプション? なし 表示される
:setlocal オプション? なし 表示される
:setglobal オプション? 表示される なし
ローカルな値を持つグローバルオプション *global-local*
オプションがグローバルであるというのは、一つの値を全てのバッファとウィンドウに
用いるような場合である。いくつかのグローバルオプションでは、ローカルな別の値を
持てると便利である。ローカルな値は、コマンド ":setlocal" で設定できる。すると
コマンド":setlocal" を実行したバッファとウィンドウではローカルな値が用いられる
が、他のバッファでは引き続きグローバルな値が用いられる。
例えば、あなたは2つのウィンドウを開き、両方でC言語のソースファイルを編集してい
るとする。グローバルなオプション 'makeprg' は両方に適用される。そこでウィンド
ウの片方で
とすると、別のウィンドウでも同じ値が用いられる。別のウィンドウに移って
オプション 'makeprg' を設定する必要はない。
しかし、新しいウィンドウでPerlのソースファイルの編集を始めると、'makeprg' に別
の値を設定したくなる。しかしCソースに適用された値を変えたくはない。そんなとき
には次のようにする。
次のようにローカルな値を空にすると、グローバルな値に戻る。
ただし、この方法は文字列オプションにしか使えない。切替オプションには、次のよう
に "<" フラグを使う必要がある。
Note: 非切替オプションの変更で "<" を使うと、グローバルな値がローカルな値にコ
ピーされるが、それはグローバルな値を使うようにするのとは少し違うことに注意 (こ
れは後でグローバルな値が変更されたときに問題になる。--訳注: グローバルな値が変
更されても、"<" でコピーした値までは変更されない。あくまでもローカルな値だか
ら)。次を使うこともできる:
これは 'path'のローカルな値を空にし、グローバルな値が使われるようにする。すな
わち、次と同じことをする:
Note: 将来、値にグローバルとローカルの区別のあるオプションが増えたら、グローバ
ルオプションにコマンド ":setlocal" を使ったときの結果が変わるかもしれない。
ファイルタイプの設定
:setf[iletype] {filetype} *:setf* *:setfiletype*
{filetype} に対してオプション 'filetype' を設定する。
ただし autocommand の中 (入れ子になっているときは、外
側も含めて) でまだ実行されていないときのみ有効である。
これは以下のコマンドの略である。
このコマンドは filetype.vim の中で使われ、オプション
'filetype' が2度設定されて別の設定や構文ファイルが読み
込まれることがないようにしている。
{Vi にはない}
:bro[wse] se[t] *:set-browse* *:browse-set* *:opt* *:options*
:opt[ions] 全てのオプションを表示したり設定するためのウィンドウを
開く。
オプションは機能ごとにまとめられている。
ここではオプションの短い説明が読める。その上で <CR> を
打ち込むと、そのオプションについてのヘルプウィンドウが
開き、詳しい説明が読める。
表示されている値を修正した後に "set" 行の上で <CR> を
打ち込むと、新しい値を設定できる。ウィンドウやバッファ
固有のオプションについては、変更した値は最後に使用した
ウィンドウに適用される。そのウィンドウがヘルプウィンド
ウだったときは、変更した値はヘルプウィンドウの (オプショ
ンウィンドウを抜かして) 1つ下のウィンドウに適用される。
{Vi mが |+eval| 機能と |+autocmd| 機能付きでコンパイル
されたときのみ有効}
*$HOME*
"~" は "$HOME" と同様に扱われるが、こちらは値の先頭にあるか、空白かコンマの後
にあるときのみ認識される。
Unix系のシステムでは "~正和" も使える。これは "正和" というユーザのホームディ
レクトリに置き換えられる。例:
Unix系のシステムでは "${HOME}" という形式も使える。ここで {} の間には識別子に
使えない文字 (訳注: 上を参照) が入ってもよい。 Note これをコマンド "gf" のため
に使いたいなら、文字 '{' と '}' をオプション 'isfname' に追加する必要がある。
NOTE: 環境変数と"~/"の展開はコマンド":set"のときのみ行われる。":let"でオプショ
ンに値を代入するときは展開されない。
Note 展開されるオプションの値の長さ制限に注意。システムごとに異なるが、大抵は
256文字や1024文字等の長さである (訳注: これは半角の場合で、全角では半分)。
*:fix* *:fixdel*
:fix[del] ターミナルオプション 't_kD' (訳注: デリートキー) の値
を設定する。
't_kb' が のとき 't_kD' は
CTRL-? CTRL-H
CTRL-?以外 CTRL-?
(CTRL-? は8進数で 0177、16進数で 0x7f) {Vi にはない}
ターミナルのデリートキーのキーコードが違っているが、バッ
クスペースのキーコードは正しいときは、次のコマンドをファ
イル .vimrc に加えればよい。
これはバックスペースのキーコードが実際に何であっても有
効である。
バックスペースのキーコードが違っていたら、以下のように
する。
ここで "^V" は CTRL-V 、 "<BS>" はバックスペースを表す
(実際に「^」「V」などのキーを押さないこと)。"termname"
にはユーザの使うターミナル名を当てはめる。
<Delete> キーが奇妙なキーコード列 (CTRL-? でも CTRL-H
でもない) を送るときは、コマンド ":fixdel" ではなく以
下の方法を使う。
ここで "^V" は CTRL-V 、 "<BS>" はデリートキーを表す
(実際に「^」「V」などのキーを押さないこと)。"termname"
にはあなたの使うターミナルの種類を当てはめる。
*Linux-backspace*
Note Linuxについての注意: 既定ではバックスペースキーは
CTRL-? を送るが、これは違っている。これを修正するには、
ファイル rc.local に次の行を加える。
*NetBSD-backspace*
Note NetBSDについての注意: バックスペースキーが正しい
キーコードを送らないとき、これを試すこと。
有効だったら、ファイル .Xmodmap に次の行を加えること。
これを有効にするには、再起動する必要がある。
==============================================================================
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>)
{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列
[white] 空白、なくても良い
{options} オプション設定が、空白か ':' で区切られて並んだもので、':' の
間の部分はコマンド ":set" の引数である(空でもよい)
例:
vi:noai:sw=3 ts=6
2つ目の形式は次の通りである (Viのヴァージョンによってはこの形式と互換性がある)。
[text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text]
[text] 任意のテキスト、なくても良い
{white} 1個以上の余白 (<Space> または <Tab>)
{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列
[white] 空白、なくても良い
se[t] "set "または"se " という文字列 ( NOTE 終わりの空白に注意)
{options} オプション設定が空白で区切られて並んだもので、コマンド ":set"
の引数である
: コロン
[text] 任意のテキスト、なくても良い
例:
/* vim: set ai tw=75: */
"vi:" または "|vim:|" または "ex:" の前には空白が必要である。これが "lex:" 等
の普通の言葉を誤認する可能性を低めている。ただし例外があり、 "vi:" と "vim:"
は行頭に来てもよい (バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モー
ドラインとは見なされない ("example:" の略かもしれないから)。
*modeline-local*
オプションは ":setlocal" などで設定できる。そうして設定した値は、そのバッファ
とそれを開いているウィンドウにのみ適用される。モードラインからグローバルオプショ
ンを設定することは不可能ではないが、普通そういうことはしない。2つのウィンドウ
を開いていて、それぞれのファイルが同じグローバルオプションを違う値に設定しよう
としたときは、後に開かれたウィンドウが優先される。
既に読み込まれているファイルを開くときは、モードラインからはウィンドウローカル
なオプションだけが設定される。つまり、ファイルを開いた後に手動でバッファローカ
ルなオプションを変更したら、そのバッファを別なウィンドウで開いてもそのオプショ
ンは変更されないが、ウィンドウローカルなオプションは変更される。
*modeline-version*
モードラインの内容が、Vimのバージョンによって使用可能だったり不可能だったりす
る場合には、"vim:" のところでバージョンを指定できる。
vim{vers}: バージョン {vers} 以降 (そのバージョンを含む)
vim<{vers}: バージョン {vers} より前
vim={vers}: バージョン {vers} のみ
vim>{vers}: バージョン {vers} より後 (そのバージョンを含まない)
{vers} に 600 を指定するとVim 6.0を表す (メジャー・バージョンナンバーの100倍足
すマイナー・バージョンナンバー)。
例えば、Vim 6.0またはそれより新しいバージョンでのみモードラインを使うにはこう
する。
/* vim600: set foldmethod=marker: */
Vim 5.7より古いバージョンでのみモードラインを使うにはこうする
/* vim<570: set sw=4: */
"vim" と ":" の間に空白があってはならない。
モードラインを探す行数はオプション 'modelines' で設定できる。オプション
'modeline' がオフであるかオプション 'modelines' の値が 0 だと、モードラインを
探さない。
Note 1番目の形式では、行全体がオプション指定に使われることに注意。そのため次の
ようにすると、行末の "*/" のためにエラーメッセージが現れる。
/* vi:ts=4: */
その代わり、こうすればよい。
/* vi:set ts=4: */
エラーが発見されると、その行の残りは無視される。
コマンド "set" の引数に ':' を含めたいときは、その前に '\' を置くこと。':' の
前の '\' は取り除かれる。例:
/* vi:set dir=c\:\tmp: */
これはオプション 'dir' を "c:\tmp" に変更する。':' の前に '\' が置かれたとき、
取り除かれるのは1個だけである。だからオプションの値に "\:" を含めたいなら
"\\:" を指定すること。
安全上の理由から、コマンド "set" 以外は使用できない (誰かがテキストファイルで
「トロイの木馬」を作るかもしれないから) 。また、全てのオプションが設定できるわ
けではない。ある種のオプションにはフラグが設定されており、それが使用されるとき
には|sandbox|が有効になる。しかしそれでもモードラインが問題を引き起こす可能性
はわずかに残る。例えば、悪意のある誰かが'textwidth'を5にすると、ファイルの全て
の行が予期せず折り返されてしまう。そのため、信用できないファイルを編集する前に
はモードラインを無効にすること。
例えばmail ftpluginはそれを行っている。
ヒント: ファイルを読み込みときにオプション設定以外を行いたいなら、ファイル内の
特定の文字列を調べる autocommand を定義すればよい。例:
そして "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"で設定できるかどうか判定するにはこのようにする:
これは隠しオプションに対してもtrueを返す。オプション"foo"が本当にサポートされ
ているかを判定するにはこのようにする:
*E355*
|Q_op| にはオプションの短い説明付きの表があり、そこからヘルプにジャンプできる。
*'aleph'* *'al'* *aleph* *Aleph*
'aleph' 'al' 数値 (既定値はMS-DOSでは128、それ以外では224)
グローバル
{Vi にはない}
{Vi mが |+rightleft| 機能付きでコンパイルされたときの
み有効}
ヘブライ語アルファベットの最初の文字を表すASCIIコード。Insertモード
(オプション 'hkmap' がオンのとき) と Command-lineモード (CTRL-_ を打ち
込んだとき) の両方において、ヘブライモードのキーボード配列をマッピング
するルーチンは、[aleph..aleph+26] の範囲のヘブライ文字を出力する。
'aleph'=128 はPCコード、'aleph'=224 は ISO 8859-8 に使われる。
|rileft.txt| を参照。
*'allowrevins'* *'ari'* *'noallowrevins'* *'noari'*
'allowrevins' 'ari' 切替 (既定ではオフ)
グローバル
{Vi にはない}
{Vi mが |+rightleft| 機能付きでコンパイルされたときの
み有効}
InsertモードとCommand-lineモードで CTRL-_ を使用可能にする。これは既定
ではオフになっている。ユーザが間違って SHIFT-_ ではなく CTRL-_ を打ち
込み、右から左に書いていくモードに入って抜けられなくなる事態を防ぐため
である。オプション 'revins' を参照。
NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな
るので注意。
*'altkeymap'* *'akm'* *'noaltkeymap'* *'noakm'*
'altkeymap' 'akm' 切替 (既定ではオフ)
グローバル
{Vi にはない}
{Vi mが |+farsi| 機能付きでコンパイルされたときのみ有
効}
オンのとき、2番目の言語が Farsi になる。オプション 'allowrevins' がオ
ンならば、Insertモードでは CTRL-_ で Farsi と英語のキーボードマップを
切り替えられる。
オフのとき、キーボードマップはヘブライ語と英語で切り替えられる。これは
普通の状態、つまり英語モード (左から右に書く言語のモード) と既定の第2
言語である Farsi またはヘブライ語モード (右から左に書く言語のモード)を
切り替えた上でVimを開始するのに便利である。|farsi.txt| を参照。
*'ambiwidth'* *'ambw'*
'ambiwidth' 'ambw' 文字列 (既定では"single")
グローバル
{Vi にはない}
{Vi mが|+multi_byte|機能付きでコンパイルされたときのみ
有効}
'encoding'が"utf-8"などユニコードエンコーディングのときのみ効果がある。
East Asian Width Class Ambiguous な文字(ユーロ、登録商標記号、著作権記
号、ギリシャ文字、キリル文字など)をどう扱うかを定める。
現在のところ、設定可能な値は次の2通りである:
"single": US-ASCIIの文字と同じ幅を使う。これはほとんどのユーザに
とって期待どおりになる。
"double": ASCII文字の2倍の幅を使う。
*E834* *E835*
"double" は 'listchars' や 'fillchars' に指定された文字が全角幅になっ
てしまう場合は使えません。
これらの文字のグリフの幅を、旧い/伝統的なCJKエンコーディングで何オク
テットを占めるかだけによって決めているCJKフォントがたくさんある。その
エンコーディングではユーロ、登録商標記号、ギリシャ文字、キリル文字は2
オクテットで表現されるので、それらのフォントはこれらの文字に「wideな」
グリフを当てている。これはテキストファイルで表を作るための罫線文字にも
あてはまる。そのためGUI版のVimにCJKフォントを使うときや、CJKフォント
を使うターミナル(エミュレータ)の中でVimを実行するとき(またはオプション
"-cjkwidth"つきで起動されたxtermの中でVimを実行するとき)にはこのオプ
ションを"double"にして、Vimが認識する幅をフォントのグリフの幅に合わせ
なければならない。CJKのWindows 9x/MEやWindows 2k/XPでもシステムのロケー
ルがCJKロケールのどれかに設定されている場合は多分"double"にしなければ
ならないだろう。
Unicode Standard Annex #11 (http://www.unicode.org/reports/tr11)を参照。
*'antialias'* *'anti'* *'noantialias'* *'noanti'*
'antialias' 'anti' 切替 (既定ではオフ)
グローバル
{Vi にはない}
{Vi mがMac OS XでGUIを有効にしてコンパイルされたときの
み有効}
このオプションはMac OS X v10.2以降の上でGUI版のVimを使うときだけ効果が
ある。これがオンであるとなめらかな(アンチエイリアスされた)フォントが使
われる。このフォントはある種のディスプレイ上、あるサイズでは読み易くな
る。
'guifont'が既定値(空文字列)のときこのオプションを設定すると問題が発生
することがある。
*'autochdir'* *'acd'* *'noautochdir'* *'noacd'*
'autochdir' 'acd' 切替 (既定ではオフ)
グローバル
{Vi にはない}
{Vi mのコンパイル時に有効にされたときのみ有効。使用で
きるかどうかは exists("+autochdir") で確認できる}
これがオンであるとファイルを開くとき、バッファを切り替えるとき、バッファ
を削除するとき、ウィンドウを開閉するときに毎回作業ディレクトリが変更さ
れる。開かれた/選択されたファイルを含んでいるディレクトリがカレントデ
ィレクトリになる。
このオプションはSun ONE Studio 4 Enterprise Editionとともにリリースさ
れたVimとの後方互換性のために提供されている。
Note: このオプションがオンになっていると動かないプラグインがある。
*'arabic'* *'arab'* *'noarabic'* *'noarab'*
'arabic' 'arab' 切替 (既定ではオフ)
ウィンドウについてローカル
{Vi にはない}
{Vi mが|+arabic|機能付きでコンパイルされたときのみ
有効}
アラビア語のテキストを編集するときにこのオプションを設定することができ
る。
このオプションを設定すると次のことが行われる:
- 'termbidi'がオンでない限り、オプション'rightleft'をオンにする。
- 'termbidi'がオンでない限り、オプション'arabicshape'をオンにする。
- オプション'keymap'を"arabic"に設定する。これによってインサートモード
でCTRL-^を押すと英語とアラビア語のキーマッピングがトグルする。
- オプション'delcombine'をオンにする。
アラビア語のテキストを編集するには'encoding'が"utf-8"でなければならな
いことに注意。
このオプションをオフにすると次のことが行われる:
- 'rightleft'をオンにする
- 'keymap'の使用を無効にする(その値は変更しない)
'arabicshape'と'delcombine'はオフにならない(これらはグローバルオプショ
ンである)。
|arabic.txt|も参照。
*'arabicshape'* *'arshape'*
*'noarabicshape'* *'noarshape'*
'arabicshape' 'arshape' 切替 (既定ではオン)
グローバル
{Vi にはない}
{Vi mが|+arabic|機能付きでコンパイルされたときのみ
有効}
これがオンで'termbidi'がオフになっているとアラビア語を表示するのに必要
な文字表示補正が行われる。本質的には字形作成(shaping)が有効になる。こ
の用語は次の事を含む広い用語である。
a) 単語の中の位置(初期、中間、最終、孤立)によって文字を変更/変形させ
る。
b) 文字合成機能の有効化
c) ある文字の組み合わせの有効化
これが無効になっていると、表示がそれぞれの文字の本来の孤立形になる。
アラビア語は他にも設定が必要な複雑な言語である。より詳しくは
|arabic.txt|を参照。
*'autoindent'* *'ai'* *'noautoindent'* *'noai'*
'autoindent' 'ai' 切替 (既定ではオフ)
バッファについてローカル
新しい行を開始したとき (Insertモードで <CR> を打ち込むか、コマンド "o"
や "O" を使ったとき)、新しい行のインデントを現在行と同じくする。新しい
行で <BS> か CTRL-D 以外を打ち込まずに <Esc>、CTRL-O か <CR> を打ち込
むと、その行のインデントは削除される。'cpoptions'にフラグ'I'が入ってい
ないかぎり、カーソルを他の行に移動させても同様である。
オプション 'autoindent' がオンのときは、テキストの整形処理 (コマンド
"gq" を使ったり、挿入モードで 1行の文字数がオプション 'textwidth' で指
定した数に届いたとき) には最初の行のインデントが使われる。
オプション 'smartindent' かオプション 'cindent' がオンのときは、インデ
ントの方法は違ってくる。
オプション 'paste' がオンのときは 'autoindent' はオフになる。
{Vi との微妙な違い: <Esc> または <CR> を打ち込んでインデントが削除され
た後、上下に移動した後のカーソル位置は削除されたインデントの後ろになる。
Viでは削除されたインデントの中のどこかになる}
*'autoread'* *'ar'* *'noautoread'* *'noar'*
'autoread' 'ar' 切替 (既定ではオフ)
グローバルまたはバッファについてローカル |global-local|
{Vi にはない}
ファイルがVimの内部では変更されてないが、Vimの外部で変更されたことが判
明したとき、自動的に読み直す。ファイルが削除されたときにはこのようには
ならない。 |timestamp|
このオプションがローカルな値を持つとき、再びグローバルな値を使うように
するには次のようにする。
*'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} の移動先が別のファイルのとき、ファ
イルが変更されているなら書き込む。
Note 'autowrite' が適用されないコマンドもあることに注意。それについて
はオプション 'autowriteall' を参照。
*'autowriteall'* *'awa'* *'noautowriteall'* *'noawa'*
'autowriteall' 'awa' 切替 (既定ではオフ)
グローバル
{Vi にはない}
オプション 'autowrite' と似ているが、さらにコマンド ":edit", ":enew",
":quit", ":qall", ":exit", ":xit", ":recover" を実行したときや、Vimの
ウィンドウを閉じるときも、ファイルが変更されているなら保存する。このオ
プションをオンにすると、同時に 'autowrite' もオンになったような動作に
なる (訳注:このオプションは 'autowrite' の適用されるコマンド全てに適用
されるので)。
*'background'* *'bg'*
'background' 'bg' 文字列 (既定は "dark" または "light")
グローバル
{Vi にはない}
値が "dark" のときは、Vimは暗い背景によく合う色を使おうとする。値が
"light" のときは、Vimは明るい背景によく合う色を使おうとする。その他の
値は無効である。
Vimは使われているターミナルの種類に従って既定の値を定めるが、常に正し
いとは限らない。
このオプションを変更しても背景色は変わらない。これはただVimに背景色が
どのようなものかを伝えるだけである。背景色の変更には |:hi-normal| を参
照。
オプション 'background' が変更されると、Vimは既定の色設定グループをを
その値に合わせて調整する。しかし構文強調表示に使われる色設定は変化しな
い。 *g:colors_name*
カラースキームが読み込まれているとき (つまり変数 "g:colors_name" が設定さ
れているとき) 'background' を変更するとカラースキームが再び読み込まれ
る。カラースキームが 'background' に対応していればこれは適用される。し
かしカラースキームが 'background' 自体を設定しているときは効果がない。
必要ならば変数 "g:colors_name" を消去すること。
'background' を次のようにして既定値に戻したとき、
Vimはその値を推測する。GUI版ならばうまくいくはずだが、そうでなければ正
しい値を推測できないかもしれない。
GUIを開始したとき、'background' の既定値は "light" である。値がファイ
ル .gvimrc で定められておらず、Vimが背景色は実際は暗いと判断したときは、
'background' は "dark" になる。しかしこれは .gvimrc が読み込まれた「後」
に行われる (実際の背景色を知るためにウィンドウが開かれる必要があるか
ら)。これを避けるには、コマンド ":gui" を .gvimrc の中の 'background'
の値が使われる前に置いて (例えば ":syntax on" の前) GUIウィンドウを強
制的に開かせればよい。
このオプションは普通ファイル .vimrc 内で設定される。設定はターミナル名
によるかもしれない。例:
このオプションが設定されると、強調表示の既定の設定が変更される。他の設
定を使いたいなら、'background' を設定した「後」にコマンド ":highlight"
を置くこと。
このオプションはファイル "$VIMRUNTIME/syntax/syntax.vim" 内でも、構文
強調表示のための色を選択するのに使われる。このオプションを設定した後は
syntax.vim を再読み込みしないと結果が分からない。これにはコマンド
":syntax on" を実行すればよい。
*'backspace'* *'bs'*
'backspace' 'bs' 文字列 (既定では "")
グローバル
{Vi にはない}
Insertモードでの <BS>, <Del>, CTRL-W, CTRL-U の働きに影響する。値はキー
ワードのコンマ区切りのリストである。それぞれのキーワードがバックスペー
スの働く対象を定めている。
値 効果
indent autoindent を超えてバックスペースを働かせる
eol 改行を超えてバックスペースを働かせる (行を連結する)
start 挿入区間の始めでバックスペースを働かせるが CTRL-W と CTRL-U は
挿入区間の始めでいったん止まる
値が空のときは、バックスペースの働きはVi互換になる。
バージョン 5.4 またはそれ以前との互換性を保つには次のようにする。
値 効果
0 ":set backspace=" と同じ (Vi互換)
1 ":set backspace=indent,eol" と同じ
2 ":set backspace=indent,eol,start" と同じ
<BS> や <Del> で望み通りの動作ができないときは |:fixdel| を参照。
NOTE: このオプションは、オプション 'compatible' がオンのときは "" にな
るので注意。
*'backup'* *'bk'* *'nobackup'* *'nobk'*
'backup' 'bk' 切替 (既定ではオフ)
グローバル
{Vi にはない}
ファイルを上書きする前にバックアップを作る。書き込みが成功してもバック
アップはそのまま取っておく。バックアップを取っておきたくはないが、書き
込み中にはバックアップが欲しいときには、このオプションをオフにしてオプ
ション 'writebackup' をオンにすること (既定ではそうなっている)。全くバッ
クアップが要らないなら両方をオフにすること (ユーザのファイルシステムが
ほとんど満杯ならこうするとよい)。詳しくは |backup-table| を参照。
どちらにしてもオプション 'backupskip' のパターンがマッチすると、バック
アップは作られない。オプション 'patchmode' がオンのときは、バックアッ
プはリネームされてファイルの最も古いバージョンになることがある。
NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな
るので注意。
*'backupcopy'* *'bkc'*
'backupcopy' 'bkc' 文字列 (UnixでのViの既定値: "yes" 、それ以外: "auto")
グローバル
{Vi にはない}
ファイルの書き込みをしてバックアップが作られるとき、その方法をこのオプ
ションで指定する。このオプションはコンマで区切られた単語のリストである。
主な値は次の通り:
"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" が挙げられる。
コピーの方法のときは、元のファイルの中身はいったん空になり、そこに新し
いテキストが書き込まれる。つまり、元のファイルの保護ビット、ファイル所
有者やシンボリックリンクは変更されない。しかし、新しく作られることにな
るバックアップファイルは、ファイルを編集したユーザの所有となる。またバ
ックアップファイルの属するグループは、元のファイルと同じグループになる。
これが失敗すると、他の属性と同様に、そのグループの保護ビットが設定され
る。
リネームの方法のときは別の結果になる。バックアップファイルは元のファイ
ルと同じ属性を持ち、新しく書き出されたファイルは、ファイルを編集したユー
ザの所有となる。開いたファイルがハードリンクまたはシンボリックリンクだっ
た場合でも、新しく書き出されたファイルはリンクにならない!だから値が
"auto" のとき、ファイルがリンクならリネームを行わないのである。新しく
書き出されたファイルの所有者と属するグループは、元のファイルと同じとし
て設定される。しかしシステムがこうすることを許可しないかもしれない。そ
の場合、値が "auto" ならもうファイルのリネームをしようとはしない。
*'backupdir'* *'bdir'*
'backupdir' 'bdir' 文字列 (Amigaでの既定値: ".,t:",
MS-DOSとWin32での既定値: ".,c:/tmp,c:/temp"
Unixでの既定値: ".,~/tmp,~/")
グローバル
{Vi にはない}
値は、バックアップファイル用ディレクトリの、コンマ区切りのリストである。
- バックアップファイルは、リスト内の、使用可能な最初のディレクトリの中
に作られる。Vim はそのディレクトリを作成しないので、存在していなけれ
ばならない。
- 値が空だと、バックアップファイルは作られない ('patchmode' は使えなく
なる!)。そのため書き込みが失敗するかもしれない。
- ディレクトリに "." を指定するのは、バックアップファイルを、編集され
たファイルと同じディレクトリに作るということである。
- ディレクトリが "./" (MS-DOS等では ".\") で始まるのは、バックアップファ
イルを作るディレクトリを、編集されたファイルとの相対的な位置で決める
ということである。最初の "." は編集されたファイルのパス名で置き換え
られる (ディレクトリ名の内部の "." には特別な意味はない)。
- コンマの後の空白は無視されるが、他の場所の空白はディレクトリ名の一部
と見なされる。ディレクトリ名の先頭に空白を使いたいなら、その空白の前
に '\' を置くこと。
- ディレクトリ名にコンマを使いたいなら、そのコンマの前に '\' を置くこ
と。
- ディレクトリ名は '/' で終わってもよい。
- 環境変数は展開される |:set_env|。
- 文字 '\' には注意。空白の前には1個置き、オプションの値に '\' 自身を
含めるなら2個置く (|option-backslash| を参照)。例:
- Vim version 3.0 との後方互換性のため、値の先頭の '>' は取り除かれる。
オプション 'backup' および 'writebackup' も参照。
Unixでユーザのバックアップファイルを隠したいなら、次のようにしてみるこ
と。
この方法を使うには、それぞれのディレクトリとあなたのホームディレクトリ
にディレクトリ ".backup" を作らなければならない。
リストにディレクトリを追加するときにはコマンド |:set+=|、リストからディ
レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来
のヴァージョンで異なった既定値が使われるようになったときに、問題が起き
るのを防げる。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。
*'backupext'* *'bex'* *E589*
'backupext' 'bex' 文字列 (既定では "~", VMSでは "_")
グローバル
{Vi にはない}
バックアップファイルの名前を作る際、元のファイル名の後ろに付け加える文
字列。既定では普段使いそうもないものに定めてあるが、これは既存のファイ
ルをバックアップファイルで上書きするのを避けるためである。".bak" を使
いたいかもしれないが、大事なファイルに ".bak" で終わるものがないか確か
めること。
通常のファイル名文字だけ使える。"/\*?[|<>"は不正である。
たくさんのバックアップを残しておきたいなら、自動コマンドBufWritePreを
使ってファイルを書き込む直前に'backupext'にタイムスタンプを含めるよう
に変更するとよい。
バックアップを別のディレクトリに保存させるには、オプション'backupdir'
を設定すること。
*'backupskip'* *'bsk'*
'backupskip' 'bsk' 文字列 (既定では "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*")
グローバル
{Vi にはない}
{Vi mが |+wildignore| 機能付きでコンパイルされたときの
み有効}
ファイル名のパターンのリスト。書き込みをするファイルの名前にマッチする
パターンがこの中にあれば、そのファイルのバックアップは作られない。ファ
イル名を指定してもよいし、ファイルのフルパスを指定 (訳注: C:/temp/* 等
の方法。既定値ではこの方法で一時ファイル用のディレクトリを指定し、一時
ファイルのバックアップを作らないようにしている) してもよい。
パターンの指定方法は |:autocmd| と同じである。|autocmd-patterns| を参
照。特別な文字に注意するために |option-backslash| を参照。
環境変数の$TMPDIR, $TMP または $TEMP が定義されていないとき、それらは
既定値に使われない。"/tmp/*" はUnixでのみ使われる。
環境変数は展開されない。$HOMEを使いたい場合は、明示的に展開しなければ
ならない。例:
既定値は"crontab -e"が正常に機能するように定められている(元のファイル
をリネームすることによってバックアップを作ると、crontabは新しく作られ
たファイルを参照しない)。'backupcopy'と|crontab|も参照。
*'balloondelay'* *'bdlay'*
'balloondelay' 'bdlay' 数値 (既定では 600)
グローバル
{Vi にはない}
{Vi mが |+balloon_eval| 機能付きでコンパイルされたとき
のみ有効}
バルーン表示が出るまでの時間 (ミリ秒単位)。|balloon-eval| を参照。
*'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'*
'ballooneval' 'beval' 切替 (既定ではオフ)
グローバル
{Vi にはない}
{Vi mが |+balloon_eval| 機能付きでコンパイルされたとき
のみ有効}
|balloon-eval| 機能を働かせる。
*'balloonexpr'* *'bexpr'*
'balloonexpr' 'bexpr' 文字列 (既定では "")
グローバル/バッファについてローカル|global-local|
{Vi にはない}
{Vi mが|+balloon_eval|機能付きでコンパイルされたときの
み有効}
バルーンウィンドウに表示するテキストの式。'ballooneval'がオンのときの
み使われる。以下の変数を使用できる:
v:beval_bufnr バルーンを表示するバッファの番号
v:beval_winnr ウィンドウの番号
v:beval_lnum 行番号
v:beval_col 桁番号(バイトインデックス)
v:beval_text マウスポインタの下、または後ろにある単語
この式の評価には副作用があってはならない。
例:
NOTE: バルーンはカーソルがテキスト文字の上にあるときだけ表示される。
'balloonexpr'を評価した結果が空でないなら、Vimは外部デバッガ(Netbeans
またはSun Workshop)にメッセージを送ろうとしない。
この式はサンドボックス|sandbox|の中でも評価できる。|sandbox-option|を
参照。
バルーンのテキスト中の改行が機能するかを調べるにはこれを使う:
これがサポートされているなら文字列"\n"は新規行を開始する。この式を評価
した結果がリスト|List|になる場合は、そのリストの各要素を文字列とし、
それらの間に"\n"を置くのと同じことになる。
*'binary'* *'bin'* *'nobinary'* *'nobin'*
'binary' 'bin' 切替 (既定ではオフ)
バッファについてローカル
{Vi にはない}
バイナリファイルを編集する前には、このオプションをオンにすべきである。
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' 切替 (既定ではオン)
グローバル
{Vi にはなく、MS-DOS版のみ}
オンのとき、キーボードで打ち込まれた文字を取得するためにバイオスが呼び
出される。これは CTRL-C を認識するためにはよいが、コンソールでしか機能
しない。ターミナルをシリアルポートから利用する場合は、オフにすること。
'conskey' も参照。
*'bomb'* *'nobomb'*
'bomb' 切替 (既定ではオフ)
バッファについてローカル
{Vi にはない}
{Vi mが |+multi_byte| 機能付きでコンパイルされたときの
み有効}
ファイルを書き込むときに以下の条件が満たされれば、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!@*-+;:,./?")
グローバル
{Vi にはない}
{Vi mが |+linebreak| 機能付きでコンパイルされたときの
み有効}
オプション 'linebreak' がオンのとき、どの文字のところで行が折り返され
て表示されるかを、このオプションで指定する。これが機能するのはASCIIと
8bit文字('encoding'が8bitエンコーディングのとき)だけである。
*'browsedir'* *'bsdir'*
'browsedir' 'bsdir' 文字列 (既定では "last")
グローバル
{Vi にはなく、Motif, Athena, Mac, Win32のGUI版のみ}
ファイルブラウザの開始時、どのディレクトリを開くかを指定する。
last 前回にファイルブラウザでファイルを開く・または保存した
ディレクトリ
buffer バッファで開いているファイルのディレクトリ
current カレントディレクトリ
{path} {path} で指定されたディレクトリ
*'bufhidden'* *'bh'*
'bufhidden' 'bh' 文字列 (既定では "")
バッファについてローカル
{Vi にはない}
{Vi mが |+quickfix| 機能付きでコンパイルされたときの
み有効}
バッファがウィンドウ内に表示されなくなったときの動作を指定する。
<empty> グローバルオプション 'hidden' に従う
hide バッファを隠す (解放しない)。'hidden' がオフでもそうす
る。
unload バッファを解放する。'hidden' がオフのときも、コマンド
|:hide| を使ったときもそうする。
delete バッファをバッファリストから削除する。'hidden' がオン
のときも、|:hide| を使ったときも、|:bdelete| を使った
ときのように、リストから削除する。
wipe バッファをバッファリストから完全に削除(wipe out)する。
'hidden' がオンのときも、|:hide| を使ったときも、
|:bwipeout| を使ったときのように、リストから削除する。
注意: "unload", "delete", "wipe"を設定すると、バッファの変更は警告
無しに失われる。
このオプションは 'buftype' や 'swapfile' と共に使われ、特殊な用途のバッ
ファを指定する。|special-buffers| を参照。
*'buflisted'* *'bl'* *'nobuflisted'* *'nobl'* *E85*
'buflisted' 'bl' 切替 (既定ではオン)
バッファについてローカル
{Vi にはない}
オンのときは、バッファはバッファリストに表示される。オフのときは、その
バッファはコマンド ":bnext" や ":ls" およびバッファメニュー等の対象に
ならない。
ファイル名やマークを思い出したりするためだけのバッファでは、このオプショ
ンはオフになる。バッファの編集を始めたときは、このオプションはオンにな
る。しかし ":buffer" でバッファに移動したときはオンにはならない。
*'buftype'* *'bt'* *E382*
'buftype' 'bt' 文字列 (既定では "")
バッファについてローカル
{Vi にはない}
{Vi mが |+quickfix| 機能付きでコンパイルされたときの
み有効}
このオプションはバッファの種類を指定する。
<empty> 普通のバッファ
nofile ファイルと関連がなく、書き込まれる予定のないバッファ
nowrite 書き込まれる予定のないバッファ
acwrite いつも自動コマンドBufWriteCmdで書き込まれる予定のバッ
ファ。{Vi mが|+autocmd|機能付きでコンパイルされたとき
のみ有効}
quickfix エラーリスト/ロケーションリスト用の quickfix バッファ
(|:cwindow|, |:lwindow|を参照)
help ヘルプバッファ (ユーザが手動でこれに設定することはない
はずである)
このオプションはオプション 'bufhidden' や 'swapfile' と共に使われ、特
殊な用途のバッファを指定する。|special-buffers| を参照。
このオプションの変更には十分注意すること。多くの副作用が起こるかもしれ
ない!
"quickfix" バッファはエラーリストとロケーションリストにのみ使われる。
この値はコマンド|:cwindow| と|:lwindow|で設定され、ユーザが変更するこ
とはないはずである。
"nofile" バッファと "nowrite" バッファは似ている。
両方とも、 バッファの内容はファイルに書き込まれない。":w" が使え
ない (":w 新ファイル名" は使える)。
両方とも、 バッファの内容が変更された 'modified' と認識されること
がない。Vimの終了時等、変更点が失われるときでも警告が
現れない。
両方とも、 スワップファイルはメモリを大量に消費したときのみ作られ
る ('swapfile' がオフだと、スワップファイルは作られな
い)。
nofile だけは、 バッファ名は固定され、ファイル名のようには扱われない。
|:cd| の結果としてバッファ名が変わることはない。
*E676*
"acwrite"は"nofile"と同様にバッファ名がファイルと関係していないことを
意味するが、"nofile"と違って保存される。すなわち、"nofile"と"nowrite"
違って":w"ができ、変更されたバッファを保存せずに破棄することはできない。
これを保存するには、マッチする自動コマンド|BufWriteCmd|,
|FileWriteCmd|, |FileAppendCmd|がなければならない。
*'casemap'* *'cmp'*
'casemap' 'cmp' 文字列 (既定では"internal,keepascii")
グローバル
{Vi にはない}
{Vi mが|+multi_byte|機能付きでコンパイルされたときのみ
有効}
大文字・小文字の変更について詳細を指定する。このオプションはコンマ区切
りで以下の単語を含む:
internal 内部の大文字・小文字対応関数を使う。現在のロケールによ
って対応が変更されない。これは'encoding'がユニコードエ
ンコーディング, "latin1", "iso-8859-15"のときのみ問題
になる。"internal"が除かれるとシステムライブラリ関数
towupper()とtowlower()が利用可能ならば使われる。
keepascii アスキー文字(0x00から0x7f)についてはUS大文字小文字対応
を使う。現在のロケールは効果を持たない。
これはおそらくトルコ語でだけ問題になる。
*'cdpath'* *'cd'* *E344* *E346*
'cdpath' 'cd' 文字列 (既定では環境変数 $CDPATH または ",,")
グローバル
{Vi にはない}
{Vi mが |+file_in_path| 機能付きでコンパイルされたとき
のみ有効}
コマンド |:cd| や |:lcd| を使ったときに検索されるディレクトリのリスト。
ただし検索されるディレクトリが "/", "./" や "../" で始まるときはこのオ
プションは使われない。
オプション 'cdpath' には、'path' と同様の指定方法を使う。
|file-searching| も参照。
既定値は環境変数 $CDPATH から取り込まれるが、カレントディレクトリを最
初に探すために "," が先頭に挿入される。
$CDPATH から取り込まれたものが望ましくないときは、値を上書きするために、
次のコマンドを適当に修正し、ユーザのファイル vimrc に加えること。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。('cdpath' の値の一部は、
ファイル名を展開するためにシェルに渡すことができる)。
*'cedit'*
'cedit' 文字列 (Viの既定値: "", Vimの既定値: CTRL-F)
グローバル
{Vi にはない}
{Vi mが |+vertsplit| 機能付きでコンパイルされたときの
み有効}
Command-lineモードで、Command-lineウィンドウを開くために使われるキー。
オプション 'compatible' がオフならば、既定では CTRL-F である。
non-printable なキー (訳注: 文書先頭を参照) しか指定できない。キーは単
一の文字として設定することもできるが、それでは入力しにくい。<> を使っ
た表記を推奨する。例:
|Nvi| にもこのオプションがあるが、最初の1文字だけが使用される。
|cmdwin| を参照。
*'charconvert'* *'ccv'* *E202* *E214* *E513*
'charconvert' 'ccv' 文字列 (既定では "")
グローバル
{Vi にはない}
{Vi mが |+multi_byte| 機能および |+eval| 機能付きでコ
ンパイルされたときのみ有効}
文字エンコーディングの変換に使われる expression を定める。これは読み込
まれようとしているファイルや書き込みをしたファイルのエンコーディングが、
望むものと違うときに評価される。
オプション 'charconvert' の値は、内部関数 iconv() がサポートされ、それ
による変換が可能ならば使われることはない。ずっと高速なため、iconv() の
使用を推奨する。
'charconvert' は標準入力 (stdin |--|) から読み込みときには使われない。
なぜなら変換元のファイルが存在しないからだ。まずテキストの内容をファイ
ルに保存しなければいけない。
使われる expression は、変換成功時には空文字列または0、失敗時には非0を
返さなければならない。
使用可能なエンコーディング名は 'encoding' で設定されている (訳注: よく
分からない。原文は The possible encoding names encountered are in
'encoding'.)。それに加え、'fileencodings' と 'fileencoding' に設定され
ているエンコーディング名も使われる。
"latin1", "unicode", "ucs-2", "ucs-4", "utf-8" の間の変換はVimの内部で
行われ、 'charconvert' は使われない。'viminfo' の中にフラグ 'c' が含ま
れるならば、'charconvert' はファイル viminfo の変換にも使われる。また
Unicode の変換にも使われる。
例:
関連するVimの変数は以下の通り。
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 を使っている。
Vim は 'charconvert' を用いたエンコーディング変換では暗号化をしない。
変換後に暗号化をしたいなら、'charconvert' にそうさせる必要がある。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。
*'cindent'* *'cin'* *'nocindent'* *'nocin'*
'cindent' 'cin' 切替 (既定ではオフ)
バッファについてローカル
{Vi にはない}
{Vi mが |+cindent| 機能付きでコンパイルされたときのみ
有効}
Cプログラムファイルの自動インデントを行う。Insertモードで再インデント
を引き起こす文字列を指定するにはオプション 'cinkeys' を、好みのインデ
ントスタイルを設定するには 'cinoptions' を参照。
'indentexpr' の値が空でないなら、それは 'cindent' の設定を上書きする。
'lisp' がオフで、'indentexpr' と 'equalprg' の両方の値が空なら、"=" に
よるインデントはこのアルゴリズムを使い、外部プログラムを使わない。
|C-indenting| を参照。
'cindent' の動作が気に入らないならば、'smartindent' か 'indentexpr' を
試してみること。
このオプションは 'paste' がオンのときには使われない。
NOTE: このオプションは 'compatible' がオンのときはオフになるので注意。
*'cinkeys'* *'cink'*
'cinkeys' 'cink' 文字列 (既定では "0{,0},0),:,0#,!^F,o,O,e")
バッファについてローカル
{Vi にはない}
{Vi mが |+cindent| 機能付きでコンパイルされたときのみ
有効}
Insertモードで入力されたときに、現在行の再インデントを引き起こす文字の
リスト。オプション 'cindent' がオンで、かつ 'indentexpr' が空の時のみ
使われる。
このオプションの設定方法については |cinkeys-format| を参照。
また |C-indenting| を参照。
*'cinoptions'* *'cino'*
'cinoptions' 'cino' 文字列 (既定では "")
バッファについてローカル
{Vi にはない}
{Vi mが |+cindent| 機能付きでコンパイルされたときのみ
有効}
このオプションは、'cindent' でのC言語ソース内の行の再インデント方法に
影響を与える。このオプションの値については |cinoptions-values| を、一
般的なC言語ソースのインデントの情報については |C-indenting| を参照。
*'cinwords'* *'cinw'*
'cinwords' 'cinw' 文字列 (既定では "if,else,while,do,for,switch")
バッファについてローカル
{Vi にはない}
{Vi mが |+cindent| 機能と |+smartindent| 機能(両方)付
きでコンパイルされたときのみ有効}
オプション 'smartindent' か 'cindent' がオンのとき、ここに指定したキー
ワードの次の行は、さらにインデントされる。'cindent' がオンのときには、
適切な場所 ({} の内側) でのみ機能する。
NOTE 'ignorecase' は 'cinwords' の値には適用されないので注意。大文字か
小文字かを区別したくないなら、値に両方を指定すること。例: "if,If,IF"
*'clipboard'* *'cb'*
'clipboard' 'cb' 文字列 (既定値はX-windowsでは
"autoselect,exclude:cons\|linux"
それ以外では "")
グローバル
{Vi にはない}
{Vi mのGUIバージョンか |+xterm_clipboard| 機能付きでコ
ンパイルされたもののみ有効}
コンマ区切りのキーワードのリストを指定する。
認識されるのは、以下のキーワードである。
unnamed これが含まれると、コピー、削除、変更、ペーストなどの操
作で、普通なら無名レジスタが使われるところで、全てクリ
ップボードレジスタ "*" が使われるようになる。ただしレ
ジスタ名を陽に指定すれば、オプション 'clipboard' に
"unnamed" が含まれているかいないかに関わらず、指定され
たレジスタが使われる。またクリップボードレジスタは、"*
という記法を用いれば常にアクセスできる。
|gui-clipboard| も参照。
autoselect 'guioptions' のフラグ 'a' のように働く: これが含まれる
と、Visualモードが開始されるたび、または Visual選択範
囲が変更されるたびに、Vimはウィンドウシステムのグロー
バルなクリップボードのオーナーになろうとするか、選択さ
れたテキストをクリップボード用レジスタ "* を使ってクリッ
プボードにコピーしようとする。詳細は |guioptions_a| と
|quotestar| を参照。GUI機能が有効のときは 'guioptions'
のフラグ 'a' が使用され、無効のときはこの "autoselect"
フラグが使用される。また、モードレスなセレクションにも
適用される。
autoselectml "autoselect" と似ているが、モードレスセレクションのみ
に適用される。'guioptions' のフラグ 'A' と比較してみる
こと。
html クリップボードの内容が HTML であるとき、貼り付け時に使
われる。テキストをクリップボードにコピーするとき、
HTML としてマークアップする。Firefox で描画された HTML
あをコピーして Vim で HTML ソースとして貼り付けるとき
や、Vim で HTML を選択して Firefox のリッチエディット
ボックスに貼り付けるときに使われる。
これを一時的にのみ使いたい場合は BufEnter 自動コマンド
を使うといいかもしれない。
GTK 2 以降のみ対応している。
|+multi_byte| 機能が有効なときのみ利用可能。
exclude:{pattern}
ターミナルの名前 'term' にマッチするパターンを定義する。
パターンがマッチすると、Xサーバとの通信がなされなくなる。
このオプションは以下の場合に便利である。
- Vimをコンソールで使用しているとき。
- アプリケーションを別のディスプレイで使うため、環境変
数 $DISPLAY が設定されているとき。
- コンソールではXサーバと通信してほしくないが、ターミ
ナルエミュレータ上では通信してほしいとき。
- コンソールでVimを使用している最中にXサーバが終了させ
られ、Vimをキルせざるを得ないかもしれないとき。
Xサーバと全く通信しないようにするには、次のようにする。
これは引数 |-X| を使用したのと同じ効果を持つ。
Note Xサーバと通信していないとき、ウィンドウタイトルは
復元されず、クリップボードにはアクセスできない。
'magic' の値は無視され、 {pattern} は 'magic' がオンの
ときのように解釈される。オプション 'clipboard' の値の
残りは {pattern} として認識されるので、"exclude" は最
後に指定しなければならない。
*'cmdheight'* *'ch'*
'cmdheight' 'ch' 数値 (既定では 1)
グローバル
{Vi にはない}
コマンドラインに使われる画面上の行数。|hit-enter| プロンプトの出現を避
けるのに役立つ。
各タブページが異なる値を持てるようにするために、このオプションの値はタ
ブページに保存される。
*'cmdwinheight'* *'cwh'*
'cmdwinheight' 'cwh' 数値 (既定では 7)
グローバル
{Vi にはない}
{Vi mが |+vertsplit| 機能付きでコンパイルされたときの
み有効}
コマンドライン・ウィンドウに使われる画面上の行数。|cmdwin| を参照。
*'columns'* *'co'* *E594*
'columns' 'co' 数値 (既定では 80 またはターミナルの幅)
グローバル
{Vi にはない}
画面上の列幅を設定する。普通このオプションはターミナルの初期化の時点で
設定され、手動で設定する必要はない。|posix-screen-size|も参照。
VimがGUI内やサイズ変更可能なウィンドウ内で実行されているときは、このオ
プションを変更するとウィンドウサイズも変更される。GUIでだけこのサイズ
を使用したい場合は、このコマンドを|gvimrc|に書くこと。
ユーザがこのオプションを変更したのに、Vimがディスプレイの列幅の物理的
な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが
ある。GUIでは常にその可能性があるので、Vimは桁数を画面に収まる値に制限
している。可能なウィンドウ幅の最大値を取得するには、次のコマンドを使
う:
最小値は12、最大値は10000。
(訳注: オプション 'lines' も参照)
*'comments'* *'com'* *E524* *E525*
'comments' 'com' 文字列 (既定では
"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-")
バッファについてローカル
{Vi にはない}
{Vi mが |+comments| 機能付きでコンパイルされたときのみ
有効}
コメント行の始まりとなる文字列の、コンマ区切りのリスト。
|format-comments| を参照。'\' を使って値にスペースを含める方法について
は、|option-backslash| を参照。
*'commentstring'* *'cms'* *E537*
'commentstring' 'cms' 文字列 (既定では "/*%s*/")
バッファについてローカル
{Vi にはない}
{Vi mが |+folding| 機能付きでコンパイルされたときのみ
有効}
コメント用のテンプレート (雛形)。値の中の "%s" はコメントの内容と置き
換えられる。現在のところ、折り畳み用のマーカを追加するためにのみ使用さ
れている。|fold-marker| を参照。
*'compatible'* *'cp'* *'nocompatible'* *'nocp'*
'compatible' 'cp' 切替 (既定では オン、ファイル|vimrc|または
|gvimrc|が発見されたらオフ)
グローバル
{Vi にはない}
VimをなるべくVi互換にするか、便利な機能を使えるようにするかを決定する。
これは、特別な種類のオプションである。このオプションの値が変更されると、
それに伴って他のオプションも変更されるからだ。*注意: このオプションを
変更すると、予期しない効果が数多く現れる。キーマップの解釈は変わり、ア
ンドゥも違った方法で行われる、等々。このオプションをファイル vimrc 内
で設定するなら、一番先頭に置くこと。
既定ではオンなので、その他のオプションにはViの既定値が使われる。この既
定値は、VimをViと全く同じように使うことを望み、オプション 'compatible'
について知りもしない、または知りたいとも思わない人たちのためのものであ
る。
Vimが立ち上がる間にファイル |vimrc| または |gvimrc| が見つかると、こ
のオプションはオフにされ、その他のオプションで変更されていないものは、
みなVimの既定値に設定される。要するに、Vimはファイル |vimrc| または
|gvimrc| が存在するならVimの既定値を、存在しないならViの既定値を使うの
だ ( Note: システム全体用のファイルvimrc や引数|-u|で指定されるファイ
ルは関係ないことに注意)。|compatible-default| と |posix-compliance| も
参照。
このオプションは引数 "-C" でオンに、引数 "-N" でオフにできる。 |-C| と
|-N| を参照。
オフに設定すると、「Viの既定値」と「Vimの既定値」が異なっているオプショ
ンについて、Vimの既定値が用いられるようになる。下の表で '+' がついてい
るものを参照。その他のオプションは影響を受けない。
オンにすると、他のオプションがいくつか変更され、Vimはできる限りVi互換
を保とうとする。下の表を参照。これはVi互換の編集方法に戻りたいと思うと
きに使うことができる。
'cpoptions' も参照。
オプション + Viの既定値 効果
'allowrevins' オフ コマンド CTRL-_ なし
'backupcopy' Unix: "yes" バックアップファイルがコピーになる
他: "auto" バップアップはコピーまたはリネーム
'backspace' "" 普通のバックスペース
'backup' オフ バックアップファイルなし
'cindent' オフ C言語ファイルにインデントなし
'cedit' + "" |cmdwin| を開くキーなし
'cpoptions' + (全フラグ) Vi互換のフラグ
'cscopetag' オフ ":tag" に cscope を使わない
'cscopetagorder' 0 |cscopetagorder| を参照
'cscopeverbose' オフ |cscopeverbose| を参照
'digraph' オフ ダイグラフなし
'esckeys' + オフ Insertモードで <Esc> で始まるキーなし
'expandtab' オフ タブはスペースに展開されない
'fileformats' + "" 自動ファイルタイプ決定なし
"dos,unix" (ただし DOS, Windows と OS/2 以外で)
'formatoptions' + "vt" Vi互換の文書整形
'gdefault' オフ ":s" でフラグの既定値に 'g' なし
'history' + 0 コマンドラインの履歴なし
'hkmap' オフ ヘブライ語用キーボードマップなし
'hkmapp' オフ phoneticヘブライ語用キーボードマップなし
'hlsearch' オフ 検索でマッチした文字列に強調なし
'incsearch' オフ インクリメンタル・サーチなし
'indentexpr' "" expression によるインデントなし
'insertmode' オフ Insertモードでの開始なし
'iskeyword' + "@,48-57,_" キーワードはアルファベットと数字と '_'
'joinspaces' オン ピリオドの後ろには空白を2個挿入
'modeline' + オフ モードラインなし
'more' + オフ リスト表示が止まらない
'revins' オフ 右から左の挿入なし
'ruler' オフ ルーラなし
'scrolljump' 1 ジャンプスクロールなし
'scrolloff' 0 スクロールにオフセットなし
'shiftround' オフ インデントは shiftwidth の整数倍でない
'shortmess' + "" メッセージの短縮なし
'showcmd' + オフ コマンドの文字は表示されない
'showmode' + オフ 現在のモードは表示されない
'smartcase' オフ 大文字小文字の無視は自動にならない
'smartindent' オフ 高度なインデントなし
'smarttab' オフ 高度なタブ挿入なし
'softtabstop' 0 タブは常に 'tabstop' を基準
'startofline' オン いくつかのコマンドで行頭に移動する
'tagrelative' + オフ タグファイル名は相対的でない
'textauto' + オフ 自動改行コード決定なし
'textwidth' 0 自動行分割なし
'tildeop' オフ ティルデはオペレータではない
'ttimeout' オフ ターミナルの時間切れなし
'whichwrap' + "" 左から右への移動は行を超えない
'wildchar' + CTRL-E 現在の値が <Tab> のときのみ、コマンド
ライン補完に CTRL-E を使う
'writebackup' オンかオフ |+writebackup| 機能に依る
*'complete'* *'cpt'* *E535*
'complete' 'cpt' 文字列 (既定では: ".,w,b,u,t,i")
バッファについてローカル
{Vi にはない}
コマンド 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 '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' 文字列 (既定では空)
バッファについてローカル
{Vi にはない}
{Vi mが |+eval| と |+insert_expand| 機能付きでコンパイ
ルされたときのみ有効}
このオプションは入力モードのCTRL-X CTRL-U |i_CTRL-X_CTRL-U|での補完に
使われる関数を指定する。
その関数がどのように起動され、何を返すべきかについての説明は
|complete-functions|を参照。
*'completeopt'* *'cot'*
'completeopt' 'cot' 文字列 (既定では "menu,preview")
グローバル
{Vi mが|+insert_expand|機能付きでコンパイルされたとき
のみ有効}
{Vi にはない}
入力モードでの補完|ins-completion|についてのオプションのコンマ区切りの
リスト。サポートされている値は次の通り:
menu ポップアップメニューで補完候補を表示する。ポップアップメニ
ューは、候補が2個以上あり、十分な数の色が使用できるときだ
け表示される。|ins-completion-menu|を参照。
menuone 候補が1つしかないときもポップアップメニューを使う。候補に
ついて付加的な情報があるときに便利である。例えば、それがど
のファイルに含まれているかなど。
longest 候補の文字列の最長の共通部分だけを挿入する。メニューが表示
されているならばCTRL-Lでさらに文字を挿入することができる。
大文字・小文字が同一視されるかどうかは補完の種類による。バッ
ファのテキストについてはオプション'ignorecase'が適用される。
preview 現在選択されている候補についての付加的な情報をプレビューウ
ィンドウに表示する。"menu"または"menuone"と組み合わせたと
きのみ有効。
*'concealcursor'* *'cocu'*
'concealcursor' 'cocu' 文字列 (既定では: "")
ウィンドウについてローカル
{Vi にはない}
{Vi m が |+conceal| 機能付きでコンパイルされたときのみ
有効}
カーソル行のテキストを Conceal 表示するモードを設定します。現在のモー
ドがこのオプション値に含まれているなら他の行と同様に Conceal 表示され
ます。
n ノーマルモード
v ビジュアルモード
i インサートモード
c コマンドライン編集 ('incsearch' 用)
'v' はカーソル行だけでなくビジュアル選択された行全体に適用されます。
便利な値は "nc" です。これはヘルプファイルで使われています。移動してい
るときはテキストは Conceal 表示されますが、テキストを入力したりビジュ
アル選択したりするときは実際のテキストが表示されるので、自分の操作を視
覚できます。
カーソルの位置は実際の表示とはことなる場合があるので注意してください。
例えば縦に移動することで列が変わることがあります。
'conceallevel' 'cole' *'conceallevel'* *'cole'*
数値 (既定では 0)
ウィンドウについてローカル
{Vi にはない}
{Vi m が |+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' 切替 (既定ではオフ)
グローバル
{Vi にはない}
オプション 'confirm' がオンならば、バッファへの変更を保存していないと
実行に失敗する操作 (例えばコマンド ":q" と ":e") の際、ダイアログ
|dialog| を開いてファイルを保存するかどうか尋ねる。これがオンになって
いても、意図的に変更を廃棄したいなら ! を使える。
'confirm' がオフでも、コマンド |:confirm| で個別に確認を求めることがで
きる (これはキーマッピングで使うととても便利である)。
関数 |confirm()| と 'guioptions' のフラグ 'v' も参照。
*'conskey'* *'consk'* *'noconskey'* *'noconsk'*
'conskey' 'consk' 切替 (既定ではオフ)
グローバル
{Vi にはない} {Vi mのMS-DOS版のみ}
オンのとき、キーボードの文字を受け取るのに直接コンソール出入力が使われ
る。これはたいていの場合有効である。'bioskey' も参照。合わせて、3種類
のコンソール入力が使える。
'conskey' 'bioskey' action
オン オンかオフ 直接コンソール入力
オフ オン BIOS
オフ オフ 標準入力
*'copyindent'* *'ci'* *'nocopyindent'* *'noci'*
'copyindent' 'ci' 切替 (既定ではオフ)
バッファについてローカル
{Vi にはない}
新規行を自動インデントするとき、既存の行のインデント構造をコピーする。
普通、新しい行のインデントは|'expandtab'|が有効になっていないかぎり
(この場合は全てスペースになる)、まずタブが使われ、足りない部分がスペー
スで埋められる。このオプションを有効にすると、既存の行のインデントにど
んな文字が使われていようとそれを新規行にコピーする。'expandtab' はこれ
らの文字には影響せず、タブはタブのままになる。新規行のインデントが既存
の行よりも深いならば、その差の部分は通常の方法で埋められる。
NOTE: 'compatible'がオンにされると'copyindent'はオフになる。
'preserveindent'も参照。
*'cpoptions'* *'cpo'*
'cpoptions' 'cpo' 文字列 (Vimの既定値: "aABceFs", Viの既定値: 全フラグ)
グローバル
{Vi にはない}
1文字のフラグの列で設定する。フラグが設定されると、対応する動作がVi互
換になる。大部分、またはある程度のVi互換が求められるときに使われる。
'cpoptions' は "compatible-options (互換オプション)" の意味である。
読みやすくするためにコンマを入れてもよい。
将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+="
と "-=" を使うこと |add-option-flags|。
NOTE: このオプションは 'compatible' がオンのときはVi互換の値に設定され、
'compatible' がオフのときは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| のような、文字を引数に取る Normalモー
ドコマンドの後で、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 キーマッピングの途中で、キーコードが完全に入力されるの
を待たない。This breaks mapping <F1><F1> when
only part of the second <F1> has been read. こうすると
<F1><Esc> と打ち込めばマッピングをキャンセルできる。
*cpo-l*
l 検索パターンの [] 範囲内で、'\' は文字通りに解釈され、
"\]", "\^", "\\" だけが特別な意味を持つ。|/[]| を参照。
'l' が含まれたとき:
"/[ \t]" がマッチするのは <Space>, '\' と 't'
'l' が除かれたとき:
"/[ \t]" がマッチするのは <Space> と <Tab>
|cpo-\|も参照。
*cpo-L*
L 'list' がオンのとき、 'wrapmargin', 'textwidth',
'softtabstop' とVirtual replaceモード (|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 コピーコマンドを "." でリドゥできる。
*cpo-Z*
Z オプション'readonly'がオンになっているのに"w!"をしたと
き'readonly'をオフにしない。
*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*
* ":*" を ":@" と同じように扱う。これが含まれないと、
":*" は ":'<,'>" の別名となり、Visualエリアを選択する。
*cpo-<*
< ":menu" で実行される部分や、キーマッピングや略語におい
て、|<>| 記法による特殊キーの認識を行わない。例えば、
":map X <Tab>" で X がマップされるのは、
'<' が含まれたとき: "<Tab>" (5個の文字)
'<' が除かれたとき: "^I" (^I は本当の <Tab>)
上の 'k' も参照。
*cpo->*
> レジスタにテキスト追加するとき、そのテキストの前に改行
文字をつける。
次のものは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' 文字列 (既定では "zip")
グローバルまたはバッファについてローカル |global-local|
{Vi にはない}
バッファをファイルに保存するときに使用される暗号化メソッドを設定する:
*pkzip*
zip PkZip 互換メソッド。弱い暗号化。
Vim 7.2 以前との後方互換。
*blowfish*
blowfish Blowfish メソッド。強い暗号化。Vim 7.3 以降が必要。こ
のメソッドで保存されたファイルは Vim 7.2 以前のバー
ジョンでは開くことができない。ファイルには "seed" が付
加されるので、ファイルを書き込むたびに暗号化されたバイ
ト列は異なる。
暗号化されたファイルを読み込んだとき、'cryptmethod' は自動的にそのファ
イルに使用されている暗号メソッドに設定されます。つまり、そのまま
'cryptmethod' を変更せずにファイルを保存すれば同じメソッドが使用されま
す。
'cryptmethod' の設定を変更してもファイルは変更あり状態にはなりません。
設定変更を有効にするにはファイルを保存する必要があります。もし他に変更
がなければ保存せずに終了したとしても警告は表示されません。 |:X| 参照。
グローバル設定を空文字に設定すると "zip" が使用されます。ローカル設定
を空文字に設定するとグローバル設定が使用されます。
Vim の将来のバージョンに新しい暗号化メソッドが追加され、現在の Vim が
それを認識できないときは *E821* エラーが表示されます。
そのファイルは新しいバージョンの Vim で開く必要があります。
*'cscopepathcomp'* *'cspc'*
'cscopepathcomp' 'cspc' 数値 (既定では 0)
グローバル
{Vi にはない}
{Vi mが |+cscope| 機能付きでコンパイルされたときのみ有
効}
タグのリストの中でパスを (訳注: 上にさかのぼって) どこまで表示するかを
指定する。|cscopepathcomp| を参照。
*'cscopeprg'* *'csprg'*
'cscopeprg' 'csprg' 文字列 (既定では "cscope")
グローバル
{Vi にはない}
{Vi mが |+cscope| 機能付きでコンパイルされたときのみ有
効}
Cscope を実行するコマンド名を指定する。|cscopeprg| を参照。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。
*'cscopequickfix'* *'csqf'*
'cscopequickfix' 'csqf' 文字列 (既定では"")
グローバル
{Vi mが|+cscope|または|+quickfix|機能つきでコンパイル
されたときのみ利用可能}
{Vi にはない}
cscopeの結果を表示するのにQuickFixウィンドウを使うかどうかを指定する。
|cscopequickfix|を参照。
*'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'*
'cscopetag' 'cst' 切替 (既定ではオフ)
グローバル
{Vi mが|+cscope|機能つきでコンパイルされたときのみ
有効}
{Vi にはない}
コマンドtagにcscopeを使う。|cscope-options|を参照。
NOTE: 'compatible'をオンにするとこのオプションはオフになる。
*'cscopetagorder'* *'csto'*
'cscopetagorder' 'csto' 数値 (既定では 0)
グローバル
{Vi にはない}
{Vi mが |+cscope| 機能付きでコンパイルされたときのみ有
効}
コマンド ":cstag" が検索を行う順番を指定する。|cscopetagorder| を参照。
NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな
るので注意。
*'cscopeverbose'* *'csverb'*
*'nocscopeverbose'* *'nocsverb'*
'cscopeverbose' 'csverb' 切替 (既定ではオフ)
グローバル
{Vi にはない}
{Vi mが |+cscope| 機能付きでコンパイルされたときのみ有
効}
Cscope のデータベースに情報を追加するときメッセージを表示する。
|cscopeverbose| を参照。
NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな
るので注意。
*'cursorbind'* *'crb'* *'nocursorbind'* *'nocrb'*
'cursorbind' 'crb' 切替 (既定ではオフ)
ウィンドウについてローカル
{Vi にはない}
{Vi mが |+cursorbind| 機能つきでコンパイルされたときの
み有効}
このオプションをオンにすると、現在のウィンドウでカーソルを動かしたとき
に、他のウィンドウ ('cursorbind' オプションが設定されたウィンドウ) 内
のカーソルも同じ行と列に移動します。このオプションはバージョン違いの
ファイルの差を見るときに便利です ('diff' 参照)。diff モードでは追加ま
たは削除された行 (行に文字がなくても) のみが考慮されます。
*'cursorcolumn'* *'cuc'* *'nocursorcolumn'* *'nocuc'*
'cursorcolumn' 'cuc' 切替 (既定ではオフ)
ウィンドウについてローカル
{Vi にはない}
{Vi mが|+syntax|機能つきでコンパイルされたときのみ
有効}
カーソルのある画面上の桁をCursorColumnで強調する|hl-CursorColumn|。
テキストを桁揃えするのに便利。スクリーンの再描画が遅くなる。
カレントウィンドウに対してだけこの強調をしたいなら次の自動コマンドを使
う:
*'cursorline'* *'cul'* *'nocursorline'* *'nocul'*
'cursorline' 'cul' 切替 (既定ではオフ)
ウィンドウについてローカル
{Vi にはない}
{Vi mが|+syntax|機能つきでコンパイルされたときのみ
有効}
カーソルがある画面上の行をCursorLineで強調する|hl-CursorLine|。
カーソルを目立たせるのに便利。スクリーンの再描画が遅くなる。
ビジュアルモードでは選択されたテキストをわかりやすくするためにこの強調
は行われない。
*'debug'*
'debug' 文字列 (既定では "")
グローバル
{Vi にはない}
以下の値を指定することができる:
msg 省かれるはずのエラーメッセージも表示する。
throw 省かれるはずのエラーメッセージも表示し、さらに例外を投げ、
|v:errmsg|を設定する。
beep ビープが鳴るだけのところでメッセージを表示する。
これらの値はコンマで区切って組み合わせることができる。
"msg"と"throw"はオプション 'foldexpr' や 'formatexpr', 'indentexpr' を
デバッグするのに便利である。
*'define'* *'def'*
'define' 'def' 文字列 (既定では "^\s*#\s*define")
グローバル/バッファについてローカル |global-local|
{Vi にはない}
マクロ定義を発見するのに使われるパターンを指定する。値はコマンド "/"
で使うのと同様の検索パターンである。このオプションは "[i" や "[d" 等に
使われる |include-search|。オプション 'isident' は、これがマッチした部
分の後の定義された名前を認識するのに使われる。
{'define' のマッチ}{非識別子}{定義名}{非識別子}
値に空白や '\' を含めるために '\' を挿入することに関しては、
|option-backslash| を参照。
既定値はCプログラム用である。C++プログラムには、定数定義を加えて次のよ
うにすると便利だろう。
":set" で設定するときは、'\' の数を2倍にする必要がある!
*'delcombine'* *'deco'* *'nodelcombine'* *'nodeco'*
'delcombine' 'deco' 切替 (既定ではオフ)
グローバル
{Vi にはない}
{Vi mが |+multi_byte| 機能付きでコンパイルされたときの
み有効}
オンのときは、Unicodeのファイルの編集時、バックスペースとNormalモード
のコマンド "x" はそれぞれの文字の上の combining character のみを削除す
る。オフのときは (これが既定である) combining character と文字は同時に
削除される。
Note: 'delcombine'がオンになっていると"xx"の動作が"2x"と異なる場合があ
る。
このオプションは、アラビア語、ヘブライ語その他の言語で、ベースとなる文
字の上にcombining character が付いていて、combining character のみを削
除したいときに便利である。
*'dictionary'* *'dict'*
'dictionary' 'dict' 文字列 (既定では "")
グローバル/バッファについてローカル |global-local|
{Vi にはない}
ファイル名のコンマ区切りのリスト。キーワード補完コマンド
|i_CTRL-X_CTRL-K| 用の単語を探すために使われる。単語のリストからなるファ
イルを指定する。その中では1行ごとに1語が並べられていてもよいし、1行に
キーワードでない文字 (空白を推奨) で区切られた数語が並んでいてもよい。
1行の文字数の最大値は510バイト分である (訳注: 日本語のいわゆる全角文字
では半分の255文字)。
このオプションが空のとき、または"spell"が含まれていてスペルチェ
ックが有効になっているとき、現在アクティブなスペリングが使われる。
|spell|
ファイル名にコンマを含めるには、コンマの前に '\' を置くこと。コンマの
後ろの空白は無視されるが、それ以外の空白はファイル名の一部として扱われ
る。'\' の使い方については |option-backslash| を参照すること。
このオプションは変数の辞書型|Dictionary|とは関係ない。
単語リストはどこで見つかるか?
- FreeBSDでは、"/usr/share/dict/words" というファイルがある。
- Simtelアーカイブでは、ディレクトリ "msdos/linguist" を探すこと。
- GNUコレクションでは、"miscfiles" の中にある。
リストにディレクトリを追加するときには |:set+=| コマンド、リストからディ
レクトリを除くときには |:set-=| コマンドを使うのがよい。こうすると将来
のヴァージョンで異なった既定値が使われるようになったときに、問題が起き
るのを防げる。
安全上の理由から、バッククォート (`) をこのオプションの値に使うことは
できない。
*'diff'* *'nodiff'*
'diff' 切替 (既定ではオフ)
ウィンドウについてローカル
{Vi にはない}
{Vi mが |+diff| 機能付きでコンパイルされたときのみ有効}
カレントウィンドウをファイル間の差異を示すウィンドウのグループに組み入
れる。|vimdiff| を参照。
*'dex'* *'diffexpr'*
'diffexpr' 'dex' 文字列 (既定では "")
グローバル
{Vi にはない}
{Vi mが |+diff| 機能付きでコンパイルされたときのみ有効}
2個のファイル間の差異を求めるとき、ed形式のdiffファイルを求めるために
評価される expression。|diff-diffexpr| を参照。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。
*'dip'* *'diffopt'*
'diffopt' 'dip' 文字列 (既定では "filler")
グローバル
{Vi にはない}
{Vi mが |+diff| 機能付きでコンパイルされたときのみ有効}
Diffモード用のオプション設定。値は、以下のキーワードのコンマ区切りのリ
ストである。指定しないものがあってもよい。
filler 片方のウィンドウ内のテキストのある位置に行が挿
入されていたときに、ウィンドウのスクロールを同
調させるために、埋め立て用の行を表示する。ウィ
ンドウが隣り合っていて、オプション
'scrollbind' がオンのときには大抵便利である。
context:{n} 変更のあった行の上下を {n} 行だけ折り畳まずに
表示 (コンテキストの表示) する。指定されないと、
コンテキストは6行になる。|fold-diff| を参照。
icase テキストの大文字と小文字の違いを無視する。"a"
と "A" は同じものと見なされる。オプション
'diffexpr' が空なら、コマンド "diff" にフラグ
"-i" を追加する。
iwhite 空白の数の違いを無視する。オプション
'diffexpr' が空なら、コマンド "diff" にフラグ
"-b" を追加する。これが正確には何を指定してい
るのかについては、コマンド "diff" のドキュメン
トを参照すること。これは後ろに追加された空白は
無視するが、前に追加された空白は無視しないはず
である。
horizontal (他に明示的に指定されない限り)ウィンドウを水平
分割してdiffモードを開始する。
vertical (他に明示的に指定されない限り)ウィンドウを垂直
分割してdiffモードを開始する。
foldcolumn:{n} diffモードの開始時にオプション'foldcolumn'を
{n}に設定する。
例:
*'digraph'* *'dg'* *'nodigraph'* *'nodg'*
'digraph' 'dg' 切替 (既定ではオフ)
グローバル
{Vi にはない}
{Vi mが |+digraphs| 機能付きでコンパイルされたときのみ
有効}
Insertモードで {char1} <BS> {char2} でダイグラフを入力できるようにする。
|digraphs| を参照。
NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな
るので注意。
*'directory'* *'dir'*
'directory' 'dir' 文字列 (Amigaでの既定値: ".,t:",
MS-DOSとWin32での既定値: ".,c:\tmp,c:\temp"
Unixでの既定値: ".,~/tmp,/var/tmp,/tmp")
グローバル
スワップファイル用ディレクトリの、コンマ区切りのリスト。
- スワップファイルは、リスト内の利用できるディレクトリのうち、最初のディ
レクトリの中に作られる。
- 値が空だとスワップファイルは作られない (回復は不可能になる!)。
- ディレクトリに "." を指定すると、編集されているファイルと同じディレ
クトリにスワップファイルが作られる。Unixではファイル名の先頭にドット
が追加されるので、ディレクトリ内のファイル一覧には表示されない。
MS-Windowsでは属性"hidden"が設定され、可能ならばファイル名の先頭にド
ットが追加される。
- "./" で始まるディレクトリ (MS-DOSなどでは ".\") を指定すると、編集さ
れているファイルからの相対的な位置にスワップファイルが作られる。先頭
の "." は編集されているファイルのパス名に置換される。
- UnixとWin32では、指定されたディレクトリ名の末尾がディレクトリの区切
り記号2個("//"または"\\")で終わっていたら、スワップファイルの名前は
フルパスに従って付けられる。スワップファイルのファイル名をフルパス形
式で表し、ディレクトリの区切り文字をパーセント記号 '%' で置き換えた
ものが使われる。こうするとスワップファイル格納用ディレクトリの中でも
(訳注: 別のディレクトリ内の同名ファイルのスワップファイルが集まるか
もしれない)、ファイル名の一意性が保証される。
Win32 では、区切り文字のカンマの前では "\\" でなく "//" と書かなけれ
ばならない。"\\" と書くと、カンマがファイル名の一部と解釈されてしまう
ためである。
- コンマの後の空白は無視されるが、その他の場所の空白はディレクトリ名の
一部と見なされる。ディレクトリ名の先頭に空白を指定したいなら、'\' を
前に付けること。
- コンマをディレクトリ名の一部に使いたいなら、コンマの前に '\' を付け
ること。
- ディレクトリ名は ':' や '/' で終わっていてもよい。
- 環境変数は展開される |:set_env|。
- '\' の扱いには注意。空白の前には1個置く。値の中に指定するには2個置く
(|option-backslash| を参照)。例:
- Vim version 3.0 との後方互換性のため、値の先頭に '>' を置いてもそれ
は無視される。
リストの先頭には "." を指定することを推奨する。こうすると、同じファイ
ルを2重に編集しようとすると警告が出る。Unixでディレクトリ "/tmp" を使
うのはお勧めできない。システムがクラッシュすると、スワップファイルも失
われてしまう。ディレクトリ "/var/tmp" の中はリブート時にも大抵クリアさ
れないので、ディレクトリ "/tmp" よりもよい選択である。しかしその中には
多くのファイルが入っているかもしれないので、ユーザのスワップファイルは
他のファイルに紛れて分からなくなるかもしれない。ユーザのホームディレク
トリ内のディレクトリ "tmp" が最初に試されるのはそのためだ。
リストにディレクトリを追加するときにはコマンド |:set+=|、リストからディ
レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来
のヴァージョンで異なった既定値が使われるようになったときに、問題が起き
るのを防げる。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。
{Vi: 一時ファイルを作るディレクトリを指定する。既定では "/tmp"}
*'display'* *'dy'*
'display' 'dy' 文字列 (既定では "")
グローバル
{Vi にはない}
テキスト表示の方法を変える。値はフラグのコンマ区切りのリストである。
lastline これが含まれると、ウィンドウの最後の行ができる限りまで
表示される。含まれないと、最後の行が収まりきらないなら
その行は "@" と表示される。
uhex unprintable な文字を (訳注: 文書先頭を参照) <xx> とい
う形式で16進数表示し、^C や ~C の形式を使わない。
*'eadirection'* *'ead'*
'eadirection' 'ead' 文字列 (既定では "both")
グローバル
{Vi にはない}
{Vi mが |+vertsplit| 機能付きでコンパイルされたときの
み有効}
オプション 'equalalways' が適用されるときに、
ver ウィンドウの高さにのみ効果がある
hor ウィンドウの幅にのみ効果がある
both ウィンドウの高さと幅、両方に効果がある
*'ed'* *'edcompatible'* *'noed'* *'noedcompatible'*
'edcompatible' 'ed' 切替 (既定ではオフ)
グローバル
コマンド ":substitute" のフラグ 'g' と 'c' を、次に別の方を指定するま
でずっと効力を持つようにする。|complex-change| を参照。オプション
'gdefault' も参照。
このオプションをオンに設定するのは推奨できない!
*'encoding'* *'enc'* *E543*
'encoding' 'enc' 文字列 (既定では "latin1" または $LANG)
グローバル
{Vi にはない}
{Vi mが |+multi_byte| 機能付きでコンパイルされたときの
み有効}
Vim内部で使われる文字エンコーディングを設定する。そのエンコーディング
はバッファやレジスタ内のテキスト、expression 内の文字列、ファイル
viminfo 内のテキスト等に適用される。つまり、このオプションはVimの通常
扱う文字の種類を設定する。指定できる値については |encoding-names| を参
照。
NOTE: このオプションの値を変更しても、Vim内部の既存のテキストのエンコー
ディングは変化しないので注意。非アスキー文字がおかしくなる恐れもある。
既定の値から変更しないか、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' の既定値は変更される。
*'endofline'* *'eol'* *'noendofline'* *'noeol'*
'endofline' 'eol' 切替 (既定ではオン)
バッファについてローカル
{Vi にはない}
ファイルを書き込むときに、このオプションがオフでオプション 'binary' が
オンならば、ファイルの最終行に <EOL> が書き込まれない。このオプション
はファイルの編集を始めるときには自動的にオンになる。ただし編集を始めた
ファイルの最終行に <EOL> がないときにはオフになる。普通はユーザがこの
オプションを設定する必要はない。'binary' がオフのときはこのオプション
は使われない。'binary' がオンのときは、ファイルの最終行に <EOL> があっ
たかどうかを復元するためにこのオプションが使われる。そのため、ユーザが
ファイルを書き込むときに元のファイルの状態を保つことができるし、変更す
ることもできる。
*'equalalways'* *'ea'* *'noequalalways'* *'noea'*
'equalalways' 'ea' 切替 (既定ではオン)
グローバル
{Vi にはない}
オンのときは、ウィンドウを分割したり閉じたりした後、全てのウィンドウが
自動的に同じサイズになる。これはこのオプションがオフになった瞬間にも起
こる。オフのときは、ウィンドウを分割するとカレントウィンドウのサイズだ
けが減り、他のウィンドウに変化はない。ウィンドウを閉じると、
('splitbelow' と 'splitright' に従って) 閉じたウィンドウの隣のウィンド
ウの行数が増す。
水平に分割されたウィンドウと垂直に分割されたウィンドウが混在していると
きは、サイズの最小値が計算され、いくつかのウィンドウは (余裕があれば)
大きくなる。'eadirection' はサイズの変化する方向を指定する。
'winfixheight', 'winfixwidth' を設定するとウィンドウの高さ・幅が変わる
のを防ぐことができる。
新規ウィンドウ作成時にウィンドウサイズが指定された場合、ウィンドウサイ
ズは等しくならない(これは複雑だが、将来は実装されるかもしれない)。
*'equalprg'* *'ep'*
'equalprg' 'ep' 文字列 (既定では "")
グローバル/バッファについてローカル |global-local|
{Vi にはない}
コマンド "=" に使う外部プログラムを指定する。値が空のときは内部関数が
整形に使われる (オプション 'lisp', 'cindent' または 'indentexpr')。
Vim が内部フォーマットなしでコンパイルされているときは indent コマン
ドが使われる。
環境変数は展開される |:set_env|。値に空白や '\' を含める方法については
|option-backslash| を参照。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。
*'errorbells'* *'eb'* *'noerrorbells'* *'noeb'*
'errorbells' 'eb' 切替 (既定ではオフ)
グローバル
エラーメッセージに伴ってベル (ビープ音または画面フラッシュ) を発生させ
る。このオプションはエラーメッセージにのみ適用され、メッセージのない多
くのエラー (例えばNormalモードで <ESC> を打ち込んだとき) についてはベ
ルは常に使用される。ベルをビープ音にしたり、画面フラッシュにしたり、無
効にしたりするためには、オプション 'visualbell' を参照。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。
*'errorfile'* *'ef'*
'errorfile' 'ef' 文字列 (Amigaでの既定値: "AztecC.Err",
他の既定値: "errors.err")
グローバル
{Vi にはない}
{Vi mが |+quickfix| 機能付きでコンパイルされたときのみ
有効}
QuickFixモードで使われるエラーファイルの名前 (|:cf| を参照)。
コマンドライン引数 "-q" が指定されたときは、オプション 'errorfile' は
それに続く値に設定される。|-q| を参照。
コマンド ":make" には「使われない」。それについては 'makeef' を参照。
環境変数は展開される |:set_env|。値に空白や '\' を含める方法については
|option-backslash| を参照。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。
*'errorformat'* *'efm'*
'errorformat' 'efm' 文字列 (既定値はとても長い)
グローバル/バッファについてローカル |global-local|
{Vi にはない}
{Vi mが |+quickfix| 機能付きでコンパイルされたときのみ
有効}
エラーファイルの内容の書式を、関数 scanf 風に指定する (|errorformat|
を参照)。
*'esckeys'* *'ek'* *'noesckeys'* *'noek'*
'esckeys' 'ek' (Vimの既定値: オン, Viの既定値: オフ)
グローバル
{Vi にはない}
オンのときは、<Esc> で始まるファンクションキーもInsertモードで認識され
るようになる。オフのときは、<Esc> で始まるカーソルキーとファンクション
キーは、Insertモードで使うことができない。オンにすることの利点は、
<Esc> を一回打ち込むだけですぐに認識され、1秒ほど待つ必要がないことだ。
このオプションをオフにしなくても、オプション 'timeoutlen' と
'ttimeoutlen' を変更してみるとよい。 Note 'esckeys' がオフのときでも、
どのキーをマッピングすることもできるが、そのままではカーソルキーは使用
できないことに注意。
NOTE: このオプションは 'compatible' がオンのときはViの既定値に、オフの
ときはVimの既定値に設定されるので注意。
*'eventignore'* *'ei'*
'eventignore' 'ei' 文字列 (既定では "")
グローバル
{Vi にはない}
{Vi mが |+autocmd| 機能付きでコンパイルされたときのみ
有効}
Autocommand のイベント名のうち、無視したいもののリスト。
"all"が含まれていると全ての autocommand のイベントが無視され、
autocommand は実行されなくなる。
それ以外では、値はイベント名のコンマ区切りのリストである。例:
*'expandtab'* *'et'* *'noexpandtab'* *'noet'*
'expandtab' 'et' 切替 (既定ではオフ)
バッファについてローカル
{Vi にはない}
Insertモードで <Tab> を挿入するとき、代わりに適切な数の空白を使う。ま
た、コマンド '>' や '<' によるインデントや、オプション 'autoindent' が
オンのときのインデントでも空白を使う。'expandtab' がオンのときに本当の
タブを挿入するには、CTRL-V<Tab> を使うこと。|:retab| と
|ins-expandtab| も参照。
NOTE: このオプションは、'compatible' がオンのときはオフになるので注意。
*'exrc'* *'ex'* *'noexrc'* *'noex'*
'exrc' 'ex' 切替 (既定ではオフ)
グローバル
{Vi にはない}
カレントディレクトリ内のファイル .vimrc, .exrc や .gvimrc 等の読み込み
を有効にする。このオプションをオンにするなら、オプション 'secure' もオ
ンにするよう検討すること (|initialization| を参照)。ファイル .exrc,
.vimrc や .gvimrc にローカルなものを用いると潜在的な安全保護の漏れを招
くので、注意して使うこと!
|.vimrc| と |gui-init| も参照。
安全上の理由から、このオプションをモードライン|modeline|やサンドボック
ス|sandbox|の中で設定することはできない。
*'fileencoding'* *'fenc'* *E213*
'fileencoding' 'fenc' 文字列 (既定では "")
バッファについてローカル
{Vi mが |+multi_byte| 機能付きでコンパイルされたときの
み有効}
{Vi にはない}
カレントバッファのファイルの文字エンコーディングを設定する。
'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" での終了を妨げないのでい
いかもしれません。
*'fe'*
NOTE: Vim version 6.0 以前では、このオプションはVim全体の文字エンコー
ディングを指定していたことに注意。これは誤りだった。そのためには代わり
に 'encoding' を使うこと。古い省略形式の名前は 'fe' だが、これはもう使
われていない。
*'fileencodings'* *'fencs'*
'fileencodings' 'fencs' 文字列 (既定値: "ucs-bom",
'encoding' の値がUnicodeに設定されたときは
"ucs-bom,utf-8,default,latin1")
グローバル
{Vi にはない}
{Vi mが |+multi_byte| 機能付きでコンパイルされたときの
み有効}
値は、既存のファイルの編集を開始するときに考慮される文字エンコーディン
グのリストである。ファイルが読み込まれると、Vimは指定されたうちの先頭
の文字エンコーディングを使おうとする。そのときエラーが発見されると、値
のリスト内で次に並んでいるエンコーディングが試される。あるエンコーディ
ングでうまくいくとわかると、'fileencoding'がそれに設定される。すべての
エンコーディングが失敗すると'fileencoding'は空文字列に設定され、
'encoding'の値が使われることになる。
警告: 文字エンコーディングを変換すると、情報が失われるおそれが
ある!'encoding' が "utf-8" だと、変換は大抵成功するし、逆変換
をしても同じテキストになる。'encoding' が "utf-8" でないときは、
非アスキー文字が失われるかもしれない!変換できない文字をどう扱
うかは引数|++bad|で指定することができる。
空ファイルやアスキー文字のみのファイルではほとんどのエンコーディングで
うまくので、'fileencodings'の最初の値が使われる("ucs-bom"を除く。これ
はBOMがなければいけない)。他のエンコーディングがよければ自動コマンドイ
ベントBufReadPostを使って、そのエンコーディングが使われるかどうかを判
定すること。例:
これは、ファイルが空白文字しか含まないとき'fileencoding'を
"iso-2022-jp"に設定する。
引数|++enc|を使ったときは'fileencodings'の値は考慮されない。
新規ファイルには'fileencodings'は適用されないことに注意。代わりに
'fileencoding'のグローバルな値が適用される。これを設定するには:
とする。これは存在しないファイルが空のファイルとは異なるエンコーディン
グになることを意味する。
ファイル先頭にユニコードの BOM (Byte Order Mark: バイト順マーク) があ
るかどうか調べるには、"ucs-bom" という特別な値が使える。この値を
"utf-8" 等のUnicode系の値よりも後に指定すると正しく機能しない。
8ビットエンコーディング("latin1"など)の項目はリストの最後に書かなけれ
ばならない。そうしないとVimがエラーを検出できず、常にそのエンコーディ
ングが適用されてしまうためである。
特別な値"default"を使うと環境からのエンコーディングが適用される。これ
が'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-DOS, MS-Windows, OS/2 での既定値: "dos",
Unix での既定値: "unix",
Macintosh での既定値: "mac")
バッファについてローカル
{Vi にはない}
バッファにファイルを読み込んだり、バッファからファイルに書き込んだりす
るときに使われる <EOL> を、カレントバッファについて設定する。
dos <CR> <NL>
unix <NL>
mac <CR>
"dos" が使われたとき、ファイル末尾の CTRL-Z は無視される。
|file-formats| と |file-read| を参照。
ファイルの文字エンコーディングについてはオプション 'fileencoding' を参
照。
'binary' がオンのときは、