Contents

vi_diff - vimdoc

Home
*vi_diff.txt*   For Vim バージョン 7.3.  Last change: 2011 Aug 29


                  VIM REFERENCE MANUAL    by Bram Moolenaar


Vim と Vi の違い                                        *vi-differences*

ヘルプファイルを通して Vim と Vi/Exの違いはねじれ括弧の中で "{Vi にはない機能
です}"のように示されています。このファイルは他のファイルで触れられていない部分
のみを列挙します。それと違いの概略を説明します。

Vim は大体において POSIX 1003.2-1 に従っています。知られている唯一の足りないコ
マンドは ":open" コマンドです。細かな違いはたぶんたくさんあります(Vimが間違っ
ているか、Posixの指標がはずれているかのどちらか)。

1. シミュレートされているコマンド       |simulated-command|
2. なくなっているオプション             |missing-options|
3. 制限                                 |limits|
4. もっとも興味深い機能追加             |vim-additions|
5. Vim の他の特徴                       |other-features|
6. コマンドライン引数                   |cmdline-arguments|
7. POSIX 準拠                           |posix-compliance|

==============================================================================
1. シミュレートされているコマンド                       *simulated-command*

このコマンドは Vi にはありますが Vim ではシミュレートしているだけです。

                                                        *:o* *:op* *:open*
:[range]o[pen]                  |:visual|と同様。Exモードを終了します。
                                {Vi: オープンモードで編集を開始する}

:[range]o[pen] /pattern/        上と同様で、さらに現在行の中で"pattern"にマッ
                                チする桁へカーソルを移動します。

Vimにオープンモードはありません。まったく便利ではないからです。Viなら":open"で
オープンモードを開始しますが、VimではExモードを抜けます。その結果、Viの場合と
同じコマンドが実行できるようになります。ただ、1行だけを再描画するのでなく、画
面全体を再描画する点が違います。
==============================================================================
2. なくなっているオプション                             *missing-options*

これらのオプションは Vi にはあって、Vim にはないものです。これらのオプションを
セットしてもエラーメッセージは出ませんが、設定した値は使われませんし表示もされ
ません。 

autoprint (ap)          二者択一  (初期値 オン)         *'autoprint'* *'ap'*
beautify (bf)           二者択一  (初期値 オフ)         *'beautify'* *'bf'*
flash (fl)              二者択一  (初期値 ??)           *'flash'* *'fl'*
graphic (gr)            二者択一  (初期値 オフ)         *'graphic'* *'gr'*
hardtabs (ht)           数値      (初期値 8)            *'hardtabs'* *'ht'*
        ディスプレイ上で一つの <Tab> が移動するスペースの数
mesg                    二者択一  (初期値 オン)         *'mesg'*
novice                  二者択一  (初期値 オフ)         *'novice'*
open                    二者択一  (初期値 オン)         *'open'*
optimize (op)           二者択一  (初期値 オフ)         *'optimize'* *'op'*
redraw                  二者択一  (初期値 オフ)         *'redraw'*
slowopen (slow)         二者択一  (初期値 オフ)         *'slowopen'* *'slow'*
sourceany               二者択一  (初期値 オフ)         *'sourceany'*
w300                    数値      (初期値 23)           *'w300'*
w1200                   数値      (初期値 23)           *'w1200'*
w9600                   数値      (初期値 23)           *'w9600'*

==============================================================================
3. 制限                                                 *limits*

Vim で編集できるファイルの制限はかなり少ないです。 {Vi: <Nul>文字を扱えず、ま
た 128をこえる文字を扱えません。行の長さにも制限がありますし、他にも多くの制限
があります。}

                                                        *E340*
行の最大の長さ             16-bit ints を使っているマシーン(Amiga と MS-DOS の
                           リアルモード): 32767 か 2147483647 文字。それより長
                           い行は分割されます。
最大行数                   2147483647 行
最大のファイルのサイズ     long integer が32ビットである場合2147483647バイト(2
                           ギガバイト)です。64ビットの長さであればもっと多くな
                           ります。またスワップファイル|swap-file|の為のディス
                           クの空き容量にも制限されます。
                                                        *E75*
ファイルのパスの長さ       Unix と Win32: 1024 文字か 256 文字(もしくはシステム
                           がサポートしている長さ分だけ)
ファイル名の長さ           Unix と Win32: 1024 文字か 256 文字
展開されたオプションの文字列の長さ
                           Unix と Win32: 1024 文字か 256 文字
表示される最大の長さ       Unix と Win32: 1024 文字か 256 文字
マッピングでの lhs の最大の長さ
                           50 文字
異なるハイライトの種類の数: 30000以上
数値変数の範囲: -2147483648 から 2147483647 (64ビットシステムではもっと大きい
                                             場合があります)
タグファイルにおける一行の最大の長さ: 512 バイト

アンドゥとレジスターの中のテキストに関する情報はメモリーに保持されます。ですの
で、使用可能な(仮想)メモリーの量を超えて(大きな)変更を行っている場合はアンドゥ
レベルの数とレジスターに保持されうるテキストは制限されることになります。コマン
ドライン履歴やクイックフィクスモードでのエラーメッセージなどの他のものもまたメ
モリーに保持されます。

メモリーの使い方を制限する
--------------------------

'maxmem' ( 'mm' ) オプションは一つのバッファに使われるメモリーの最大の量(キ
ロバイトで)を決めるのに使います。'maxmemtot' はすべてのバッファで使われるメ
モリーの最大の量(キロバイトで)を決めるのに使います。Amiga と MS-DOS では
'maxmemtot' は使えるメモリーの量に依存して設定されます。
これらは厳格な制限ではなく、いつテキストをスワップファイルに移動するかの目安で
す。もし Vim がファイルにスワップを行うのが嫌であれば 'maxmem' と'maxmemtot'
の値をかなり大きい値に設定しておきます。そうするとスワップファイルはリカバリー
の時にのみ使われるようになります。もしどんなスワップファイルも欲しくなければ
'updatecount' を 0 に設定するか、Vim を起動するときに "-n" 引数をつけます。

==============================================================================
4. もっとも興味深い機能追加                             *vim-additions*

Vi コンパチビリティ                                     |'compatible'|
        Vim には Vi の99%の機能が含まれますが、Vi のうちのいくつかはバグか少な
        くとも改良が必要だと考えられるものがあります。しかしそれでもなお Vim は
        可能な限り「本当の」 Vi のように振る舞うモードで起動します。Vim にもう
        少しよい動作をして欲しい場合は 'compatible' オプションを解除してみてく
        ださい。
                :set nocompatible
        それか Vim を "-N" 引数つきで起動してください:
                vim -N
        もし .vimrc ファイルがあれば'nocompatible'つきでVimが起動します。
        |startup| も見てください。'cpoptions' オプションはたくさんの特定のアイ
        テムに関する Viと同一の動作をするかどうかのオン/オフを切り替えることが
        できます。

様々なシステムのサポート
        Vim は次のシステムで利用できます:
        - すべての Unix システム (テストされたすべてのシステムで動作しますが
          GUI と Perl インターフェースはどこでも動作するわけではないかもしれま
          せん)。
        - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...).
        - リアルモードの MS-DOS (他のドライバーは必要ありません)
        - プロテクトモードの Windows 3.1 と MS-DOS (DPMI ドライバーが必要です)
        - Windows 95 と Windows NT、ロングファイル名をサポート
        - OS/2 (emx.dll が必要です)
        - Atari MiNT
        - VMS
        - BeOS
        - Macintosh
        - Risc OS
        - IBM OS/390
        Note: いくつかのシステムではリソース使用量を削減するために機能を無効に
        する必要があります(特にMS-DOS)。いくつかの時代後れのシステムでは以前の
        バージョンのVimを使わねばなりません。

多段アンドゥ                                            |undo|
        'u' は時をさかのぼり、'CTRL-R' は再び進めます。変更を覚えておく回数を 
        'undolevels' オプションでセットしてください(初期値 1000)。'undolevels'
        を0にセットすると Vi コンパチブルのアンドゥになります。-1 にセットする
        とアンドゥできないようになります。

        あるバッファに対する変更をすべてアンドゥした場合は、バッファはなに
        も変更されていないと見做されます。つまり <!> なしで :q で終了させること
        ができます。
        変更をアンドゥしてその後新しい変更をすると、Vimのアンドゥツリーにブラ
        ンチが作られます。これにより、テキストを永遠に失うという危険性なしにテ
        キストをどの状態にでも戻すことができます。|undo-tree|

グラフィカルユーザーインターフェース(GUI)               |gui|
        GUI (メニュー、マウス、スクロールバー、などなど)のサポートが含められま
        した。独自のメニューを定義することもできます。CTRL/SHIFT/ALT とキーの組
        み合わではなく特殊なキーとマウスの組み合わせというよりよい方法がサポー
        トされます。さまざまなプラットフォーム、 X11 (Motif と Athena インター
        フェース)、Win32 (Windows95 か、より最新のもの),BeOS, Amiga, Macintosh
        でサポートされています。

複数のウィンドウとバッファ                              |windows.txt|
        Vim ではスクリーンをいくつかのウィンドウに分けてそれぞれの中で異なる
        バッファーを編集したり同じバッファを別の場所で編集したりできます。バッ
        ファーはウィンドウに表示されていなくともロードして(変更を加えて)おくこ
        ともできます。これは隠れたバッファと呼ばれます。この機能のために多くの
        コマンドやオプションが追加されています。
        Vimはタブページを使うこともできます。各タブページは1個以上のウィンドウ
        を含みます。タブラベルを表示する行を使ってこれらのタブを素早く切替える
        ことができます。|tab-page|

構文ハイライト                                          |:syntax|
        Vim ではキーワードやパターンやその他のものをハイライトすることができま
        す。これは ":syntax" コマンドで定義し、ほとんどの言語やファイルのタイプ
        に対してハイライトをつけることができます。C、C++、Java、Pascal、
        Makefiles、シェルスクリプト、などなどの多くの一般的な言語のうちのほとん
        どのためのハイライト定義ファイルはすでに含まれています。ハイライトに使
        われる色は普通の端末で定義することができ、色端末と GUI では 
        |:highlight| コマンドで定義できます。色を変更するのに便利な方法は
        |:colorscheme|コマンドを使うことです。
        ハイライトされたテキストをHTMLにエクスポートすることができます
        |convert-to-HTML|。ハイライトできる他の要素は、検索文字列のマッチ部分
        |'hlsearch'|、対応する括弧 |matchparen|、カーソル行とカーソル桁
        |'cursorline'| |'cursorcolumn'|です。

スペルチェック                                          |spell|
        オプション'spell'がセットされていると、スペリングの間違いがハイライト
        されます。現在のところ約40の言語がサポートされています。言語はオプショ
        ン'spelllang'で選択できます。ソースコード中ではコメントと文字列だけが
        スペルチェックされます。

折畳み                                                  |folding|
        複数行の範囲を一行の「折畳まれた」行として表示することができます。これ
        によりファイルを一望することができ、テキストブロック間を素早く移動する
        ことが可能になります。折畳みの設定は手動、ファイルのシンタックス、イン
        デント等々で設定することができます。

Diffモード                                              |diff|
        ファイルの2つのバージョンの差分をハイライトして表示することができます。
        テキストの一致する部分は折り畳みされます。コマンドを使って片方のバー
        ジョンのテキストをもう一方へ移動することができます。

プラグイン                                              |add-plugin|
        プラグインファイルを正しいディレクトリにただ置くだけで機能追加ができま
        す。これは他人が書いたVimスクリプトを使い始める簡単な方法です。プラグ
        インは全ての種類のファイルについて設定することもできますし、ある1つの
        ファイルタイプについて設定することも可能です。

一連のコマンドを繰り返す                                |q|
        "q{c}"で名前付きレジスター{c}にタイプする文字の記録を始めます。後に続
        く"q" は記録を終了します。そしてレジスターにあるコマンドは"@{c}"コマン
        ドで実行することができます。これは複雑な動作を繰り返すときに非常に便利
        です。

柔軟な挿入モード                                        |ins-special-special|
        ファイルを動き回るのに矢印キーを挿入モードで使うことができます。このこ
        とはアンドゥとリドゥを考えると挿入モードが二つに分かれることになります

        CTRL-O は一つのノーマルモードのコマンドを実行するのに使うことができま
        す。これはつまり <Esc> キーを打ってコマンドを打ってからそれから |a| を
        打ったのとほとんど同じことです。

ビジュアルモード                                        |Visual-mode|
        ビジュアルモードは、初めにいくつかのテキストを選択してからそれに対して
        コマンドを実行するのに使うことができます。これは初めに演算コマンドを与
        えてからその演算を施すテキストの最後まで移動するコマンドを実行するもう
        一つの(簡単な)方法です。
        |v| と |V| はビジュアルモードを開始します。|v|は文字ごとに選択し |V|
        は行ごとに選択します。カーソルを動かしてビジュアル部分を広げ、その部分
        はスクリーン上でハイライトされます。"o" を打つことでビジュアルなテキス
        ト部分の反対側の端が動かされることになります。ビジュアルなテキスト部分
        には次の演算を施すことができます:
                d       削除
                c       変更
                y       ヤンク
                > or <  インデントを挿入/削除
                !       外部プログラムを使ってフィルターを施す
                =       インデントを通してフィルターを施す
                :       ビジュアルな行に対して |:| コマンドを始める
                gq      'textwidth' 桁位置にテキストを整形する
                J       行を連結する
                ~       大文字小文字を入れ換える
                u       小文字にする
                U       大文字にする

ブロック演算コマンド                                    |visual-block|
        長方形のテキストがビジュアルモードを使って選択することができます。
        CTRL-V でビジュアルモードを開始します。選択されたブロックは "d" で削除
        したり 'y' でヤンクしたり大文字小文字を "~"、"u"、"U" で変えることがで
        きます。削除もしくはヤンクされたブロックは "p" か "P" コマンドでテキス
        トに挿入することができます。

ヘルプシステム                                          |:help|
        ヘルプはウィンドウの中に表示されます。検索したりするテキストの中を移動
        する普通のコマンドはそのまま使えます。タグも複数のヘルプファイルの間を
        移動するのに使え、ハイパーテキストのリンクをクリックするような感覚で
        す。|:help| コマンドは引数を取りますので検索したい情報に素早くジャンプ
        できます。<F1> を押して素早くヘルプシステムにアクセスすることもできま
        す。ヘルプファイルのインデックスファイルは 'helpfile' オプションで設定
        することができます。

コマンドライン編集/履歴                                 |cmdline-editing|
        カーソルキーを使うことでコマンドラインのどの場所からでも挿入を行ったり
        削除を行ったりすることができます。右/左矢印キーは前/後に一つの文字移動
        するのに使うことができ、Shift キーを押しながら右/左矢印キーを押すと前/
        後に一つの単語移動することができます。CTRL-B/CTRL-E はコマンドラインの
        初め/終わりに移動するのに使うことができます。

                                                        |cmdline-history|
        コマンドラインは記録されます。上/下矢印キーを使うことで前のコマンドライ
        ンを呼び出すことができます。'history' オプションで覚えておく行数を設定
        することができます。検索パターンのコマンド履歴はまた別に分かれていま
        す。

コマンドライン補完                                      |cmdline-completion|
        コマンドライン(スクリーンの一番下で)でなんらかの作業をしているときに 
        <Tab> キーを押すと補完を行うことができます。
           what          example        
        - コマンド       :e<Tab>
        - タグ           :ta scr<Tab>
        - オプション     :set sc<Tab>
        - オプションの値 :set hf=<Tab>
        - ファイル名     :e ve<Tab>
        - その他

        複数マッチしたものがある場合は、CTRL-N (次)と CTRL-P (前)でマッチしたも
        のの間を移動することができます。<Tab> は CTRL-N のように振る舞います
        が、マッチしたものの最後で押すと最初にマッチしたものに戻ります。

        'wildchar' オプションでコマンドライン補完に利用する文字を設定できま
        す。デフォルトは<Tab>です。複数の補完候補がある不完全な状態でCTRL-D
        タイプすることで、全ての補完候補を表示することができます。CTRL-Aではす
        べての候補を入力することができます。CTRL-Lでは候補内で、一致する最長部
        分までを入力します。

挿入モードでの補完                                      |ins-completion|
        挿入モードで CTRL-N と CTRL-P を使うことでどこかに現れる単語を補完する
        ことができます。        |i_CTRL-N|
        CTRL-X を使うことでもう一つのモードに入ることができます。どの補完を行う
        ことができるかというと:
        |i_CTRL-X_CTRL-F|       ファイル名
        |i_CTRL-X_CTRL-K|       辞書'dictionary'ファイルにある単語
        |i_CTRL-X_CTRL-T|       類語辞典'thesaurus'ファイルにある単語
        |i_CTRL-X_CTRL-I|       インクルードされるファイルにある単語
        |i_CTRL-X_CTRL-L|       すべての行
        |i_CTRL-X_CTRL-]|       タグファイルにある単語
        |i_CTRL-X_CTRL-D|       マクロ定義
        |i_CTRL-X_CTRL-O|       オムニ補完: ファイルタイプに特化した賢い補完
        など。

長い行のサポート                                        |'wrap'| |'linebreak'|
        'wrap' オプションがオフであれば、長い行は折り返されずに行の一部分だけが
        表示されます。カーソルが表示されていない部分に移動するとスクリーンも横
        にスクロールします。横にスクロールする桁数の最小の値を 'sidescroll' オ
        プションで設定することができます。|zh| と |zl| コマンドは横スクロールに
        使うことができます。あるいは、'linebreak' オプションがセットされている
        場合は長い行は単語の間で切られます。こうすることで段落を一つの行にして
        編集することが容易になります(例: 後で編集中のテキストを DTP プログラム
        に持っていく場合)。カーソルを上下するには |gk| と |gj| コマンドを使って
        ください。

テキストの整形                                          |formatting|
        'textwidth' オプションを設定することで行の長さを自動的に制限することが
        できます。このオプションはあまり便利ではなかった Vi での 'wrapmargin'
        オプションを補助するものです。|gq| 演算コマンドはテキストの一部分を整
        形するのに使うことができます(例えば、|gqap| は現在の段落を整形します)。
        テキストの位置に関するコマンドは |:center||:left||:right| です。

拡張正規表現                                            |pattern|
        様々なテキスト要素にマッチさせるための、多くの拡張正規表現の要素があり
        ます。たとえば"\n"は改行にマッチします。
        "x\{2,4}"は、"x"が2個から4個続くテキストにマッチします。
        "\s"は空白文字にマッチします。

ディレクトリ、リモート、アーカイブの閲覧                |netrw|
        Vimはファイルシステムをブラウズすることができます。単にディレクトリを
        編集します(訳註: :e {directory} とする)。そのリスト中を普通のコマンド
        を使って移動し、<Enter>を押すとカーソル下のディレクトリやファイルに移
        ります。
        これはftp, http, sshなど越しのリモートファイルにも機能します。
        zipとtarのアーカイブもブラウズすることができます。|tar| |zip|
編集-コンパイル-編集 をスピードアップする               |quickfix|
        |:make| コマンドを使うことでコンパイルしてから初めのエラーにジャンプす
        ることができます。コンパイラのエラーメッセージが書かれたファイルを解析
        できます。最初のエラーにジャンプします。

        エラーファイルのそれぞれの行はファイルの名前、行番号、エラーメッセージ
        という風に調べられます。'errorformat' オプションは多くのコンパイラーか
        らの出力を扱うことができるように scanf のような形式の文字列のリストを指
        定することができます。

        |:cn| コマンドは次のエラーにジャンプするのに使うことができます。|:cl|
        コマンドはすべてのエラーメッセージをリストします。他のコマンドも使うこ
        とができます。'makeef' オプションはエラーメッセージが含まれるファイルの
        名前を指定します。'makeprg' オプションは |:make| コマンドで実行するプロ
        グラムの名前を指定します。'shellpipe' オプションはコンパイラーからの出
        力をエラーファイルに書き込むときに使われる文字列を指定します。

複数のファイルから検索する                              |:vimgrep|
        複数のファイルからパターンを検索することができます。この機能はVimの高
        度な正規表現パターンを使い、すべてのシステム上で機能し、圧縮されたファ
        イルも検索できます。

C プログラムのインデントを改善                          |'cindent'|
        'cindent' オプションがオンの時はそれぞれのインデントは自動的に調整され
        ます。C の文法はだいたい解釈されますし、さまざまなスタイルでのインデン
        トは 'cinoptions' で設定することができます。インデントをするきっかけと
        なるキーワードは 'cinkeys' で指定することができます。

        コメントも自動的に整形することができ、'comments' オプションでどの文字が
        コメントをスタートさせ終了させるのかを指定することができます。この機能
        は C のコードでもっともよく動作しますがメール(行の最初の ">")や他のタイ
        プのテキストでもうまく動作します。|=| 演算コマンドで行を再インデントす
        ることもできます。

        他にも多くの言語に対して自動インデントをするためのインデントプラグイン
        が提供されています。|30.3|

インクルードされるファイルの中から単語を探す            |include-search|
        |[i| コマンドはカーソルのしたの単語をインクルードされるファイルの中から
        検索することができます。'include' オプションをセットすることでファイル
        をインクルードするコマンドのパターンを記述することができます(デフォルト
        では C のプログラムで検索できるように設定してあります)。
        |[I| コマンドはマッチしたすべてをリストし、|[ CTRL-I| コマンドはマッチ
        した場所にジャンプするコマンドです。
        |[d||[D|, |[ CTRL-D| も同様ですが、'define' オプションで指定されるパ
        ターンにマッチする行にのみします

自動コマンド                                            |autocommand|
        ファイルを読み込んだり書き込んだり別のバッファにジャンプしたりなどす
        る時に、ファイル名によって自動的にコマンドを実行することができます。こ
        れは C のプログラムを書いたり、ドキュメントを書いたり、普通のテキストを
        書いたりなどする時にオプションをセットしたりそれら特有のマッピングをし
        たりするときに便利です。これを利用することで圧縮されたファイルを編集す
        ることもできるようになります。

コマンドと表現                                          |expression|
        強力なスクリプト言語を形成するようにいくつかコマンドが追加されました。
        |:if|           条件によって実行します。例えば $TERM の値によってオプ
                        ションを変更したりできます。
        |:while|        コマンドを繰り返します。
        |:for|          リストをわたるループ。
        |:echo|         式の結果を表示します
        |:let|          値を内部変数やオプションなどに割り当てます。
                        変数の型は数値、文字列、リスト、辞書。
        |:execute|      式からなるコマンドを実行します。
        |:try|          例外を捕捉します。
        などなど。|eval|を参照。
        デバッグとプロファイリングがサポートされています。|debug-scripts|
        |profile|
        もしこれで十分でないなら、|Python||Ruby||Tcl||Lua||Perl|,
        |MzScheme| のインターフェイスが提供されています。

Viminfo                                                 |viminfo-file|
        コマンドライン履歴やマークやレジスターの内容を起動時に読み込まれるファ
        イルに保存しておくことができます。Vim を終了させた後、再び Vim を起動し
        たときでも検索コマンドを繰り返したりコマンドラインを繰り返したりできま
        す。|'0| を使って最後に編集していた場所にジャンプすることもまた可能で
        す。'viminfo' オプションで .viminfo ファイルに保存されるアイテムを選択
        することができます。初期値はオフです。

印刷                                                    |printing|
        コマンド|:hardcopy|はテキストをプリンタに送信します。構文強調も含まれ
        ます。
マウスサポート                                          |mouse-using|
        マウスは GUI バージョンと Unix、sysmouse がある BSD、gpm がある Linux、
        MS-DOS、Win32 上の xterm でサポートされています。カーソルの場所を変え
        たりビジュアル領域を選択したりレジスターの内容を張りつけたりするのに使
        うことができます。

キーの名前の使い方                                      |<>| |key-notation|
        特殊なキーはすべて <Up><End> などなどのような書き方ができるようになり
        ました。この名前はマッピングでも使うことができますしそれらを編集するの
        が容易になります。

バイナリーファイルを編集する                            |edit-binary|
        Vim はバイナリーファイルを編集することができます。実行形式のファイルを
        壊すことなくいくつかの文字を変更することができます。Vim は NUL 文字を削
        除しません(内部では <NL> と表されています)。
        |-b|            バイナリーファイルの編集を始める時のコマンドライン引数
        |'binary'|      |-b| によってセットされるオプションで、ファイルの最後の
                        行に <EOL> を付加するのをやめさせます

多言語のサポート                                        |multi-lang|
        ダブルバイトやマルチバイトエンコーディングのファイルを編集できます。
        フォントを切り替えずに多言語を同時に編集可能なUTF-8をサポートしていま
        す。 |UTF-8|
        メッセージやメニューが多くの言語に翻訳されています。

行を越えるカーソル移動
        オプション'virtualedit'がセットされていると、テキストがない場所を含め、
        画面全体どこでもカーソルを移動させることができます。これは表や図を容易
        に編集できて便利です。

==============================================================================
5. その他の Vim の機能                                  *other-features*

その他の優れた機能をランダムに集めてみました。


Vim が "-s scriptfile" 付きで起動された場合、"scriptfile" から読み込まれる文字
は実際あなたがそれをタイプしたように扱われます。もしエディタが終了する前にスク
リプトファイルの終わりに到達した場合は、さらにコンソールから文字を読み込みます

"-w" オプションはタイプした文字をすべてスクリプトファイルに記録するのに使うこ
とができます。このファイルは後で別のファイルでその編集を繰り返したり、スクリプ
トファイルをに修正を加えてから繰り返しを実行したりするのに使うことができます。

"-o" オプションはそれに続く引数の数だけウィンドウを開きます。"-o4" は4つのウイ
ンドーを開きます。

Viはフルスクリーンで動作するためにいくつかのtermcapのエントリが必要でした。Vim
が必要とするのは"cm"エントリ(cursor motion)だけです。


コマンドモードで:

'showcmd' オプションがセットされていると、スクリーンの最後の行にコマンドの文字
列が表示されます。これらはコマンドが終了した後に削除されます。

'ruler' オプションがセットされているとスクリーンの最後の行に現在のカーソルの位
置が表示されます。

"U" は最後に変更した行からはなれた後でも、また "u" を実行した後でも動作します。

8bit 目がセットされている文字は表示されます。その文字が'isprint'オプションに含
まれていなければ、'~' と 0xa0 の間の文字は "~?"、"~@"、"~A"、などなどのように
表示されます。

"][" は C の関数の次の終わりに移動します(一桁目が '}' の行)。
"[]" は C の関数の前の終わりに移動します(一桁目が '}' の行)。

"]f"、"[f" と "gf" はカーソルの下のファイル名の編集を開始します。CTRL-W f は
カーソルの下のファイル名の編集をウィンドウを分割してそこで開始します。

"*" はカーソルの下の識別子を前方に検索し、"#" は後方に検索します。
"K" はカーソルの下の識別子を引数として 'keywordprg' オプションに定義されている
プログラムを呼び出します。

'%' は前に数を前置することでそのファイルのパーセント数の場所にジャンプします。
数を前置しない場合はくくられているテキストの中では対応する括弧に移動します。

CTRL-] コマンドでは、カーソルは識別子の真ん中にあります。

使ったタグは覚えておかれ、タグスタックに覚えておかれるコマンドは CTRL-T と
 ":pop" と ":tag" です。 ":tags" はタグスタックの内容をリスト表示します。

'tags' オプションはタグファイル名のリストを設定することができます。ですので複
数のタグファイルを使うことができます。ファイル名が '.' で始まる場合は '.' はそ
のファイルのパスに展開されます。こうすることで編集しているファイルがあるディレ
クトリと同じディレクトリのタグファイルを使うことができるようになります

前に編集されたファイルは代替ファイルリストに覚えておかれます。CTRL-^ に数を前
置することでこのリストのインデックスの番号のファイルにジャンプできます。
":files"コマンドで開いたファイルの一覧を見ることができます。
"#<N>"はリスト内の<N>番目のファイルの名前で置換されます。
"#<"は現在のファイル名から拡張子を取り除いたもので置換されます。

検索パターンも強化されました。<NL> 文字を検索パターンや ":s" コマンドの文字列
の一部に使うことができます。Vi では単にコマンドの終了と見做されます。

検索ではマッチした最後にカーソルをおくこともできますし、オフセット文字を使って
検索することもできます。

"~"、":next"、":Next"、"n"、"N" にカウントを前置することができるようになりまし
た。

'autowrite' オプションがセットされている場合でも ":next!" コマンドはファイルを
書き込みません。Vi ではファイルは上書きされましたが、これはバグだと思われます。
というのもそういう動作は期待されませんし ":rewind!" コマンドでは書き込まれない
からです。

Vi では上書きモードで <CR> を打ち込んだときに文字を削除するのは 'ai' がセット
されている場合のみでした(しかし <Esc> キーが押されるまでは表示されませんでし
た)。Vim は常に文字を削除します(またすぐに表示します)。

:wnext コマンドが追加されました。":write" コマンドを実行して ":next" コマンド
を実行するのと同じです。

":w!" コマンドは上書き禁止されているファイルでも常に書き込みます。Vi では
 ":!chmod+w %" してから ":set noro" としなければなりませんでした。

'tildeop' がセットされていると "~" は演算コマンドとして動作します(移動コマンド
を後に続けます)。

"J" (連結)コマンドを実行するときにピリオドの後でスペースを挿入するのを一つだけ
にするように 'joinspaces'オプションを再セットすることができます(Vi では2つのス
ペースが挿入されます)。

"cw" はいくつかの文字で構成されるホワイトスペースを変更できます(Vi では "cw"は
スペースを一つだけ変更するのに "dw" はすべてのホワイトスペースを削除するという
紛らわしい仕様でした)。

"o" と "O" は回数を前置することができます(Vi は表示の一部分を削除します)。

Ex コマンドの後につけるフラグはサポートされていません(予定もありません)。

UNIX システム以外では ":cd" コマンドはホームディレクトリーに移動するのではなく
(ホームディレクトリはないです)、現在のディレクトリを表示します。":pwd" はすべ
てのシステムで現在のディレクトリを表示します。

":cd"コマンドの後でもファイル名(引数リストや開いたファイル)は元のファイルを指
します。Viではファイルに変更があると":cd"できません。そうでなければファイル名
の解釈が変わってしまうからです。

":source!" コマンドはファイルから Vi コマンドを読み込みます。

":mkexrc" コマンドは現在の変更されているオプションとマッピングを ".exrc" ファ
イルに書き出すコマンドです。":mkvimrc" は ".vimrc" ファイルに書き出します。

マッピングで「最後が再帰的であるかどうか」のチェックはされません。つまり次のよ
うなマッピングもできます。
":map! foo ^]foo".

マッピングが数字で始まる場合は、Vi ではそのカウントが失われてしまっていました
(例: ":map g 4G" というマッピングを使っていると "7g" は4行目に移動してしまいま
した)。これは Vi のバグだと考えられます。Vim では多くの人が期待する動作である
ようにカウントを連結します(この例の場合は "74G" になります。

:put! コマンドは現在の行の上にレジスターの内容を挿入します。

Vi での "p" と "P" コマンドは挿入されるテキストが一行より短い場合は "." で繰り
返すことができませんでした。Vim では常に繰り返すことができます。

":noremap" コマンドは再マップされないマップを作るのに使うことができます。これ
は2つのキーの意味を交換するのに使うと便利です。":cmap",":cunmap",":cnoremap"は
コマンドライン編集でのみ動作するマッピングです。":imap",":iunmap",":inoremap"
は挿入モードのみで動作するマッピングを定義できます。同様なコマンドは略記にもあ
ります: ":noreabbrev",":iabbrev",":cabbrev", ":iunabbrev",":cunabbrev",
":inoreabbrev",":cnoreabbrev"

Vi では ":map foo bar" は前の ":map bug foo" というマッピングを削除していまし
た。これはバグと思われますので Vim ではその仕様は含まれません。":unmap! foo" 
は "map! bug foo" というマッピングを削除します。なぜならそうでなければマッピン
グを外すのが非常に困難になるからです(これは Vi と同じ動作です)。

':' レジスターは最後のコマンドラインを含んでいます。
'%' レジスターは現在のファイル名を含んでいます。
'.' レジスターは最後に挿入されたテキストを含んでいます。

":dis" コマンドはヤンクレジスターの内容を表示します。

CTRL-O/CTRL-I は古い/新しい場所に移動するのに使うことができます。これらの移動
する場所は '' コマンドで移動する場所と同じですが他のファイルの中でもありえます。
":jumps" コマンドは古い場所をリストします。

'shiftround' オプションがセットされていると ">" と "<" コマンドでは
'shiftwidth' の倍数になるようにインデントは調整されます。

'scrolljump' オプションはスクリーンからカーソルが出たときにスクロールする最小
の行数を設定することができます。もしスクロールが遅い場合はこれをセットしてくだ
さい。

'scrolloff' オプションでカーソルの上や下に保持しておく最小の行数を設定できます。
これを設定しておくとカーソルの前後を見渡せるようになります。かなり大きい数字に
セットしておけばカーソル行は常にウィンドウの中央に来ることになります。

大文字のマークはファイルを越えてジャンプするのに使うことができます。":marks"
コマンドは現在セットされているすべてのマークをリストします。"']"と"`]"は前に操
作を行った場所の最後か、テキストを挿入したかプットした場所の最後に移動します。
"'[" と "`[" は初めに移動します。

'shelltype' オプションは Amiga 上で使われるシェルのタイプを反映させるのに使う
ことができます。

'highlight' オプションはいくつかのコマンドで使われるハイライトモードを設定する
ことができます。

CTRL-A (加算) と CTRL-X (減算) コマンドが新たに追加されました。カウントを前置
することもでき(初期値 1)、カーソルの下もしくは後の数字をその値の分加算/減算す
るのに使うことができます。数は10進数、8進数(0で始まります)、16進数(0xで始まり
ます)でもよいです。マクロを使うときに非常に便利です。

:set コマンドでは "inv" を前置することで二者択一のオプションは逆の意味にするこ
とができます。

Vi と Vim の両方で ":substitute" コマンドで CTRL-M を使うことで改行を挿入する
ことができます。Vi ではこのためにテキストに実際の CTRL-M を挿入することができ
なかったのですが、Vim では CTRL-V を前に挿入してから実際の CTRL-M をおくことが
できます。


挿入モードで:

'revins' オプションがセットされていると挿入は逆方向に向かってなされます。これ
はヘブライ語を入力するためです。普通の文字を挿入するときはカーソルは逆方向にな
りませんしテキストは右方向に動きます。バックスペース、CTRL-WCTRL-U もまた逆
方向に動作します。上書きモードではなんら影響しません。コンパイル時にのみ有効に
することができます。

オートインデントを削除するのにバックスペースキーをちょうど CTRL-D のように使う
ことができます。

'backspace' (bs) オプションが"eol"を含んでいると改行をこえてバックスペースした
り CTRL-U したり CTRL-W することができます。'backspace'が"start"を含んでいると
挿入の初めをこえてバックスペースすることができます。

'paste' オプションがセットされているといくつかのオプションが解除され挿入モード
でのマッピングと略記が使用不可になります。こうすることでウィンドウシステムでテ
キストを張りつけるときに不測の結果が生じるのを避けることができます。'paste'
プションが解除されればオプションの前の値が復元されます。

CTRL-T/CTRL-D はカーソルがどこの桁位置にあっても常に現在の行のインデントを挿
入/削除します。

CTRL-@ (前に挿入したテキストを挿入する)は常に動作します(Vi: 初めの文字としてを
打ち込んだときにのみ)。

CTRL-A は CTRL-@ のように動作しますが挿入モードから抜けません。

CTRL-R {0-9a-z..} はレジスターの内容を挿入するのに使うことができます。

'smartindent' オプションがセットされていると、C プログラムはもっとうまく自動イ
ンデントされます。'cindent' オプションをセットしているとさらにうまくインデント
されます。

CTRL-Y と CTRL-E は現在のカーソルの上/下の文字をコピーするのに使うことができま
す。

CTRL-V を打った後に3桁の8進数を打つことができ、このバイトの値がテキストに一文
字として挿入されます。キーボードからは打ち込めない内部の文字を使うときに便利で
す。

'expandtab' (et) がセットされていると <Tab> は適切な数のスペースに展開されま
す。

ウィンドーは常にバッファの内容を反映します(Vi ではテキストを変更したりそのほ
かいくつかの場合では行われませんでした)。

Vim が DIGRAPHS を定義してコンパイルされていれば digraph がサポートされます。
普通の digraph のセットが含まれるようになり、":digraph" コマンドで見ることがで
きます。":digraph {char1}{char2} {number}" でさらに追加することもできます。
"CTRL-K {char1} {char2}" とするか "{char1} BS {char2}" とすることで digraph を
入力できます( 'digraph' オプションがセットされている場合のみです)。

挿入をカウントを前置して行う場合、例 "10atest <Esc>"、Vi は初めの挿入に対して
のみ wrapmargin を扱うことができましたが、Vim ではすべてに対して扱います。

"i" か "a" コマンドでのカウント前置はすべてのテキストに対して利用できます。Vi
では一つの行に対してのみカウントを前置できました。"3iabc<NL>def<Esc>" は
"abcabcabc<NL>def" が Vi の動作で、"abc<NL>defabc<NL>defabc<NL>def" が Vim で
の動作です。


コマンドラインモードで:

<Esc> はコマンドラインを実行せずに抜けることができます。Vi ではコマンドライン
は実行されており、ほとんどの人が予測する動作とは違いました(<Esc> を打つことで
常にコマンドモードに戻るべきでしょう)。この問題をなんらかの曖昧なマクロで避け
るにはマクロでの <Esc> はコマンドを実行します。もし <Esc> で Vi のようにコマン
ドを実行したい場合は次のように修正できます。
        ":cmap ^V<Esc> ^V<CR>"

一般:

'ttimeout' オプションは 'timeout' オプションに似ていますが、カーソルかファンク
ションキーに対してのみ働きます。'timeoutlen' オプションは待つ時間をミリセコン
ド単位で指定することができます。'esckeys' オプションがセットされていない場合い、
<Esc> キーで始まるカーソルとファンクションキーは挿入モードでは解釈されません。

端末文字列がそれぞれオプションとしてあります。termcap がサポートされていなかっ
たり独自の文字列に変更したい場合に利用することができます。

'fileformat' オプションは <EOL> を選択して設定するのに使います: "dos"
<CR><NL>, "unix" <NL>, "mac" <CR>
'fileformats' オプションが空でない場合、Vim は <EOL> のタイプを自動的に判断し
ようとします。'fileformat' オプションはそれに従ってセットされます。

ジョブコントロールを持たないシステム(古い Unix システムと Unix 以外のシステム)
ではCTRL-Z、":stop"、":suspend" コマンドは新しいシェルを起動します。

出力のための対話的なウィンドウなしで Vim が Amiga 上で起動された場合、ウィンドウ
が開かれます(そうして :sh コマンドは動作します)。|-d| 引数で編集する装置を指定
することができます(例: "-d con:20/20/600/150")。

'columns' と 'lines' オプションはディスプレイの幅と高さを指定するのに使うこと
ができます。

ファイルの最初と最後の数行はオプションをセットするために読み込まれます。
'modelines' オプションがどれだけの数の行を読み込もうとするかを決めることができ
ます(初期値は5です)。モードラインでどんな Ex コマンドも実行できる(重大なセキュ
リティ問題です)バージョンの Vi がありますがそれとは違うということに注意してく
ださい。  |trojan-horse|

'insertmode' オプションがセットされていると(例えば .exrc で) Vim は挿入モード
で起動します。<Esc> キーを押すと元に戻ります。

アンドゥの情報はメモリーに保持されます。使用可能なメモリーの量でアンドゥの回数
とアンドゥ可能なサイズが制限されます。このことは MS-DOS では問題になるかもしれ
ません。Amiga ではほとんど問題にならないですし、Unix と Win32 では大体において
決して問題になることはないです。

'backup' か 'writebackup' オプションがセットされていると: ファイルを上書きする
前にバックアップファイル(.bak)が作られます。"backup" オプションがセットされて
いるとバックアップファイルは残されたままになります。

Vim は変更されたファイルの一部分やメモリーに入りきらないものをに保持するため
にファイルの最後が ".swp" であるファイルを作成します。このファイルはクラッシュ
した編集セッションを "vim -r file" として復元するのに使われます。'updatecount'
オプションを0にするか Vim を "-n" オプションをつけて起動するとスワップファイル
を使うのをやめさせることができます。.swp ファイルをどこか別の場所に作成させたい
場合は'directory' オプションを設定してください。

Vim は8.3形式のファイルシステムでも正しく動作することができます。また Amiga 上
での汚い DOS もしくは 雑種の DOS ファイルシステムでも使うことができますし、8.3
形式のファイルシステムを搭載したどんな Unix でも動作します。|'shortname'| もご
覧下さい。

エラーメッセージは少なくとも1秒は表示されます(Vi ではエラーメッセージは上書き
されます)

|hit-enter| プロンプトが出た場合でもどんなキーでも打つことができます。<CR>
<NL><Space> 以外の文字はコマンド(の最初)として解釈されます(Vi では ':' で始
まるコマンドしか受け付けませんでした)。 

番号付きレジスターと名前なしレジスターの内容はファイルが変更されたときに覚えて
おかれます。

"No lines in buffer" メッセージはマッピングが拒否された理由で表示される、エラー
メッセージではなく普通のメッセージです。

The AUX: Amiga のデバイスをサポートしています。

==============================================================================
6. コマンドライン引数                                   *cmdline-arguments*

異なるバージョンの Vi では異なるコマンドライン引数があります。これはちょっと紛
らわしいですので便宜のためにこの章では違いの概略を説明します。

5つの種類の Vi がここでは考慮されます:
        Elvis   Elvis version 2.1b
        Nvi     Nvi version 1.79
        Posix   Posix 1003.2
        Vi      Vi version 3.7 (Sun 4.1.x)
        Vile    Vile version 7.4 (不完全)
        Vim     Vim version 5.2

Vim だけがファイル名の後でもオプションを受け付けます。

+{command}      Elvis, Nvi, Posix, Vi, Vim: "-c {command}" と同じです。

-               Nvi, Posix, Vi: Ex をバッチモードで起動します
                Vim: 標準入力からファイルを読み込みます(バッチモードを使うには
                -s を利用してください)。

--              Vim: オプションの終わりです。この後はファイル名のみ書くことがで
                きます。

--cmd {command} Vim: vimrcファイルを読み込む前に{command}を実行します

--echo-wid      Vim: GTK+がウインドウのIDを標準出力に書き出します。

--help          Vim: ヘルプメッセージを表示して終了します。

--literal       Vim: ファイル名のワイルドカードを処理しません

--nofork        Vim: |-f|と同じです

--noplugin[s]   Vim: プラグインの読み込みをしません

--remote        Vim: 他のVimサーバでそのファイルの編集をします

--remote-expr {expr}    Vim: 他のVimサーバで{expr}を評価します

--remote-send {keys}    Vim: Vimサーバに{Keys}を送って終了します

--remote-silent {file}  Vim: 可能なら他のVimサーバでファイルの編集をします

--remote-wait   Vim: 他のVimサーバでファイルの編集をして、それが終わるまで待機
                     します

--remote-wait-silent    Vim: --remote-waitと同じですが、それが不可能な場合でも
                             エラーをだしません。

--role {role}   Vim: GTK+ 2: メインウインドウのroleを設定します

--serverlist    Vim: Vimサーバのリストを出力して終了します

--servername {name}     Vim: Vimサーバの名前を指定します

--socketid {id}         Vim: Vimを起動するGTKウインドウのsocket

--windowid {id}         Vim: Vimを起動するWin32のウィンドウID

--version       Vim: バージョンメッセージを表示して終了します。

-?              Vile: 簡単な使い方を表示して終了します。

-a              Elvis: 指定されたファイル名をそれぞれ一つのウィンドウに読み込み
                ます(Vim では -o を使ってください)。

-A              Vim: アラビア語モードで起動します(その機能が組み込まれているな
                     ら)

-b {blksize}    Elvis: ファイルのセッションに {blksize} のブロックサイズを使い
                ます。
-b              Vim: 'binary' モードをセットします。

-C              Vim: Vi コンパチブルモードで起動します。

-c {command}    Elvis, Nvi, Posix, Vim: ファイルを編集バッファにロードした後
                {command} を Ex コマンドとして走らせます。
                Vim: 10個まで "-c" 引数をとることができます。

-d {device}     Vim: I/O に {device} を使います(Amiga のみ)。{|+diff|の機能を
                     外してコンパイルされたときのみ}
-d              Vim: 'diff'を設定して起動します|vimdiff|

-dev {device}   Vim: I/O に {device} を使います(Amiga のみ)

-D              Vim: デバッグモード

-e              Elvis, Nvi, Vim: あたかも "ex" が起動されたように Ex モードで起
                動します。

-E              Vim: "exim"のように、より良いExモードで起動します|gQ|

-f              Vim: GUI をフォアグラウンドジョブとして起動します(Amiga: 新たに
                ウィンドウを開きません)。
-f {session}    Elvis: {session} をセッションファイルとして使います。

-F              Vim: Farsi モードで起動します(Farsi 付きでコンパイルされている
                場合)。
                Nvi: 編集を開始するときにファイルのすべてを読み込まず素早く起動
                します。

-G {gui}        Elvis: {gui} をユーザーインターフェイスとして使います。

-g              Vim: GUI で起動します。
-g N            Vile: N 行目から編集を開始します。

-h              Vim: ヘルプメッセージを表示します。
                Vile: ヘルプファイルを編集します。

-H              Vim: ヘブライモードで起動します(ヘブライオプションをつけてコン
                パイルされている場合)。

-i              Elvis: それぞれのウィンドウを挿入モードで起動します。
-i {viminfo}    Vim: {viminfo} を Viminfo ファイルとして使います。

-L              Vim: "-r" と同じです(またいくつかのバージョンの Vi でもそうで
                す)。

-l              Nvi, Vi, Vim: 'lisp' と 'showmatch' オプションをセットします。

-m              Vim: 変更を書き込むことを禁止し、'write' オプションを解除します。

-M              Vim: 変更を加えることを禁止し、'write' オプションと
                     'modifiable'オプションを解除します。

-N              Vim: コンパチブルモードではないモードで起動します。

-n              Vim: スワップファイルを使いません。

-nb[args]       Vim: NetBeansへの接続を開きます

-O[N]           Vim: -oと同じですが、ウィンドウを縦分割します

-o[N]           Vim: [N]個のウィンドウを開きます。もしくは各ファイルに1個ずつ
                ウィンドウを開きます。

-p[N]           Vim: [N]個のタブページを開きます。もしくは各ファイルに1個ずつ
                タブページを開きます。

-P {parent-title} Win32 Vim: 親となるアプリケーションの内側でVimを開きます

-q {name}       Vim: {name} をクイックフィクスエラーファイルとして使います。
-q{name}        Vim: 同上。

-R              Elvis, Nvi, Posix, Vile, Vim: 'readonly' オプションをセットしま
                す。

-r              Elvis, Nvi, Posix, Vi, Vim: 復元モード

-S              Nvi: 'secure' オプションをセットします。
-S {script}     Vim: 起動後にスクリプトを実行します。

-s              Nvi, Posix, Vim: Exモードでは "-"(サイレントモード)と同じです。
                Elvis: 'safer' オプションをセットします。
-s {scriptin}   Vim: {scriptin} からスクリプトを読み込みます; Ex モードでないと
                きにのみ有効です。
-s {pattern}    Vile: {pattern} を検索します。

-t {tag}        Elvis, Nvi, Posix, Vi, Vim: {tag} を含むファイルを編集します。
-t{tag}         Vim: 同上。

-T {term}       Vim: {term} に端末名をセットします。

-u {vimrc}      Vim: {vimrc} ファイルを初期化ファイルとして読み込みます。

-U {gvimrc}     Vim: {gvimrc} ファイルを GUI 初期化ファイルとして読み込みます。

-v              Nvi, Posix, Vi, Vim: ノーマルモードで起動します(Vi ではビジュア
                ルモードを意味していました)。
                Vile: 閲覧モードで起動し、変更は不可です。

-V              Elvis, Vim: 冗長なモードで起動します。
-V{nr}          Vim: 特定レベルの冗長なモードで起動します。

-w {size}       Elvis, Posix, Nvi, Vi, Vim:'window'の値を{size}にセットします。
-w{size}        Nvi, Vi: "-w {size}"と同じです。
-w {name}       Vim: スクリプトファイル{name}に書き込みます(non-digit で起動し
                なければなりません)。

-W {name}       Vim: スクリプトファイル{name}に追加します。

-x              Vi, Vim: 暗号鍵の入力を尋ねさせます。|encryption|もご覧下さい。

-X              Vim: Xサーバに接続しません。

-y              Vim: |evim|のように簡単モードで起動します。

-Z              Vim: 制限モード

@{cmdfile}      Vile: {cmdfile} を初期化ファイルに使います。

==============================================================================
7. POSIX 準拠                                   *posix* *posix-compliance*

2005年、Vimの互換性をチェックするためにPOSIXテストを行いました。テストのほとん
どはパスしました。Vi互換モードで実行したときでもPOSIX準拠でない点が2,3ありまし
た。

Vim起動時にオプション'cpoptions'にPOSIXフラグを含めるには、環境変数$VIM_POSIX
を設定してください。そうするとVimができるだけPOSIXに従うようになります。これは
Vi互換であることとは少し違います。

以下はVimがPOSIX仕様に従わない点とその理由です:

                                                        *posix-screen-size*
        Vimは端末からより確かな方法でサイズが得られると、環境変数$COLUMNSと
        $LINESを無視します。'cpoptions'にフラグ'l'を加えると$COLUMNSと$LINESが
        他の方法で得られたサイズを上書きするようになります。

        オリジナルのViではコマンド"{"と"}"は"{"で止まりませんが、POSIXは止まる
        ように指定しています。POSIX流を望むなら'cpoptions'にフラグ'{'を加えて
        ください。

        コマンド"D", "o", "O"がカウントを受け付けます。繰り返されたときもです。
        カウントを無視するようにしたければ'cpoptions'にフラグ'#'を加えてくださ
        い。

        'cpoptions'にフラグ'.'が入っていると、バッファが変更されているときコマ
        ンド":cd"が失敗します。

        ViにはATTENTIONメッセージはありません。ATTENTIONメッセージを出さなくす
        るには'shortmess'にフラグ"A"を加えてください。

POSIXテストの実行についての注意:
- viテスト33はときどき未知の理由のために失敗します
- viテスト250が失敗します。新しいバージョンで挙動が変更されるでしょう。
    http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html
    (今はリンク切れ。現在の場所はおそらくここ:
    https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711)
- viテスト310が失敗します。エラーが起きたとき終了コードが非ゼロになる?
- exテスト24が失敗します。テストが間違っているためです。SUSv2とSUSv3の間に変更
  されました。
- exテスト47, 48, 49, 72, 73が失敗します。サイレントモードでは.exrcは読み込ま
  れず、$EXINITが使われないためです。
- exテスト76, 78が失敗します。printfの代わりにechoが使われるためです(修正され
  ました)。Also: problem with \s not changed to space.
- exテスト355が失敗します。"30z"のときに'window'が使われないためです。
- exテスト368が失敗します。サイレントモードでシェルコマンドがエコーされないた
  めです。
- exテスト394が失敗します。コマンド"="の出力がサイレントモードで見えないためで
  す。
- exテスト411が失敗します。テストファイルが迷子の':'を含んで正しくないためです
- exテスト475, 476が失敗します。サイレントモードでリプリント出力が見えないため
  です。
- exテスト480, 481が失敗します。tagsファイルがタブでなくスペースを含んでいるた
  めです。
- exテスト502が失敗します。サイレントモードで.exrcが読まれないためです。
- exテスト509が失敗します。サイレントモードで.exrcが読まれないためです。また、終了コードが2
  でなく1になるためです。
- exテスト534が失敗します。サイレントモードで.exrcが読まれないためです。


vim:tw=78:ts=8:ft=help:norl: