*starting.txt* For
Vim バージョン 7.3. Last change: 2011 Jul 22
VIMリファレンスマニュアル by Bram Moolenaar
Vimる
*starting*
1. Vimの起動引数
|vim-arguments|
2. Amiga版のVim
|starting-amiga|
3. eVimについて
|evim-keys|
4. 初期化
|initialization|
5. $VIM と $VIMRUNTIME
|$VIM|
6. サスペンド
|suspend|
7. 設定の保存
|save-settings|
8. ビューとセッション
|views-sessions|
9. viminfo ファイル
|viminfo-file|
==============================================================================
1. Vimの起動引数
*vim-arguments*
たいていは1つのファイルを編集するために次のようなコマンドでVimを起動する
vim filename
*-vim*
より一般的に言えば、Vimは次の書式で起動することができる:
vim [option | filename] ..
オプション引数とファイル引数は混在でき、幾つでも与える事ができる。しかし引数を
取るオプションには注意が必要である。
さまざまなViのバージョンとの互換性に付いては
|cmdline-arguments|を参照。
正確には、以下の5つの項目から1つを選んで編集が開始される:
*-file* *---*
filename 1つ以上のファイル名が与えられた場合。まずは最初の1つが編集ファ
イルとしてバッファに読み込まれる。カーソルはそのバッファの1行
目に置かれる。
'-'で始まるファイル名を指定するには、オプションと区別するため
に、引数に"--"を置く。例:
"--"の後の全ての引数はファイル名として解釈されるので、その他の
オプションや引数"+command"は使用することができない。
*--*
- この引数はExモードで起動するかどうかで意味が異なる。
ノーマルモードで起動する場合:
新しいバッファに、標準入力を読み込んで編集を始める。このコマン
ドを使用するとまず標準入力を読み込み、それから標準エラー出力を
読み込む。例:
バッファには未保存のテキストが含まれるので、「変更(modified)」
のマークがつけられる。ただし読み込み専用モードで起動する場合は
除く。例:
Exモードで起動する場合:
サイレントモードで起動する。
|-s-ex|を参照。
*-t* *-tag*
-t
{tag} タグを開く。
{tag}がtagsファイルから検索され、関連づけられた
ファイルが現在のファイルとされ、関連づけられたコマンドが実行さ
れる。大抵これはCプログラムを編集するときに使用され、"tag"は関
数名である事が多い。それにより、その関数を含むファイルが自動的
に開かれ、カーソルがその関数の定義位置に設定される(
|tags|を参
照)。
*-q* *-qf*
-q
[errorfile] クイックフィックスモードで起動。
[errorfile]に指定したファイル
が読み込まれ最初のエラーが表示される。
|quickfix|を参照。
[errorfile]が与えられない場合、オプション
'errorfile'がファイル
名として使用される。省略値に関しては
'errorfile'を参照。
{Vi にはない}
(nothing) 上記の4つのうち、どれも指定せずにVimを起動すると、新しいバッ
ファが用意される。それは名前のない空のバッファである。
起動時のモードはプログラム名を"vim"とは別の名前にすることで指定できる。それは
次のようにオプションを与えたのと同じである:
ex vim -e Exモードで起動(
|Ex-mode|を参照)。
*ex*
exim vim -E 改良版Exモードで起動(
|Ex-mode|を参照)。
*exim*
(通常はインストールされない)
view vim -R 読み込み専用モードで起動(
|-R|を参照)。
*view*
gvim vim -g GUIで起動(
|gui|を参照)。
*gvim*
gex vim -eg GUIのEXモードで起動。
*gex*
gview vim -Rg GUIの読み込み専用モードで起動。
*gview*
rvim vim -Z "vim"の制限モードで起動(
|-Z|を参照)。
*rvim*
rview vim -RZ "view"の制限モード。
*rview*
rgvim vim -gZ "gvim"の制限モード。
*rgvim*
rgview vim -RgZ "gview"の制限モード。
*rgview*
evim vim -y 簡易操作のVim(
|-y|を参照)
*evim*
eview vim -yR "evim"と同じ。読み込み専用モード。
*eview*
vimdiff vim -d 差分モードで起動
|diff-mode|
gvimdiff vim -gd 差分モードで起動
|diff-mode|
これらの別名の後ろに付けられる文字は無視される。たとえばGUIで起動するのに
"gvim-5"という名前を付けることができる。もちろんその名前で実行可能なファイルが
なければならない。
UNIXでは通常、Vimという名前の実行可能ファイルが一つあり、それにに対して違う名
前のリンクが用意される。使用しているシステムがリンクをサポートせず、実行ファイ
ルのコピーを幾つも作りたくないのならば、リンクの代わりにエイリアスを使うことも
できる。例:
*startup-options*
オプション引数はどんな順番で与えても良い。一文字のオプションは一つのダッシュ
(-)の後に組み合わせる。引数"--"の後にはオプション引数を置くことはできない。
VMSでは全てのオプション引数は小文字であるとみなされる。大文字を指定するにはス
ラッシュを前に置く。つまり"-R"でリカバリモード、"-/R"で読み込み専用となる。
--help
*-h* *--help*
-h 使用法(ヘルプ)を表示して終了する。{Viにはない機能}
そのテキストを保存するには
|info-message|を参照。
*--version*
--version バージョン情報を表示して終了する。出力は
|:version|コマンドと一
緒。{Viにはない機能}
そのテキストを保存するには
|info-message|を参照。
*--noplugin*
--noplugin プラグインを読み込まない。
'loadplugins'オプションをオフにす
る。
{Vi にはない}
Note:
|-u|引数でもプラグインを読み込まないようにできる:
引数 vimrcファイル プラグイン
なし yes yes
-u NONE no no
-u NORC no yes
--noplugin yes no
--startuptime
{fname} *--startuptime*
起動処理の間、経過時間のメッセージをファイル
{fname} に書き出
す。.vimrc やプラグインの読み込み、最初のファイルの読み込みに
おいて、どこで時間がかかっているかを調べるために役に立つ。
{fname} が既に存在するときはそのファイルに追記される。
{
|+startuptime| 付きでコンパイルされたときのみ有効}
*--literal*
--literal ファイル名を文字どおり解釈する。ワイルドカードを展開しない。
Unixでは必要ない、Vimは常にファイル名を文字どおり解釈する(シェ
ルがワイルドカードを展開する)。
全てのファイル名に適用される。この引数の前に指定したものも同
じ。
*-+*
+
[num] 最初に編集されるファイルの"num"行目にカーソルを置いて開く。
"num"がなかった場合には、カーソルは最終行に置かれる。
*-+/*
+/
{pat} 最初に編集されるファイルの、"pat"を含む最初の行にカーソルを置
いて起動する(指定可能な検索パターンについては
|pattern|を参
照)。
+
{command} *-+c* *-c*
-c
{command} 最初のファイルが読み込まれた後(加えてそのファイルに適応される
autocommandとmodelineが処理された後)に
{command}が実行される。
"command"はExコマンドとして解釈される。"command"にスペースを含
んでいる場合には、ダブルクォートで挟まれている必要がある(これ
は使われているシェルに依存する)。例:
Note: Vimコマンドの引数として"+"か"-c"をあわせ、最大10個まで使
うことができる。これらの引数は与えられた順番で実行される。"-S"
引数は"-c"として同じように数える。
{Vi は一つのコマンドしか許さない}
--cmd
{command} *--cmd*
vimrcファイルを処理する前に
{command}を実行する。それ以外は
-c
{command} と同じである。"-c"引数とは別に、10個まで使うこと
ができる。
*-S*
-S
{file} 最初のファイルが読み込まれた後に
{file}を実行する。これは次のも
の簡単にしたものである:
"-c"と混ぜて使うことができ、複数指定できる。"-c"と合わせて10個
まで指定できる。
{file}の先頭文字には"-"は使えない。
{Vi にはない}
-S "-S Session.vim"と同じ。最後の引数として使われたときや、その後
に他のオプション引数が続いたときのみこのように解釈される。
*-r*
-r リカバリモード。ファイル名の引数なしで実行した場合には、存在す
るスワップファイルのリストが表示される。ファイルを指定すると、
クラッシュしたセッションを復活させるために、スワップファイルが
読み込まれる。
|crash-recovery|を参照。
*-L*
-L -rと同じ。{幾つかのバージョンのViだけにある: "List recoverable
edit sessions"(復活可能な編集セッションのリスト)のListのL}
*-R*
-R 読み込み専用モード。オプション
'readonly'が、編集される全ての
ファイルに設定される。これにより、まだバッファを編集することは
できるが、偶然にファイルを上書きしてしまうようなことは防がれ
る。もしも、読み込み専用モードにいることを忘れてバッファへ変更
を行ったとしても、":w!"のようにExコマンドに「ビックリマーク」
を付けることで上書きすることが可能。
'readonly'オプションは
":set noro"としてオフに設定することが可能である(オプションを説
明した章
|options|を参照)。その後の編集は読み込み専用モードでは
なくなる。実行ファイルを"view"として起動した場合は、この-R引数
と同じ動作になる。オプション
'updatecount'は10000に設定され、こ
れはスワップファイルがそう頻繁には自動更新されなくなるというこ
とである。
*-m*
-m 変更を保存できなくする。オプション
'write'がオフに設定され、
ファイルを保存することができなくなる。オプション
'write'をオン
すれば、再び保存することが可能になる。
{Vi にはない}
*-M*
-M 変更できないようにする。オプション
'modifiable'がオフに設定さ
れ、変更を加えることができなくなる。さらに、オプション
'write'
がオフに設定され、ファイルを保存することができなくなる。
'modifiable'と
'write'をオンにすれば、変更を加えて保存できるよ
うになる。
{Vi にはない}
*-Z* *restricted-mode*
-Z 制限モード。外部シェルを実行するあらゆるコマンドの使用を不許可
にする。これにはサスペンドである
CTRL-Zや、":sh"、フィルタリン
グ、system() 関数、バッククォートの評価、delete()、rename()、
mkdir()、writefile()、libcall()、などが含まれる。
{Vi にはない}
*-g*
-g VimをGUIモードで起動する。
|gui|を参照。
{Vi にはない}
*-v*
-v ExをViモードで起動する。実行ファイルが"ex"や"gvim"である時にだ
け、違いが現れる。gvimでは可能ならば"GUI"ではないモードで起動
する。
*-e*
-e VimをExモードで起動する
|Q|。実行ファイルの名前が"ex"以外の時に
意味がある。
*-E*
-E Vimを改良版Exモードで起動する
|gQ|。実行ファイルの名前が"exim"
以外の時に意味がある。
{Vi にはない}
*-s-ex*
-s サイレント(もしくはバッチ)モード。Vimが"ex"で起動されるか、こ
のオプションよりも先に"-e"が付いていた場合にだけ働く。そうでな
い場合には
|-s|を参照。
|-s|として使うときには引数をとる。
端末の替わりにファイルからExコマンドを実行する場合に使用され
る。ほとんどのプロンプトとメッセージは抑制される。警告とエラー
のメッセージも抑制される。
次のコマンドの出力は標準出力へ表示される:
:print
:list
:number
:set オプション値を表示するため。
'verbose'が0以外のときにはメッセージは抑制されずに標準エラー
出力へ表示される(デバッグ用)。
'term' と $TERM は考慮されない。
Vimが停止しているようだったら"qa!
<Enter>"と入力してみてほし
い。Vimがユーザーの入力を待っているときでもプロンプトは表示さ
れない。
初期化処理はスキップされる(このオプションが引数"-u"と一緒に使
われた場合は除く)。
例:
*-b*
-b バイナリモード。ファイルを入出力する再に
<NL>だけを行のセパレー
タとして認識するようになる。オプション
'expandtab'は無効化され
る。オプション
'textwidth'は0に設定される。
'modeline'はオフに設
定される。オプション
'binary'がオンに設定される。これは
vimrc/exrcのファイルが読み込まれた直後、引数で与えられたファイ
ルが読み込まれるよりも前に行われる。
|edit-binary|も参照。
{Vi にはない}
*-l*
-l Lispモード。オプション
'lisp'と
'showmatch'をオンに設定する。
*-A*
-A アラビア語モード。オプション
'arabic'をオンに設定する。
|+arabic|(これは
|+rightleft|も含んでいる)が有効なときだけ使用
できる。そうでないときにはVimはエラーメッセージを出力して終了
する。
{Vi にはない}
*-F*
-F Farsi(ペルシア語)モード。
'fkmap'と
'rightleft'オプションをオン
に設定する。(
|+rightleft|と
|+farsi|有効にしてコンパイルした時
にだけ有効。そうでない場合Vimはエラーメッセージを表示して終了
する)。
{Vi にはない}
*-H*
-H Hebrew(ヘブライ語)モード。オプション
'hkmap'と
'rightleft'をオン
に設定する。(
|+rightleft|を有効にしてコンパイルした時にだけ使
用可。そうでない場合Vimはエラーメッセージを表示して終了する)。
{Vi にはない}
*-V* *verbose*
-V
[N] 詳細表示する。オプション
'verbose'を
[N]に設定する(
Nを省略した場
合は10が設定される)。":source"が実行される度、viminfoの読み書
きを行う度に情報が表示される。Vimの起動時と終了時の動作を調べ
るときに便利である。
{Vi にはない}
例:
-V
[N]{filename}
-V と同様で、さらに
'verbosefile' を
{filename} に設定する。そ
の結果、メッセージは表示されずにファイル
{filename} に書き出さ
れる。
{filename} は数字で始まってはならない。
例:
*-D*
-D デバッグする。スクリプトの最初のコマンドを実行するところからデ
バッグを開始する。
|debug-mode|
{
|+eval|が有効な場合のみ利用可能}
{Vi にはない}
*-C*
-C コンパチブルモード。オプション
'compatible'をオンに設定する。
ファイル.vimrcファイルが存在する場合にもViとの互換性を得ること
ができる。プラグインや起動時スクリプトで ":set nocompatible"
とするとこのオプションより優先されるため、起動後には
'nocompatible'になってしまうだろう。どこで最後に設定されたかを
調べるには次のコマンドを使う:
'compatible' がオンになっていると動かないプラグインもあ
る。起動処理の後でこれをセットするにはこのようにする:
|compatible-default| も参照。
{Vi にはない}
*-N*
-
N 非コンパチブルモード。オプション
'compatible'をオフに設定する。
ファイル.vimrcがないときや、"-u NONE" としているときに、
'nocompatible'(Vimの拡張を有効)にすることができる。
|compatible-default|も参照。
{Vi にはない}
*-y* *easy*
-y 簡易モード。
|evim|や
|eview|と同じ。
'insertmode'をオンに設定し
て起動し、モードレスエディタのように振舞う。このスイッチを指定
すると、$VIMRUNTIME/evim.vimが自動的に読み込まれ、一般的なエ
ディタと同じ操作ができるようなマッピングが設定される。
|evim-keys|を参照。利用可能ならGUIが使用される。
{Vi にはない}
*-n*
-n スワップファイルを使用しない。クラッシュしたときに編集していた
ファイルを復旧することはできなくなる。フロッピーディスクのよう
な非常に低速なメディアのファイルを読んだり編集したいときに有用
である。":set updatecount=0"と設定するのと同じである。オプショ
ン
'updatecount'に0より大きい値を設定することで、スワップファイ
ルの使用を有効にすることができる。例、":set uc=100"。
NOTE: -n と -b を合わせて -nb としないこと。-nb には別の意味が
ある:
|-nb|
ファイルvimrcの実行解釈の直後で、GUIが初期化される前に
'updatecount'が0に設定される。よってファイルvimrcの中で
'updatecount'を設定しても上書きされてしまうが、gvimrcでの設定
は上書きされない。
|startup|を参照。ディスクへのアクセスを減ら
したいのならば(ノートPCを使用している場合など)、"-n"を使用する
替わりに、
'updatetime'を設定し、
'updatecount'に非常に大きい値
を設定して、編集中のファイルを保存する時に":preserve"を利用す
ると良い。この方法だとクラッシュからの復旧の可能性を保てる。
{Vi にはない}
*-o*
-o
[N] N個のウィンドウを水平分割して開く。
[N]が与えられない場合には、
引数で指定された全てのファイルに対して1個のウィンドウが開かれ
る。画面に十分な広さがない場合には、始めのほうの数個のファイル
だけがウィンドウを伴って表示される。逆にファイルの数よりもウィ
ンドウの数が多く指定された場合、多い分のウィンドウは空ファイル
の編集用として開かれる。
{Vi にはない}
*-O*
-O
[N] N個のウィンドウを垂直分割して開く。それ以外は
|-o|と同じ。
-oと-Oが両方指定されたときは最後に指定された方を使用する。
{Vi にはない}
*-p*
-p
[N] N 個のタブページを開く。
[N] が省略されると、引数として与えられ
た各ファイルに対し1つずつタブページを開く。最大値は
'tabpagemax' ページ(既定値は 10)である。引数よりも多くのタブペー
ジが作られる場合は、最後の数個のタブページは空ファイルを開く。
|tabpage| も参照。
{Vi にはない}
*-T*
-T
{terminal} 端末の種類を"terminal"に設定する。これはVimがユーザの端末へ送
るコードに影響を与える。Vimはユーザが使用している端末の種類を
自分で判断することができるので、通常これは必要がない
(
|terminal-info|を参照)。
{Vi にはない機能}
*-d*
-d diffモードで起動する。
|vimdiff|と同じ。
{Vi にはない} {
|+diff|が有効な場合のみ利用可能}
-d
{device} Amiga専用機能。
|+diff|が無効な場合のみ利用可能。
|-dev|と同じよ
うに機能する。
*-dev*
-d
{device} Amiga専用機能:
{device}が編集用に開かれる。
普通、ウィンドウの位置とサイズを設定するために"-d
con:x/y/width/height"の形式で指定する。例、"-d
con:30/10/600/150"。しかしその他のAUX:のようなデバイスの編集を
開始することにも使用できる。
{Vi にはない}
*-f*
-f GUI: Vimを起動したプログラム(プロセス)から独立しない。
'f'は"foreground"を意味する。省略すると、GUI版のVimは新しいプ
ロセスへforkして、現在のプロセスは終了してしまう。gvimの編集
セッションが終わるのを待つプログラム(メールソフトやニュース
リーダなど)には、"-f"を使うべきだろう。gvimがforkしないように
するには、自分の. gvimrcの中で
'guioptions'に'f'を加えれば良
い。
Note: "-gf"でGUIをフォアグラウンドで実行開始できるが、"-fg"だ
と前景色の設定になってしまう。
|gui-fork|参照。
Amiga: Vimを新しいウィンドウで起動しない。編集作業が終わるのを
待つプログラム(メールソフトやニュースリーダ)によって Vimが起動
される時に、このオプションは使用される。
|amiga-window|を参照。
{Vi にはない}
*--nofork*
--nofork GUI: forkしない。
|-f|と同じ。
*-u* *E282*
-u
{vimrc} 初期化のためにファイル
{vimrc}が読込まれる。その他の初期化はス
キップされる。
|initialization|を参照。これにより特殊なマッピン
グや設定をした、特殊なモードでVimを起動することができる。これ
を簡単に使用するにはシェルのエイリアスが使えるだろう。例:
autocommandを使うことも考慮すべきである。
|autocommand|を参照。
{vimrc}に"NONE"(全て大文字)が指定された時には、設定ファイルや
環境変数による初期化、.gvimrcによるGUIの初期化も含め、全て省略
される。プラグインも読み込まれない。
{vimrc}が"NORC"(全部大文字)のときは"NONE"と同じように処理され
るが、プラグインは読み込まれる。
"-u"引数を使用すると副作用としてオプション
'compatible'がオンに
設定される。これは予期せぬ動作を引き起こすかもしれない。
|'compatible'|を参照。
{Vi にはない}
*-U* *E230*
-U
{gvimrc} GUIがスタートする時にファイル
{gvimrc}が読込まれる。その他のGUI
初期化はスキップされる。
{gvimrc}にNONEが指定された場合、初期化
ファイルは何も読込まれない。
例外: システムのメニューファイルは常に読込まれる。
{Vi にはない}
*-i*
-i
{viminfo} デフォルトのviminfoの代わりにファイル
{viminfo}を使用する。
"NONE"(全て大文字)が指定された場合には、
'viminfo'が指定された
り、":rv"や":wv"が使われても、viminfoは読み書きともに使用され
ない。
|viminfo-file|参照。
{Vi にはない}
*-x*
-x ファイルの読み書き時に暗号化を施す。暗号の鍵としてオプション
'key'に設定された値を使用する。全ての書き込みは、テキストに対
して鍵を使って暗号化を行ってから なされる。ファイルを読込む時
には、Vimは暗号化ファイルかチェックし、自動的に鍵を聞いてくる
ので、引数'-x'は必要でない。
|encryption|
*-X*
-X Xサーバと通信しない。そうして、カレントウィンドウのタイトルを
取得したり、Xのクリップボードを使ったコピー/ペーストを使用した
りしない。端末エミュレータでVimを使用するときにXサーバとの通信
速度が遅い場合にそれを回避できる。
効果があるか確かめるには
|--startuptime| を使ってみること。
UnixかVMSで
|+X11|が有効な場合のみ意味がある。
特定の端末を使用するときだけ通信を無効にするには、オプション
'clipboard'を参照。
X11 Session Management Protocol (XSMP) の処理が組み込まれてい
る場合、その通信にも大きな延滞が生じるため、無効にする。
(例えばクライアントとサーバが通信するため)あとからXサーバとの
通信をつなげるには
|serverlist()|関数を呼び出す。ただしXSMPの処
理は有効にならない。
{Vi にはない}
*-s*
-s
{scriptin} スクリプトファイル
{scriptin}が読込まれる。ファイルの中のキャラ
クタは、全てユーザがタイプしたものとして解釈される。エディタが
終了する前にファイルの終端に達した場合、以降のキャラクタはキー
ボードから読込まれる。Exモード動作時には働かない、
|-s-ex|を参
照。
|complex-repeat|も参照。
{Vi にはない}
*-w_nr*
-w
{number}
-w
{number} オプション
'window' を
{number} に設定する。
*-w*
-w
{scriptout} Vimを終了するまで、ユーザが入力した全部の文字が記録され、ファ
イル
{scriptout}に書き出される。これは"vim -s"や":source!"で読
込まれるスクリプトファイルを作成するのに役立つ。既にファイル
"scriptout"が存在する場合には、そのファイルに追加保存する。
|complex-repeat|も参照。
{scriptout} は数字で始まってはならない。
{Vi にはない}
*-W*
-W
{scriptout} -wに似ているが、アペンド(追加)せずに、既にあるファイルを上書き
する。
{Vi にはない}
--remote [+
{cmd}]
{file} ...
サーバとして機能している他のVimで
{file}を開く。
この引数の前にファイルを指定することはできない。
|--remote|を参照。
{Vi にはない}
--remote-silent [+
{cmd}]
{file} ...
--remoteと同じ。ただしサーバがなくてもメッセージを出さない。
|--remote-silent|を参照。
{Vi にはない}
--remote-wait [+
{cmd}]
{file} ...
--remoteと同じ。ただしサーバが終了するまで待機する。
|--remote-wait|を参照。
{Vi にはない}
--remote-wait-silent [+
{cmd}]
{file} ...
--remote-waitと同じ。ただしサーバがなくてもメッセージを出さな
い。
|--remote-wait-silent|を参照。
{Vi にはない}
--servername
{name}
Vimサーバの名前を指定する。これは通信先のサーバ名、あるいは起
動するVimが使用する名前である。
|--servername|を参照。
{Vi にはない}
--remote-send
{keys}
{keys}をVimサーバに送り、終了する。
|--remote-send|を参照。
{Vi にはない}
--remote-expr
{expr}
Vimサーバで
{expr}を評価し、その結果を標準出力に出力する。
|--remote-expr|を参照。
{Vi にはない}
--serverlist
稼働しているVimサーバの一覧を出力する。
|--serverlist|を参照。
{Vi にはない}
--socketid
{id} *--socketid*
GTK+ GUIのVimのみ。GtkPlugを使用し、別アプリケーションのウィン
ドウで起動するようにする。詳細は
|gui-gtk-socketid|を参照。
{Vi にはない}
--windowid
{id} *--windowid*
Win32 GUI の Vim のみ。ウィンドウ
{id} を親ウィンドウにしよう
と試みる。成功するとそのウィンドウの内側で起動する。詳しくは
|gui-w32-windowid| を参照。
{Vi にはない}
--echo-wid
*--echo-wid*
GTK+ GUIのVimのみ。ウィンドウのIDを標準出力に出力する。この値
はgvimをkpartウィジェットに埋め込むのに使用できる。出力の書式
は:
{Vi にはない}
--role
{role} *--role*
GTK+ 2 GUIのみ。メインウィンドウの役割(role)を
{role}に設定す
る。ウィンドウの役割はウィンドウマネージャがウィンドウを識別し
て、ウィンドウの位置等を復元するのに使われる。この引数はログイ
ン時にセッションを復元するときに自動的に使用される。
|gui-gnome-session|を参照。
{Vi にはない}
-P
{parent-title} *-P* *MDI* *E671* *E672*
Win32のみ。親になるアプリケーションのタイトルを指定する。可能
であればVimはそのMDIアプリケーションのウィンドウ内で起動する。
{parent-title}が親アプリケーションのウィンドウのタイトルに使わ
れていて、明確に区別できる必要がある。
Note: まだ簡単に実装されているだけである。全てのアプリケーショ
ンで動くわけではない。メニューは機能しない。
-nb
*-nb*
-nb=
{fname}
-nb:
{hostname}:
{addr}:
{password}
Netbeansと接続し、エディタサーバになる。2番目の型は接続情報を
格納したファイルを指定する。3番目の型はNetbeansに接続するため
のホスト名、アドレス、パスワードを指定する。
|netbeans-run|
実行ファイルが"view"だったならば、Vimは読込み専用モードで起動する。"view"から
"vim"へハードリンクかシンボリックリンクを作成すると便利だろう。"vim -R"とする
ことでも読込み専用モードで起動できる。
実行ファイルの名前が"ex"ならば、VimはExモードで起動する。これは":"コマンドだけ
しか使えないことを意味している。しかし引数"-v"が与えられれば、Vimは常にノーマ
ルモードで起動する。
unix互換のシステムでX11 GUIサポートが有効ならさらに多くの引数が利用可能であ
る。
|gui-resources|を参照。
==============================================================================
2. Amiga版のVim
*starting-amiga*
VimをWorkbenchから起動する
*workbench*
--------------------------
Workbench上でアイコンを2度クリックすればVimを起動することができる。そうすると
空のバッファで起動するだろう。
"Project"アイコンを使用することで、1つ以上のファイルを開くことができる。アイコ
ンの"Default Tool"にはVimの実行ファイルの完全なパスを設定し、".info"ファイルの
名前には、編集するテキストファイルの名前を設定する。このアイコンを2度クリック
すると、Vimが起動してそのファイルを開く(そのファイルがあれば)。シフトキーを押
しながらアイコンをクリックし、最後のファイルを2度クリックすることで、複数の
ファイルを開くことができる。これら全てのアイコンの"Default Tool"は同じでなけれ
ばならない。
Workbenchからではファイル名以外の引数は、Vimへ与えることができない。
Vimウィンドウ
*amiga-window*
----------
Vimは起動されたCLIウィンドウの中で動作する。Vimが"run"や"runback"コマンド、
あるいやWorkbenchから起動された場合には、自分自身でウィンドウを開く。
技術的詳細:
新しいウィンドウを開くためにちょっとしたトリックを使う。Vimは普通のCLI
ウィンドウの中で起動されていないことを検出するとすぐに、"t:"にあるスク
リプトファイルを作成する。このスクリプトファイルにはVimを起動したのと
同じコマンドに加えて"endcli"コマンドが含まれている。このスクリプトファ
イルは"newcli"コマンドと一緒に実行される (これが行われる時には"c:run"
と"c:newcli"コマンドが必要)。スクリプトファイルはリブートするか、手動
で消すまで存在しつづける。この方法は":sh"と":!"コマンドが正しく機能す
る必要がある。しかしVimが-fオプション(フォアグラウンドモード)で起動さ
れた時には、この方法は使われない。Vimを-fオプションで起動した時には、
その終了を待つからである。スクリプトのトリックを使うと、Vimを呼び出し
たプログラムはその終了を知ることができない。オプション-fはメールプログ
ラムなど編集のセッションが終わったことを 検出したい場合に、Vimを起動す
る方法として使用される。だからオプション-fが指定された時には、":sh"と
":!"コマンドは使用することができない。
Vimは自動的にウィンドウのサイズを認識して対応する。Amiga DOS 1.3の元では、表示
の更新速度を上げるために、fastfontsのプログラム"FF"の支援を受けて動作する。
==============================================================================
3. eVimについて
*evim-keys*
EVimはVimをモードレスエディタとして実行する。これはViらしくない発想ではある
が、Vimの操作方法を覚えられるほどには使用しない人の助けになる。ノーマルモード
のコマンドを覚えることで編集作業がより簡単になるということを利用者が感付いてく
れれば幸いである。
Evimでは以下のオプションが標準設定から変更される:
:set nocompatible ViにはないVim独自の機能を使う
:set insertmode 常時挿入モードを使用する
:set hidden 非表示になったバッファを開放しない
:set backup バックアップファイルを消さない(VMS以外)
:set backspace=2 どこでもバックスペースを使用できるようにする
:set autoindent 新しい行を入力するときに自動的にインデントする
:set history=50 Exコマンドの使用履歴を50回前まで記録する
:set ruler カーソルの位置を表示する
:set incsearch 検索時、入力途中にマッチ箇所を表示する
:set mouse=a 全てのモードでマウスを使う
:set hlsearch 検索した文字を強調表示する
:set whichwrap+=<,>,[,]
<Left>と
<Right>を使った左右の移動で行を跨ぐ
:set guioptions-=a 非Unixのみ。選択時に自動的にコピーしない
キーマッピング:
<Down> 実際の行ではなく表示された行の単位で移動する
<Up> 同上
Q "gq"コマンドで文章整形する。
<BS> ビジュアルモードで選択範囲を削除する
CTRL-X ビジュアルモードで選択範囲を切り取ってクリップボードに
コピーする
<S-Del> 同上
CTRL-C ビジュアルモードで選択範囲をクリップボードにコピーする
<C-Insert> 同上
CTRL-V クリップボードから貼り付ける(どのモードでも)
<S-Insert> 同上
CTRL-Q 本来の
CTRL-Vの機能
CTRL-Z 元に戻す(undo)
CTRL-Y やり直し(redo)
<M-Space> システムメニューを表示
CTRL-A 全てを選択する
<C-Tab> 次のウィンドウへ。
CTRL-W w と同じ
<C-F4> ウィンドウを閉じる。
CTRL-W c と同じ
追記:
- ":behave mswin"が使用される
|:behave|
- 構文強調表示が有効になる
- ファイルタイプ別の機能が有効になる。ファイルタイプ用のプラグインやインデント
が使用される。
- テキストファイルでは
'textwidth'が78に設定される
ヒント: ノーマルモードのコマンドを連続して使用するには
CTRL-Lを使用する。
|i_CTRL-L|
==============================================================================
4. 初期化
*initialization* *startup*
このセクションはVimの非GUIバージョンについて書く。GUIをスタートさせた時の追加
の初期化は
|gui-fork|を参照。
スタート時に、Vimは環境変数とファイルを調べ、然るべく値を設定する。Vimはこの順
序で取り掛かる。
1. オプション
'shell'と
'term'を設定する
*SHELL* *COMSPEC* *TERM*
環境変数SHELLが存在するならば、オプション
'shell'を設定するのに使われ
る。MS-DOSとWin32ではSHELLが設定されていない場合COMSPECの値が使用され
る。
環境変数TERMが存在するならば、オプション
'term'を設定するのに使われる。
しかし、後で GUI を開始するときに
'term' は変更される(下のステップ 8
を参照。
2. 引数を処理する
Vimを起動するときに指定したオプション引数やファイル名を調べる。指定さ
れたファイルのバッファを作成する(まだ読み込まない)。
引数
|-V| を使うと、初期化処理のデバッグ用にこれ以降で起こることを表示
したりログに書き出したりできる。
3. 環境変数とファイルのExコマンドを実行する
環境変数の値は一つのExコマンドラインとして読まれるので、複数のコマンド
を実行したい時には'|'か"
<NL>"で区切る必要がある。
*vimrc* *exrc*
"vimrc"ファイルは初期化コマンドを含んだファイルである。vimrcファイルは
一行ずつExコマンドとして実行される。"exrc"とほぼ等価である。それらは同
じタイプのファイルであるが、"exrc"が常にViによって使われるのに対して、
"vimrc"はVim特有のものである。
|vimrc-intro|も参照。
個人の初期化ファイルの推奨される配置場所:
Unix $HOME/.vimrc
OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc)
MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc
Amiga s:.vimrc or $VIM/.vimrc
Vimが"-u filename"で起動された場合、デフォルトのvimrcの代わりに
"filename"が使われる。続く初期化処理の4.までがスキップされる。
"vim -u NORC"によりファイルを読み込むことなくこれらの初期化を省略する
ことができる。"vim -u NONE"を使用するとさらにプラグインも読み込まな
い。
|-u|
起動引数"-s"によりVimがExモードで起動されたならば、続く4.までの初期化
処理がスキップされる。オプション"-u"だけが処理される。
*evim.vim*
a. Vimを
|evim|や
|eview|として、あるいは
|-y|引数を指定して起動すると
$VIMRUNTIME/evim.vimが実行される。
*system-vimrc*
b. Unix、MS-DOS、MS-Windows、OS/2、VMS、Macintosh、RISC-OSそしてAmigaで
は、システムのvimrcファイルが初期化のために読み込まれる。このファイル
のパスは":version"コマンドによって確認できる。普通は"$VIM/vimrc"であ
る。
Note: このファイルは
'compatible'モードであっても読み込まれる。
'compatible'の自動リセットはこれが終わった後に行われることになってい
る。必要ならば":set nocp"コマンドを追加する。
Macintosh では $VIMRUNTIME/macmap.vim が読み込まれる。
*VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* *$MYVIMRC*
c. 初期化のために4つの場所が検索される。最初に見つかったものが使用され、
残りは無視される。ここまでで環境変数 $MYVIMRC が設定されていなく、
VIMINIT を使っていないなら、$MYVIMRC に最初にみつかったファイルが設定
される。
- 環境変数VIMINIT(
|compatible-default|も参照) (*)
その内容はExコマンドとして解釈される。
- ユーザvimrcファイル:
"$HOME/.vimrc" (for Unix and OS/2) (*)
"s:.vimrc" (for Amiga) (*)
"home:.vimrc" (for Amiga) (*)
"$VIM/.vimrc" (for OS/2 and Amiga) (*)
"$HOME/_vimrc" (for MS-DOS and Win32) (*)
"$VIM/_vimrc" (for MS-DOS and Win32) (*)
Note: Unix, OS/2そしてAmigaでは、".vimrc"がなかった場合には、
MS-DOS互換のファイルシステムを使用することを考え、"_vimrc"も試
みられる。MS-DOSとWin32では"_vimrc"を探したあとで、ロングファ
イルネームの仕組みを使用して".vimrc"が探される。
Note: MS-DOSとWin32では"$HOME"がまず検査される。"_vimrc"と
".vimrc"のどちらもない場合には、"$VIM"が調べられる。$VIMが設定
されていない場合については
|$VIM|参照。
- 環境変数EXINIT。
その内容はExコマンドとして解釈される。
- ユーザのexrcファイル。vimrcと同じだが、vimrcがexrcによって置き換え
られている。しかし ".exrc" と "_exrc" のどちらか1つだけが使われる。
これはシステムによる。(*)の注釈は適用されない。
d.
'exrc'オプションがオン(初期状態ではオフ)の場合、現在のディレクトリで4
つのファイルが検索される。最初に見つかったものだけが使用され、残りは無
視される。
- The file ".vimrc" (for Unix, Amiga and OS/2) (*)
"_vimrc" (for MS-DOS and Win32) (*)
- The file "_vimrc" (for Unix, Amiga and OS/2) (*)
".vimrc" (for MS-DOS and Win32) (*)
- The file ".exrc" (for Unix, Amiga and OS/2)
"_exrc" (for MS-DOS and Win32)
(*) このファイルを使用するか環境変数を使用した場合、自動的に
'compatible'
オプションがオフに設定される。
|compatible-default|を参照。
4. プラグインスクリプトを読み込む
*load-plugins*
次のコマンドと同じことを実行する:
オプション
'runtimepath'に指定された各ディレクトリのサブディレクトリ
"plugin"にある拡張子が".vim"となっているファイルを実行する(各ディレク
トリごとに名前順で実行される)。サブディレクトリに対しても再帰的に検索
される。
次の場合にはプラグインを読み込まない:
- vimrcファイルでオプション
'loadplugins'がオフに設定された。
- 起動時の引数に
|--noplugin|が指定された。
- 起動時の引数に"-u NONE"が指定された。
-
|+eval|の機能を無効にしてVimをコンパイルした。
Note: 引数に"-c set noloadplugins"と指定しても意味がない。このコマンド
はこの時点ではまだ実行されない。"--cmd 'set noloadplugins'" とすればよ
い。
|--cmd|
5.
'shellpipe'と
'shellredir'を設定する
それ以前に設定されていなければ、
'shell'オプションに従って
'shellpipe'と
'shellredir'オプションが設定される。つまり自分で設定しなくても、Vimが
適切な
'shellpipe'と
'shellredir'の値を設定してくれる。
6. "-n"コマンド引数が使用されていたら、
'updatecount'を0に設定する
7. バイナリオプションを設定する
Vimの起動時に"-b"フラグが与えられた場合、この時点でバイナリ編集用のフ
ラグが設定される。
|-b|参照。
8. GUIの初期化を行う
"gvim"として起動された場合、GUIの初期化が行われる。
|gui-init|参照。
9. viminfoファイルを読み込む
'viminfo'オプションが空でなければ、viminfoファイルが読み込まれる。
|viminfo-file|参照。
10. quickfixファイルを読み込む
Vimに"-q"フラグが与えられた場合、quickfixファイルが読み込まれる。これ
に失敗するとVimは終了する。
11. 全てのウィンドウを開く
|-o|フラグが与えられた場合、ウィンドウが開く(しかしまだ表示されない)。
|-p|フラグが与えられた場合、タブページが作られる(しかしまだ表示されな
い)。
スクリーンが切り替えられると、描画が始まる。
"-q"フラグがVimに与えられた場合、最初のエラーにジャンプする。全ての
バッファがロードされる。
12. スタートアップコマンドが実行される
"-t"フラグがVimに与えられた場合、タグにジャンプする。
|-c|と
|+cmd|引数で与えられたコマンドが実行される。
スタートフラグがリセットされ、has("vim_starting") がゼロを返すようにな
る。
'insertmode'オプションがセットされていると、インサートモード入る。
|VimEnter|のautocommandが実行される。
初期化のヒント:
スタンダードセットアップ:
全ての編集セッションに有効な、デフォルト設定とキーマッピングを設定するvimrc
ファイルを作成する。それを既に3bで述べた位置に置く:
~/.vimrc (Unix and OS/2)
s:.vimrc (Amiga)
$VIM\_vimrc (MS-DOS and Win32)
Note vimrcファイルを作るとデフォルトで
'compatible'オプションがオフに設定され
る。
|compatible-default|参照。
ローカルセットアップ:
特定のディレクトリだけにおいて編集時に必要になるコマンドを vimrcファイルに書
き、そのディレクトリに".vimrc" (MS-DOSとWin32は"_vimrc")という名前で置く。
NOTE: Vimに、これらのファイルを見るように指定するには、
'exrc'オプションをオン
にする必要がある。
|trojan-horse|(トロイの木馬)も参照。
システムセットアップ:
これは複数人で使うUNIXシステムを管理し、全員のデフォルト設定を行いたい時に適用
される。デフォルト設定とキーマッピングを行うコマンドをvimrcファイルに記述し、
":version"コマンドで表示される場所に置く。
Vimの現在状態をファイルに保存する:
オプションの値を変えたときや、キーマッピングを作成した時には、それらを後で再利
用するためにvimrcファイルに保存したいだろう。現在の設定状態をファイルに保存す
るためには
|save-settings|を参照。
Viユーザの設定の問題の回避:
Viは環境変数EXINITとファイル"~/.exrc"を初期化に使用する。もし(Vimの設定が)Viに
干渉して欲しくないならば、それらを使う替わりにVIMINITとvimrcを使用する。
Amigaの環境変数:
Amigaには2種類の環境変数が存在する。1つはDOS 1.3(かそれ以上)のsetenvコマンド
で、これはVimによって認識される。AmigaDos 1.3のマニュアルを参照。古いManxのSet
コマンド(バージョン5.0以前)の環境変数は、認識されない。
MS-DOSの行区切り文字:
MS-DOS風(MS-DOS自信、Win32、そしてOS/2)では、全てのvimrcファイルは行区切文字と
して
<CR> <NL>を使用していると仮定する。
<NL>だけを行区切文字として持つファイル
や、":map xx yy^M"のような設定のファイルを使う場合、問題を引き起こす。末尾の^M
は無視されてしまうだろう。
*compatible-default*
Vim が起動すると、オプション
'compatible' がオンに設定される。これは初期化時に
使用される。ユーザの vimrc ファイルが見つかるか、現在のディレクトリに vimrc が
見つかるか、もしくは環境変数 VIMINIT が設定されている場合にはすぐに、
'nocompatible' が設定される。これには副作用があって、設定が変更されてしまうオプ
ションがある(
'compatible' 参照)。しかしその時点でユーザが値を設定していないオ
プションだけが変更される。これは Vim の起動時に
'compatible' が設定された場合
と同様である。
Note: これはシステムの vimrc ファイルが存在する場合や、コマンド
ライン引数
|-u| つきで起動されたときは起こらない。gvimrc に対しても同様である。
最初に見つかった vimrc、gvimrc が $MYVIMRC、$MYGVIMRC に設定される。
'compatible' を .vimrc で設定すると副作用が発生する。マッピングは見つかった時
点で解釈されるので、"
<CR>"のようなものを使う時に違いが生じる。もしもマッピング
が
'compatible' の値に依存している場合、そのマッピングを定義する前に
'compatible' を設定する。
以上の振る舞いは次の方法で無効にすることができる:
- コマンドライン引数に"-
N"を与えた場合、vimrcファイルが存在しなくても
'nocompatible'が使用される。
- コマンドライン引数に"-C"が与えられた場合、vimrcが存在しても
'compatible'が使
用される。
- 引数"-u
{vimrc}"が使用された場合、
'compatible'が使われる。
- 実行ファイルの名前が"ex"で終わっていた場合、"-C"引数が与えられたのと同様に働
く: vimrcファイルが存在しても
'compatible'が使用される。これは"ex"としてVimが
起動された時にはVimは"ex"のように振舞うようにするためである。
トロイの木馬を回避する:
*trojan-horse*
現在のディレクトリにある"vimrc"や"exrc"を読み込むときに、
'secure'オプションを
設定することで、安全性のために幾つかのコマンドを無効にすることができる。タグ
ファイル内のコマンドを実行する際にも常にこれが行われる。そうでないと他人が作成
した悪意を持ったコマンドを、偶然実行してしまう可能性がある。使用不可になるコマ
ンドは、シェルを起動するものと、ファイルに書き込むものと、そして":autocmd"であ
る。":map"コマンドは表示され、どのようなマッピングがなされたか確認することがで
きる。
ローカルなvimrcファイル内で全てのコマンドを実行したい場合には、EXINIT
かVIMINIT環境変数か、グローバルな"exrc"もしくは"vimrc"ファイルで
'secure'オプ
ションをオフに設定する。現在のディレクトリにある"vimrc"と"exrc"からは、理由は
明らだが、これは設定できない。
UNIXシステムでは、vimrcファイルの所有権がユーザにないときだけ
'secure'
が適用される。警告: vimrcかexrcを含むアーカイブを展開したときには、そのファイ
ルはあなた自身のものになる。そこには安全性保護などない。Vimを起動する前に現在
のディレクトリにvimrcファイルがないかチェックするか、
'exrc'オプションをオフに
設定したほうが良い。幾つかのUNIXシステムでは一般ユーザがファイルに"chown"を行
うことを許しているものがある。これは別のユーザが悪意に満ちたvimrcを作成し、所
有者を貴方にすることを可能にしている。注意されたし!
タグサーチコマンドを使う時には、実行されるサーチコマンド(タグファイル
の各行の最後の部分)は常に安全なモードで行われる。これは現在のディレクトリにあ
るvimrc/exrcからコマンドが実行されるのと、ちょうど同じように働く。
*slow-start*
Vimの起動に時間がかかる場合は
|--startuptime| 引数を使って原因を探すことができ
ます。よくある原因としては次のようなものがあります:
- UnixでGUIやX11を有効にしている場合(":version"の出力で"+GUI"と"+X11"をチェッ
ク)、共有ライブラリをロードしX11サーバに接続する必要がある。GUIとX11を無効に
してコンパイルしたバージョンを試して欲しい。これにより実行ファイルが小さくも
なるだろう。
CUI端末でVimを起動するときの引数に
|-X|を指定するとXサーバと接続しないように
できる。
- "viminfo"を使用している場合、viminfoファイルを読み込むのに少し時間がかか
る。viminfoが原因ならば一時的にviminfoを無効にすることによって確認することが
できる(Vimを引数"-i NONE"で起動する。
|-i|)。":set viminfo='20,<50,s10"と設定
して、レジスタに保存される行数を減らしてみるのも良い。
|viminfo-file|.
*:intro*
ファイル名を与えずにVimを起動した場合、(Vimのことを知らない人に向けて)紹介メッ
セージが表示される。そのメッセージはなんらかの操作によって画面が再描画されると
すぐに消される。もう一度メッセージをみるには、":intro"コマンドを使用する(表示
するスペースがなければ一部だけが表示される)。起動時に紹介メッセージを表示しな
いようにするには
'shortmess'に'I'フラグを追加する。
*info-message*
起動引数に
|--help|や
|--version|を指定するとVimはメッセージを出力して終了する。
通常はそのメッセージは標準出力に送られるので、リダイレクトしてファイルに書き込
むことができる:
Vimでその出力を取り込むには:
gvimは標準出力と標準エラー出力が端末に繋がってないときに、自身がデスクトップか
ら起動され、メッセージを出力する端末がないものと判断する。このせいで上記の
":read"コマンドを使用した例は使えない。使用できるようにするには
'shellredir'を
標準設定の">&"から">"へ変更する:
しかしこのようにしてもgvimが標準出力を使用しないようなシステムでは機能しない。
==============================================================================
5. $VIM と $VIMRUNTIME
*$VIM*
環境変数の"$VIM"は、設定ファイル".vimrc"のような、Vimが使用するさまざまなファ
イルの置き場所を見つけるために利用される。"$VIM"の値はシステムに依存する。
|startup|を参照。
全てのユーザが環境変数$VIMを設定しなくてすむように、Vimは次の順番で$VIMの値を
決定する:
1. 環境変数$VIMが定義されていればそれを使う。$VIMを定義してVimが使用するファイ
ルをそのディレクトリから探し出すようにできる。例:
2.
'helpfile'が問題のある環境変数を含んでいなければその値を使う(標準設定は
"$VIMRUNTIME/doc/help.txt"であり、これはニワトリと卵の問題を含んでいる)。
ファイル名("help.txt"など)の部分は取り除かれる。そしてディレクトリ名の最後
が"doc"、"runtime"、"vim
{version}"(例えば"vim54")、のどれかならそれも取り除
かれる。
3. MSDOS、Win32、OS/2、ではVimの実行可能ファイルがあるディレクトリを使用する。
ディレクトリ名の最後が"/src"ならそれは取り除かれる。配布されているVim一式
の.zipファイルをあるディレクトリに展開し、検索パスを調整して使っているよう
なら便利である。ディレクトリ名の最後が"runtime"か"vim
{version}"(例えば
"vim54")ならそれは取り除かれる。
4. Unixではコンパイル時に指定したインストール先のディレクトリを使用する
(":version"の出力を見て確認できる)。
このうちのどれかが使用できるならVimは環境変数$VIMを設定する。あとからその値を
変更するには":let"コマンドを次のように使う:
*$VIMRUNTIME*
環境変数の"$VIMRUNTIME"は、ヘルプファイルや構文強調表示の定義ファイルのよう
な、Vimが使用するさまざまな支援ファイルの置き場所を見つけるために使用される。
例えば、主要なヘルプファイルは通常は"$VIMRUNTIME/doc/help.txt"である。
普通はユーザが自分で$VIMRUNTIMEを設定せずに、Vimに設定させる。Vimは次の順番で
$VIMRUNTIMEの値を探す:
1. 環境変数$VIMRUNTIMEが設定されていればそれを使う。ランタイムファイルを特殊な
場所に置くときに設定する。
2. "$VIM/vim
{version}"ディレクトリがあればそれを使う。
{version}はVimのバージョ
ン番号から'-'や'.'を除いた物である。例えば"$VIM/vim54"。これは$VIMRUNTIMEと
して一般的な値である。
3. "$VIM/runtime"ディレクトリがあればそれを使う。
4. $VIMの値を使う。これは古いバージョンとの互換性のためである。
5. オプション
'helpfile'が設定されていて'$'を含んでいないとき、その値を使用す
る。最後の"doc/help.txt"は取り除かれる。
Unixでコンパイル時に$VIMRUNTIMEの初期値を設定した場合(":version"の出力をみて確
認できる)、2から4は無視される。そして5を試したあとにコンパイル時に設定した値が
使用される。つまり$VIMの値を使わずにコンパイル時に設定した値を使用するというこ
とである。これは$VIMが"/etc"でランタイムファイルが"/usr/share/vim/vim54"にある
ような場合に便利である。
このうちのどれかが使用できるならVimは環境変数$VIMRUNTIMEを設定する。あとからそ
の値を変更するには":let"コマンドを次のように使う:
シェル内で $VIMRUNTIME の値が必要な場合(例えば、ヘルプファイルを grep するスク
リプトなど)は、次のようにすれば得られる:
==============================================================================
6. サスペンド
*suspend*
*iconize* *iconise* *CTRL-Z* *v_CTRL-Z*
CTRL-Z ":stop"のようにVimをサスペンドする。
ノーマルモードとビジュアルモードで動作する。挿入モード
とコマンドラインモードでは、
CTRL-Zは通常のキャラクタ文
字として入力・挿入される。ビジュアルモードで使用したと
きはサスペンドから復帰するとノーマルモードになる。
Note:
CTRL-Z がアンドゥになる場合は
|mswin.vim| を参照。
:sus[pend][!] or
*:sus* *:suspend* *:st* *:stop*
:st[op][!] Vimをサスペンドする。
'autowrite'がオンのときに'!'を付けなかったときには、
ファイル名を持つ未保存のバッファは全て保存される。
'!'を付けたときや、
'autowrite'がオフのときには、未保存
のバッファは保存されないので、後でVimをフォアグラウン
ドに戻すのを忘れてはならない。
GUIモードでは、サスペンドはgvimのアイコン化として実装されている。Windows 95/NT
では、gvimは最小化される。
多くのUNIXシステムでは、Vimを
CTRL-Zでサスペンドすることが可能である。これは
ノーマルモードとビジュアルモードにおいて有効である(次の章
|vim-modes|を参照)。
Vimを再びフォアグラウンドに戻せば、続きの作業を行うことができる。それ以外のシ
ステムでは、
CTRL-Zは新しいシェルをスタートさせる。これはコマンド":sh"と同じで
ある。この場合、シェルを終了させればVimで続きの作業を行うことができる。
訳注:
|vim-modes|に何がある?
X-windowsではVimをサスペンドするとセレクションの所有権が失われる。つまり選択し
ていた内容を他のアプリケーションにコピーすることができない(そうしないとVimが停
止しているのでセレクションを得ようとしたプログラムがフリーズしてしまう)。
==============================================================================
7. 設定の保存
*save-settings*
多くの人はvimrcファイルを手作業で編集しているだろう。この機能はそのような人に
優れた利便性を提供する。vimrcファイルを自動的に作成するコマンドが用意されてい
て、作成したファイルをそのまま、もしくは一部分だけをコピーして使用することがで
きる。
*:mk* *:mkexrc*
:mk[exrc]
[file] 現在のキーマッピングと変更されているオプションを
[file]に保存する(
[file]を省略するとカレントディレクト
リの".exrc"に保存される)。
[file]がすでにあるときには
保存しない。
{Vi にはない}
:mk[exrc]!
[file] 現在のキーマッピングと変更されているオプションを
[file]に保存する(
[file]を省略するとカレントディレクト
リの".exrc"に保存される)。
[file]がすでにあるときには
上書き保存する。
{Vi にはない}
*:mkv* *:mkvimrc*
:mkv[imrc][!]
[file] ":mkexrc"と同じだが
[file]を省略したときにカレントディ
レクトリの".vimrc"に保存する。コマンド":version"もファ
イルに書き込まれる。
{Vi にはない}
これらのコマンドは":map"コマンドや":set"コマンドをファイルに書き込む。書き込ん
だコマンドを実行するとキーマッピングやオプションが現在と同じように設定される。
オプションの
'columns'、
'endofline'、
'fileformat'、
'key'、
'lines'、
'modified'、
'scroll'、
'term'、
'textmode'、
'ttyfast'、
'ttymouse'は端末やファイルに依存する
ため含まれない。
Note: オプションの
'binary'、
'paste'、
'readonly'が含まれるが、
これは必ずしも望むような動作ではないかもしれない。
マッピングに特殊なキーが使われているときは、マッピングが正しく解釈されるよう
に、オプション
'cpoptions'が一時的に初期値に戻される。Viとの互換性はなくなる
が、別の端末でもそのマッピングを使用できるようになる。
グローバルなマッピングだけが保存される。バッファローカルなマッピングは保存され
ない。
一般的な方法は、デフォルトの".vimrc"ファイルを使い、幾つかの":map"や":set"コマ
ンドを変更してそれを保存するというものである。
一般的な方法は、デフォルトの".vimrc"ファイルを使い、":map"や":set"コマンドで設
定を変更し、それをファイルに保存するというものである。まず
":source ~piet/.vimrc.Cprogs"のようなコマンドでデフォルトの".vimrc"を読み込
み、実際に設定を変更してから、":mkvimrc!"を使ってカレントディレクトリに設定を
保存する。もしもこのファイルをデフォルトの.vimrcにしたいならば、UNIXではホーム
ディレクトリへ、Amigaならばs:へ、MS-DOSならば$VIMディレクトリへそのファイルを
移動する。オートコマンド
|autocommand|やモードライン
|modeline|も、同じ方法を
使って設定することができる。
*vimrc-option-example*
vimrcにオプションの設定を1つだけ加えるには次のようにする:
1. Vimでvimrcファイルを開く。
2. 期待どおりになるようにオプションを設定する。例えば、
'guifont'を設定していろ
んなフォントを試す。
3. オプションを設定する行を追加する。値を入力するのに'='レジスタを使用する。
例えば、オプション
'guifont'の設定を加えるには:
[
<C-R>は
CTRL-R、
<CR>はエンターキー、
<Esc>はエスケープキー]
特別な文字(特にスペース)はエスケープする必要がある。
Note: .vimrcファイルを作成するときにはオプション
'compatible'が持つ副作用の影響
に注意する必要がある。
|'compatible'|を参照。
副作用を防ぐため、":mkvimrc"、":mkexrc"、":mksession"は最初にオプション
'compatible'の設定を出力する。
==============================================================================
8. ビューとセッション(Views and Sessions)
*views-sessions*
ユーザーマニュアルの
|21.4|と
|21.5|で簡単に紹介されている。
*View* *view-file*
ビューとは、あるウィンドウに適用された設定の集合である。ビューを保存しておい
て、あとからそれを復元することで、開いていたテキストをまた同じように表示するこ
とができる。ウィンドウに関連したオプションやマッピングも復元されるので、ビュー
を保存したときと同じ状態で作業を再開することができる。
*Session* *session-file*
セッションとは、全てのウィンドウのビューとグローバルな設定のことである。セッ
ションを保存しておいて、あとからそれを復元することで、各ウィンドウのレイアウト
を元に戻すことができる。セッションを利用してすばやくプロジェクト(作業単位)を切
り替えることが可能で、そのプロジェクトで開いていたファイルを自動的に開くことが
できる。
ビューとセッションはviminfoファイルを拡張した便利な機能である。ビューとセッ
ションをviminfoファイル(
|viminfo-file|)と併用することで全ての情報を記録するこ
とができる。
保存しておいたビューやセッションを素早く再開するには引数
|-S|を使う:
これら全ては
{Vi にはない} 機能である。{
|+mksession|が有効な場合のみ利用可能}
*:mks* *:mksession*
:mks[ession][!]
[file] 現在のセッションを復元するためのVimスクリプトを作成す
る。
[!]を付けたときはファイルを上書保存する。
[file]を省略したときは"Session.vim"に保存する。
":mksession"の出力は":mkvimrc"の出力に似ているが、さらにいくつかのコマンドが追
加されている。どのコマンドが出力されるかはオプション
'sessionoptions'に依存す
る。保存したファイルは、コマンド":source"で実行すると次の効果がある:
1.
'sessionoptions'に"options"が含まれているときは、グローバルなマッピングとオ
プションを復元する。スクリプトローカルなマッピングは復元されない。
2.
'sessionoptions'に"globals"が含まれているときは、大文字で始まって1つ以上の
小文字を含む名前を持ったグローバルな変数を復元する。
3. 現在読み込まれているバッファを全て開放する。
4.
'sessionoptions'に"curdir"が含まれているときは、カレントディレクトリを復元
する。あるいは、
'sessionoptions'に"sesdir"が含まれているときは、カレント
ディレクトリをセッションファイルが保存されているディレクトリに変更する。
5.
'sessionoptions'に"winpos"が含まれているときは、GUIウィンドウの位置を復元す
る。
6.
'sessionoptions'に"resize"が含まれているときは、スクリーンのサイズを復元す
る。
7.
'sessionoptions'に"buffers"が含まれているときは、バッファリストと各バッファ
におけるカーソルの位置を復元する。隠れ(hidden)バッファや開放済み(unloaded)
バッファも含めて、全てのバッファを復元する。"buffers"が含まれていないとき
は、ウィンドウに表示されているバッファのみが復元される。
8. 全てのウィンドウとそのレイアウトを復元する。
'sessionoptions'に"help"が含ま
れているときは、ヘルプウィンドウも復元する。
'sessionoptions'に"blank"が含ま
れているときは、無名のバッファを編集していたウィンドウも復元する。
'sessionoptions'に"winsize"が含まれていて、ヘルプウィンドウや無名バッファの
ウィンドウが除外されていないときは、ウィンドウのサイズも復元する(スクリーン
サイズに比例する)。"winsize"が含まれていないときは、ウィンドウは妥当なサイ
ズになる。
9. 各ウィンドウのビューを
|:mkview|の機能と同じように復元する。しかし
'viewoptions'ではなく
'sessionoptions'が使われる。
10. セッションファイルと同じ名前で最後が"x.vim"(eXtraのx)という名前のファイル
があればそのファイルを実行する。この仕組を使ってセッションに関連した処理や
設定、例えばGUIのメニューを作成するなど、を行うことができる。
訳注:セッションファイルがSESSION.vimならSESSIONx.vimが実行される。
セッションを復元すると、内部変数の"v:this_session"(
|this_session-variable|)を
使って現在のセッションの名前(フルパス)を利用できる。
それを利用したマッピングの例:
これは現在のセッションを保存してから、別のセッションを開こうとするものである。
'sessionoptions' から "tabpages" が除かれていない限り、セッションはすべてのタ
ブページを含む。
|tab-page|
セッションファイルが読み込まれると、自動コマンドイベント
|SessionLoadPost| が
発生する。
*SessionLoad-variable*
セッションファイルを読み込んでいる間、グローバル変数 SessionLoad は 1 になる。
プラグインはこれを使ってイベント SessionLoadPost が発生するまで、なんらかの作
業を後回しにすることができる。
*:mkvie* *:mkview*
:mkvie[w][!]
[file] 現在のウィンドウの状態を復元するためのVimスクリプトを
作成する。
[!]を付けたときはファイルを上書保存する。
[file]を省略したり、1から9の数字を指定したときは、
'viewdir'に指定したディレクトリに適切な名前で保存され
る。
'viewdir'に指定したディレクトリがないときには、そ
のディレクトリも作成される。
[file]を省略、もしくは数字を指定した場合は、常に上書き
保存される。そして、ビューを復元するときには
|:loadview|を使用する。
[file]にファイル名を指定すると、編集を再開するためのコ
マンドがそのファイルに保存される(この場合は
'viewdir'は
使われない)。
":mkview"の出力は次の項目を含んでいる:
1. ウィンドウで使用している引数リストの復元する。グローバルな引数リスト使って
いるときにはそれが使用される。
引数リストのインデックスも復元される。
2. ウィンドウで編集していたファイルを開く。編集していたファイルがなければ、空
のウィンドウが作成される。
3.
'viewoptions'が"localoptions"を含んでいるときは、そのバッファやウィンドウに
特有な(ローカルな)、マッピング、短縮(abbreviations)、オプション、を復元す
る。セッションの一部としてビューを保存するときに、
'sessionoptions'に
"options"が含まれているときは、オプションのグローバルな値とローカルな値が両
方保存される。
4.
'viewoptions'が"folds"を含んでいるときは、手作業で設定した折畳みを復元す
る。折畳みの開閉状態も復元する。
5. ファイルにおけるカーソルとスクロールの位置を復元する。閉じた折畳みがあると
うまく機能しない。
6. ローカルなカレントディレクトリを復元する。グローバルなカレントディレクトリ
と違っている場合のみ。
訳注:
|current-directory|
Note: ビューとセッションは完璧ではない:
- 全てを復元するわけではない。例えば、関数、オートコマンド、":syntax on"、など
は含まれない。レジスタやコマンドラインの履歴などは、ビューやセッションではな
く、viminfoに保存される。
- グローバルなオプションの設定は、その値を初期設定から変更していた場合のみ保存
される。現在の設定が初期設定とは違うときにセッションを復元しても、初期設定に
は戻らない。しかしながら、ローカルなオプションは初期設定に戻される。
- 既存のマッピングは警告なく上書きされる。そのようなときはよく分からないエラー
が発生するだろう。
- 手動で設定した折畳みや、その開閉状態を復元すると表示が乱れることがある。それ
はビューを保存してから復元する間に、編集していたファイルを変更した場合であ
る。
- Vimスクリプトはまったくもって効率的ではない。しかしそうは言っても、自分でコ
マンドを再入力するよりは断然早い。
*:lo* *:loadview*
:lo[adview]
[nr] 編集中のファイルに関連したビューを読み込む。
[nr]を省
略すると、":mkview"で保存したビューが読み込まれる。
[nr]を付けた場合は、":mkview
[nr]"で保存したビューが読
み込まれる。
":mkview"と":loadview"の組は、1つのファイルに対して全部で10コのビューを管理で
きる。ビューは
'viewdir'で指定したディレクトリに保存される。ビューはファイル名
を利用して管理されている。そのため、ファイルの名前を変更したり、(シンボリック)
リンクファイルを使ってアクセスした場合は、対応するビューを見つけることができな
い。
たまには
'viewdir'を綺麗に掃除するといいだろう。
*.cファイルを編集するときにビューを自動的に保存、復元するには:
==============================================================================
9. viminfoファイル
*viminfo* *viminfo-file* *E136*
*E575* *E576* *E577*
いったんVimを終了させ、後に再び起動する時には、通常多くの情報が失われてしま
う。viminfoファイルは終了する時の情報を保存しておくのに使用され、それにより再
起動した時には同じ状態で編集セッションを続けることができる。
ユーザーマニュアルの
|21.3|で簡単に紹介されている。
viminfoファイルにはこんなものを記憶できる:
- コマンドラインの履歴
- 検索文字列の履歴
- 入力(
|input()|)の履歴
- レジスタの内容
- 複数のファイルのマーク
- ファイルの中の位置を指し示すマーク
- 最後の検索/置換パターン('n'と'&'のため)
- バッファのリスト
- グローバル変数
コンパイル時に
|+viminfo|機能が無効にされていたら、viminfoファイルはサポートさ
れない。
セッションファイルも使用することができる。viminfoファイルは「している仕事」に
依存しない、という点で異なる。通常viminfoファイルは一つしか存在しない。セッ
ションファイルは、ある特定の編集作業の状態を保存するのに使う。セッションファイ
ルは、作業しているプロジェクト毎に複数作成することが可能である。Viminfoもセッ
ションファイルどちらも、Vimをスタートしてすぐに好みの設定を行うという目的のた
めに、効果的に使用できる。
|session-file|
*viminfo-read*
Vimが起動した時に
'viminfo'オプションが空でなかったら、viminfoファイルが読み込
まれ、その情報は適切に使用される。変数
|v:oldfiles| がセットされる。起動時には
マークは読み込まれない(しかしファイルマークは読み込まれる)。起動時に
'viminfo'
オプションをどうやって設定するのかは
|initialization|を参照。
*viminfo-write*
Vimが終了する時に
'viminfo'が空でなかったら、情報がviminfoファイルに保存される
(もし既に存在した場合には、それと混合(マージ)される)。
'viminfo'オプションは、
どのような情報を保存するか、またどのくらいの量を保存するべきかその限界を指定す
る為の情報を含む文字列である。(
'viminfo'参照)。
Note: Unixにおける注意点:
- viminfoファイルには入力したテキストや、使用したコマンドが記載されているの
で、他人に覗かれないように保護(パーミション設定)したほうが良い。
- 複数のユーザでviminfoファイルを共有したい時(例えば他のユーザへ"su"する時な
ど)には、グループもしくは全員にviminfoファイルへの書き込み権限を与える。Vim
が新しくviminfoファイルを保存するときに、その設定を維持する。しかし、誰にで
もviminfoファイルを読ませたり書かせたりすべきではないし、注意が必要。
- 現在の"本当"のユーザによって書き込み不能なviminfoファイルは、Vimは決して上書
きしない。これは"su"でrootユーザになった時、しかし$HOMEがまだ通常ユーザの
ホームディレクトリのままの時の支援となる。そうでないとVimはroot所有の、他の
誰にも読めないviminfoファイルを作成してしまう。
- viminfo ファイルはシンボリックリンクであってはならない。セキュリティ上の問題
を避けるためである。
マークは個々のファイルに対して別々に保存される。ファイルが読み込まれ
'viminfo'
が空でない場合、viminfoファイルからマーク情報が読み込まれる。
NOTE: マークはVim
が正常に終了したときにだけ保存される。また、Vimの起動中に開かれた":bdel"されて
いないファイル全てのマークが記録される。もしも":bdel"で破棄したファイルについ
てマークを保存しておきたいのならば、":wv"を使う。'['と']'のマークは保存されな
いが、'"'は保存される。'"'マークはファイルを開いたときに前回のカーソル位置を復
元するのに非常に便利である。
'viminfo'に文字"r"が与えられた時には、一切のマーク
情報は記録されない。これはリムーバブルメディア上のファイルのマークが保存される
のを避ける場合に使う(MS-DOSでは"ra:,rb:"を、Amigaでは"rdf0:,rdf1:,rdf2:"を使う
viminfo ファイルにマークが記録されているファイルの名前が
|v:oldfiles| のリスト
に追加される。
*viminfo-file-marks*
大文字のマーク('Aから'Z)はviminfoファイルが書かれるときに、保存される。数字の
マーク('0から'9)はちょっと特別である。viminfoファイルが書き込まれる時(終了時、
もしくは":wviminfo"コマンド実行時)に、'0が現在のファイルの現在のカーソル位置に
設定される。古い'0は'1になり、'1は'2になり、以下同様。"1から"9の削除レジスタに
起こることに似ている。'0に記憶する位置が'1から'9に既出であった時には、同じ位置
が2度記憶されるのではなく、そのレジスタが'0に浮き上がってくる。結果として"'0"
を使用すると、最後にVimを終了した時のファイルとその行に戻ることができる。起動
後直ちにそれを行うには、次のコマンドを試す:
csh 互換なシェルではエイリアスをこんな風に使用して:
bash ライクなシェルでは:
特定のファイルのマークを保存しないようにするには
'viminfo'に"r"フラグを追加す
る。
Viminfoファイルの名前
*viminfo-file-name*
- viminfoファイルの名前を特に指定しない時は、UnixとOS/2では"$HOME/.viminfo"
に、Amigaでは"s:.viminfo"に、MS-DOSとWin32では"$HOME\_viminfo"になる。MS-DOS
とWin32で、$HOMEが設定されていない時には、"$VIM\_viminfo"になる。$VIMも設定
されていない時には"c:\_viminfo"が使われる。OS/2では、$HOMEが設定されず$VIMが
設定されていれば"$VIM/.viminfo"となる。
-
'viminfo'オプションの'n'フラグは、別の名前のviminfoファイルを使うために、そ
のファイル名を指定するのに使用される
|'viminfo'|。
- Vimの起動引数"-i"も、viminfoとして別のファイルを指定するのに使用できる
|-i|。
ファイル名として"NONE"(全て大文字)が与えられると、viminfoファイルは使用(読み
込みも書き込みも)されない。
- 起動後に、コマンドで別の名前を与えると、デフォルト名や
'viminfo'や"-i"で与え
た名前を上書きすることができる("-i"はNONEが指定されていない時に限る)。
文字エンコーディング
*viminfo-encoding*
viminfoファイルのテキストはオプション
'encoding'で指定したエンコーディングで保
存される。通常は
'encoding'の設定はいつも同じなので、問題なく機能する。しかしな
がら、もしもviminfoファイルを読み込むときに、
'encoding'の設定がviminfoファイル
を保存したときとは違うエンコーディングに設定されていると、いくつかのテキスト
(ASCII以外の文字)は不正な文字になってしまう。それを回避するには、オプション
'viminfo'に'c'フラグを追加する:
そうするとVimは、viminfoファイルを保存したときの
'encoding'から現在の
'encoding'
へとテキストを変換する。これを利用するには
|+iconv|が有効になっている必要があ
る。ファイル名は変換されない。
viminfoファイルを手動で読み書きする
*viminfo-read-write*
viminfoファイルを手動で読み書きするのに2つのコマンドが用意されている。これは同
時に起動している複数のVim間で、レジスタの内容を交換するのに利用できる: まず片
方で":wv"してから、もう片方で":rv"する。既にレジスタに何かを記憶している場合に
は、":rv!"する必要があることに注意。またこれを行うとコマンドラインの履歴を含む
全ての情報が、送り側のVimのもので上書きされてしまうことにも注意。
viminfoファイル自体を手で編集することもできるが、Vimによって作られる正しい
フォーマットのviminfoを元にすることを推奨する。一度試してみればどういう構造に
なっているかよく分かるだろう。これを覚えておけば、Vimを起動したときにいつでも
設定しておきたい内容を、"~/.my_viminfo"というようなファイルに用意しておくとき
に重宝する。例としては、あるデータをレジスタに予め読み込んでおくとか、コマンド
ライン履歴に特定のコマンドをいれるとか、そういう使い方がある。.vimrcファイルに
次の一行を入れておけば
その情報を読み込むことができる。ファイルの種類によって(Cコードだとかvimスクリ
プトだとか)、異なるviminfoを持ち、":autocmd"を組み合わせることでファイル名に基
づいたりしながら、それらを使用することもできる(
|:autocmd|)参照。
*viminfo-errors*
Vimがviminfoファイルを読み込み中にエラーを検出すると、ファイルの上書きはされな
くなる。もしも10個以上のエラーがある場合には、それ以上viminfoファイルを読み込
むのを止める。こうするのはviminfoファイル内のファイル名が間違っている場合、突
発的にそのファイルを破壊してしまうのを避けるためである。これは"vim -R file"と
したいときに、誤って"vim -i file"とタイプしてしまうと起こり得る(そう、偶然何人
かが実際にそうしてしまったよ!!)。viminfoファイルにエラーがあったけれども
viminfoを上書きしたいのならば、エラーを修正するか、またはファイルを消すかのど
ちらかが必要(Vimの実行中は、殆どの情報が回復してしまう)。
*:rv* *:rviminfo* *E195*
:rv[iminfo][!]
[file] viminfoファイルを
[file](デフォルト:上記参照)から読込
む。[!]が与えれらた場合、既に設定されている情報(レジス
タ、マーク、
|v:oldfiles|、その他)は上書きされる。{Vi
にはない}
*:wv* *:wviminfo* *E137* *E138* *E574*
:wv[iminfo][!]
[file] viminfoファイルを
[file](デフォルト:上記参照)として保
存する。まず既存のファイルの(古い)情報が読み込まれ、
Vim内部の(新しい)情報とマージ(混合)されてから、ファイ
ルに保存される。[!]を指定すると古い情報は読み込まれ
ず、Vim内部の情報だけが保存される。
'viminfo'が空("")に
設定されている場合は、100個のファイルのマークが書き出
される。
"E138: Can't write viminfo file"("E138: viminfoファイ
ルを保存できません")というエラーが出たときには古い一時
ファイル(例えば~/.viminf*)が残っていないことを確か
め、.viminfoファイルを保存するディレクトリの書込み権限
を確認すること。
{Vi にはない}
*:ol* *:oldfiles*
:ol[dfiles] viminfo ファイルにマークが記録されているファイルのリス
トを表示する。起動時にこのリストが読み込まれ、
":rviminfo!" を行った後でのみ変更される。
|v:oldfiles|
も参照。このリストで表示される番号は
|c_#<| で使うこと
ができる。
{Vi にはない。|+eval| 機能付きでコンパイルされたときの
み有効}
:bro[wse] ol[dfiles][!]
|:oldfiles| と同じようにファイルのリストを表示し、番号
の入力を待つ。有効な番号が入力されると、リスト中のその
ファイルを開く。
|press-enter| プロンプトが表示されたときは "q" を押す
とファイル番号を入力するプロンプトに戻れる。
! をつけると変更中のバッファを破棄する。
|abandon|
{tiny または small でコンパイルされたときは利用できな
い}
vim:tw=78:ts=8:ft=help:norl: