Up: 目次   [Index]


Vim と Vi の主な違ひ

*vi_diff.txt*   For Vim バージョン 8.1.  Last change: 2019 Nov 12


                  VIMリファレンスマニュアル       by Bram Moolenaar

Vim と Vi の違ひ

このファイルは Vim と Vi/Ex の違ひを一覽表示し、Vi になくて Vim にあるものの槪要を說明します。

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

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

1. シミュレートされてゐるコマンド

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

:[range]o[pen]

|:visual| と同樣。Ex モードを終了します。

{Vi: オープンモードで編輯を開始する}

:[range]o[pen] /pattern/

上と同樣で、さらに現在行の中で "pattern" にマッチする桁へカーソルを移動します。

Vim にオープンモードはありません。まつたく便利ではないからです。Vi なら ":open" でオープンモードを開始しますが、Vim では Ex モードを拔けます。その結果、Vi の場合と同じコマンドが實行できるやうになります。ただ、1 行だけを再描畫するのでなく、畫面全體を再描畫する點が違ひます。

2. なくなつてゐるオプション

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

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

Vi は termcap エントリの變更を許可しませんでした。Vi を終了し、termcap エントリを編輯して再試行する必要があります。Vim には |terminal-options| があります。

3. 制限

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

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

アンドゥとレジスタの中のテキストに關する情報はメモリに保持されます。ですので、使用可能な (假想) メモリの量を超えて (大きな) 變更を行つてゐる場合はアンドゥレベルの數とレジスタに保持されうるテキストは制限されることになります。コマンドライン履歷や quickfix モードでのエラーメッセージなどの他のものもまたメモリに保持されます。

メモリの使ひ方を制限する

maxmem’ (’mm’) オプションは 1 つのバッファに使はれるメモリの最大の量 (キロバイトで) を決めるのに使ひます。’maxmemtot’ はすべてのバッファで使はれるメモリの最大の量 (キロバイトで) を決めるのに使ひます。Amiga と MS-DOS では ’maxmemtot’ は使へるメモリの量に依存して設定されます。

これらは嚴格な制限ではなく、いつテキストをスワップファイルに移動するかの目安です。もし Vim がファイルにスワップを行ふのが嫌であれば ’maxmem’ と ’maxmemtot’ の値をかなり大きい値に設定しておきます。さうするとスワップファイルはリカバリーの時にのみ使はれるやうになります。もしどんなスワップファイルも欲しくなければ ’updatecount’ を 0 に設定するか、Vim を起動するときに "-n" 引數をつけます。

4. もつとも興味深い機能追加

Vi との互換性

|'compatible'|
Vim には Vi の 99% の機能が含まれますが、Vi のうちのいくつかはバグか少なくとも改良が必要だと考へられるものがあります。しかしそれでもなほ Vim は可能な限り「本當の」 Vi のやうに振る舞ふモードで起動します。Vim にもう少しよい動作をして欲しい場合は ’compatible’ オプションを解除してみてください。

:set nocompatible

それか Vim を "-N" 引數つきで起動してください:

vim -N

もし .vimrc ファイルがあれば ’nocompatible’ つきで Vim が起動します。|startup| も見てください。

cpoptions’ オプションはたくさんの特定のアイテムに關する Vi と同一の動作をするかどうかのオン/オフを切り替へることができます。

樣々なシステムのサポート

Vim は次のシステムで利用できます:

Note:
いくつかのシステムではリソース使用量を削減するために機能を無效にする必要があります (特に MS-DOS)。いくつかの時代後れのシステムでは以前のバージョンのVimを使はねばなりません。

多段永續化アンドゥ

|undo|
u’ は時をさかのぼり、’CTRL-R’ は再び進めます。變更を覺えておく回數を ’undolevels’ オプションでセットしてください (初期値 1000)。’undolevels’ を 0 にセットすると Vi 互換のアンドゥになります。-1 にセットするとアンドゥできないやうになります。 あるバッファに對する變更をすべてアンドゥした場合は、バッファは何も變更されてゐないと見なされます。つまり <!> なしで :q で終了させることができます。

變更をアンドゥしてその後新しい變更をすると、Vim のアンドゥツリーにブランチが作られます。これにより、テキストを永遠に失ふといふ危險性なしにテキストをどの狀態にでも戾すことができます。|undo-tree| ’undofile’ オプションがセットされた場合には、アンドゥ情報がファイルに保存されます。これはつまり、Vim を一旦終了し再起動して同じファイルの編輯をすれば、再起動前に行つてゐた變更もアンドゥできる、といふことです。

グラフィカルユーザーインターフェイス (GUI)

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

複數のウィンドウとバッファ

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

端末ウィンドウ

|:terminal|
Vim は端末エミュレータが動くウィンドウを作ることができます。これは、任意のコマンド、シェル、またはデバッガを實行するために使用できます。

構文ハイライト

|:syntax|
Vim ではキーワードやパターンやその他のものをハイライトすることができます。これは |:syntax| コマンドで定義し、ほとんどの言語やファイルのタイプに對してハイライトをつけることができます。C, C++, Java, Pascal, Makefiles, シェルスクリプトなどなどの、多くの一般的な言語のうちのほとんどのためのハイライト定義ファイルはすでに含まれてゐます。ハイライトに使はれる色は普通の端末で定義することができ、色端末と GUI では |:highlight| コマンドで定義できます。色を變更するのに便利な方法は |:colorscheme| コマンドを使ふことです。

ハイライトされたテキストを HTML にエクスポートすることができます |convert-to-HTML|。ハイライトできる他の要素は、檢索文字列のマッチ部分 |'hlsearch'|、對應する括弧 |matchparen|、カーソル行とカーソル桁 |'cursorline'| |'cursorcolumn'| です。

テキストプロパティ

|textprop.txt|
Vim はプラグインによるテキストの强調表示をサポートしてゐます。プロパティタイプは |prop_type_add()| で指定でき、プロパティは |prop_add()| で配置できます。

スペルチェック

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

折疊み

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

差分モード

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

プラグイン

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

非同期通信とタイマー

|channel| |job| |timer|
Vim はバックグラウンドで他のプロセスとメッセージを交換できます。これにより、何か仕事をさせ結果を Vim に送り返すやうなサーバーを實現可能にします。|channel|

Vim はジョブを開始させ、それと通信し、停止させられます。|job| タイマーは、何かしらの仕事をする函數を、一定時閒經過後に1回だけ、もしくは繰り返し實行することができます。|timer|

一聯のコマンドを繰り返す

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

柔軟な插入モード

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

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

ビジュアルモード

|Visual-mode|
ビジュアルモードは、初めにいくつかのテキストを選擇してからそれに對してコマンドを實行するのに使ふことができます。これは初めにオペレータコマンドを與へてからそのオペレータを施すテキストの最後まで移動するコマンドを實行するもう 1 つの (簡單な) 方法です。 |v| と |V| はビジュアルモードを開始します。|v| は文字ごとに選擇し |V| は行ごとに選擇します。カーソルを動かしてビジュアル部分を廣げ、その部分はスクリーン上でハイライトされます。"o" を打つことでビジュアルなテキスト部分の反對側の端が動かされることになります。ビジュアルなテキスト部分には次のオペレータを施すことができます:

d削除
c變更
yヤンク
> または <インデントを插入/削除
!外部プログラムを使つてフィルターを施す
=インデントを通してフィルターを施す
:ビジュアルな行に對して |:| コマンドを始める
gqtextwidth’ 桁位置にテキストを整形する
J行を連結する
~大文字小文字を入れ換へる
u小文字にする
U大文字にする

{Vi はビジュアルモードを持つてゐません、"visual" といふ名前はノーマルモードで Ex モードと區別するために使はれてゐます}

ブロックオペレータ

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

ヘルプシステム

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

コマンドライン編輯/履歷

|cmdline-editing|
カーソルキーを使ふことでコマンドラインのどの場所からでも插入を行つたり削除を行つたりすることができます。右/左矢印キーは前/後に 1 つの文字移動するのに使ふことができ、Shift キーを押しながら右/左矢印キーを押すと前/後に 1 つの單語移動することができます。CTRL-B/CTRL-E はコマンドラインの初め/終はりに移動するのに使ふことができます。 {Vi: 行の最後の文字だけを變更できます}

{Vi: <Esc> を押すとコマンドラインが實行されます。これはほとんどの人にとつて豫想外のことです。それゆゑ Vim では變更されました。しかし、<Esc> がマッピングの一部であるときは、コマンドラインが實行されます。<Esc> を打つたときにも Vi の振る舞ひをしたいなら、":cmap ^V<Esc> ^V^M" を使つてください。}

|cmdline-history|
コマンドラインは記錄されます。上/下矢印キーを使ふことで前のコマンドラインを呼び出すことができます。’history’ オプションで覺えておく行數を設定することができます。檢索パターンのコマンド履歷はまた別に分かれてゐます。

コマンドライン補完

|cmdline-completion|
コマンドライン (スクリーンの一番下で) でなんらかの作業をしてゐるときに <Tab> キーを押すと補完を行ふことができます。

whatexample
コマンド: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-NCTRL-P を使ふことでどこかに現れる單語を補完することができます。|i_CTRL-N|

CTRL-X を使ふことでもう 1 つのモードに入ることができます。どの補完を行ふことができるかといふと:

|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’ オプションがセットされてゐる場合は長い行は單語の閒で切られます。かうすることで段落を 1 つの行にして編輯することが容易になります (例: 後で編輯中のテキストを 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 の機能

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

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

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

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

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

コマンドモードで:

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

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

"U" は最後に變更した行から離れた後でも、また "u" を實行した後でも動作します。

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

"][" は C の函數の次の終はりに移動します (1 桁目が ’}’ の行)。 "[]" は C の函數の前の終はりに移動します (1 桁目が ’}’ の行)。

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

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

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

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

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

Vi はタグを檢索するときに ’wrapscan’ を使用します。タグにジャンプすると、Vi は別のファイルの 2 行目から檢索を開始します。’wrapscan’ が設定されてゐない場合、他のファイルの 1 行目のタグを見つけられません。

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

{Vi: 一部のバージョンでは常に二分探索を使用します}

{Vi には、タグファイル內のコマンドに對するセキュリティ保護機能はありません}

前に編輯されたファイルは代替ファイルリストに覺えておかれます。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 %:S" してから ":set noro" としなければなりませんでした。

tildeop’ がセットされてゐると "~" はオペレータとして動作します (移動コマンドを後に續けます)。

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

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

{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" コマンドは插入されるテキストが 1 行より短い場合は "." で繰り返すことができませんでした。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" コマンドは現在セットされてゐるすべてのマークをリストします。"']" と "`]" は前に操作を行つた場所の最後か、テキストを插入したかプットした場所の最後に移動します。"'[" と "`[" は初めに移動します。 {Vi: 大文字のマークはない}

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-ACTRL-@ のやうに動作しますが插入モードから拔けません。

CTRL-R {register} はレジスタの內容を插入するのに使ふことができます。

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

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

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

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

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

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

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

"i" か "a" コマンドでのカウント前置はすべてのテキストに對して利用できます。Vi では 1 つの行に對してのみカウントを前置できました。"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" メッセージはマッピングが拒否された理由で表示される、エラーメッセージではなく普通のメッセージです。 {Vi: エラーメッセージは、あなたがこれらメッセージを讀む前に、他のメッセージで上書きされるかもしれません。}

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

6. サポートされてゐる Vi の機能

Vim はほとんどすべての Vi コマンドを大半は同じやり方でサポートしてゐます。それは、’compatible’ オプションが設定されてゐて、’cpoptions’ にすべてのフラグが含まれてゐる場合です。’compatible’ をリセットし、’cpoptions’ からフラグを削除することによる影響は、特定のコマンドのヘルプで確認できます。

ヘルプファイルは、Vim にはあるが Vi にはない機能を {not in Vi} でマークするために使用してゐました。しかし、これらの備考はヘルプファイルを煩雜にしてゐたので、私たちは今それを反對の方法でやつてゐます: 以下は Vi が既にサポートしてゐるものの一覽です。これ以外のものは Vim によつて追加されました。

以下の Ex コマンドは Vi でサポートされてゐます:

:abbreviate短縮入力を登錄する
:appendテキストを追加する
:args引數リストを表示
:cdディレクトリの移動
:change變更リストを表示する
:chdirディレクトリの移動
:copy行のコピー
:delete行を削除
:editファイルの編輯
:exit:xit‘ と同じ
:fileカレントファイルの名前を設定または表示
:globalパターンにマッチした行でコマンドを實行する
:insertテキストを插入
:join行の結合。Vi: join! はない
:kマークを設定
:list行を表示
:mapマップの設定または表示
:markマークを設定
:move行を移動する
:Next引數リストの 1 つ前のファイルを編輯 {Vi: count はない}
:next引數リストの次のファイルを開く {Vi: count はない}
:number行番號を表示
:openopen モードを開始 (Vim では未實裝)
:popタグスタックの 1 つ古いエントリへジャンプ (一部のバージョンでのみ)
:preserveすべてのテキストをスワップファイルに書き出す {Vi: 終了するかもしれない}
:previous:Next‘と同じ {Vi: 一部のバージョンでのみ}
:print行單位で印刷する
:putテキストにレジスタの內容を插入
:quitVi を終了
:readテキストにファイルを插入
:recoverスワップファイルからファイルを復元 {Vi: 別の方法で恢復し、恢復するものがあればメールを送信する}
:rewind引數リストの先頭のファイルを開く。++opt はない
:setオプションを設定する。しかし ‘:set inv{option}‘, ‘:set option&‘, ‘:set all&‘, ‘:set option+=value‘, ‘:set option^=value‘, ‘:set option-=value‘, ‘:set option<‘ はない
:shellシェルを實行する
:sourceVi or Ex コマンドをファイルから讀み込む
:stopエディタをサスペンドするかシェルにエスケープする
:substituteテキストの檢索と置換。Vi: ’&’, ’i’, ’s’, ’r’ または ’I’ フラグ, 確認プロンプトは ’y’ と ’n’ のみサポート, ハイライトなし
:suspend":stop" と同じ
:t":copy" と同じ
:tagタグへジャンプする
:unabbreviate短縮入力を削除
:undo最後の變更を取り消す {Vi: 1 レベルのみ}
:unmapマップを削除
:vglobalパターンにマッチしない行でコマンドを實行する
:versionバージョン番號その他の情報を表示
:visual":edit" と同じ、ただし "Ex" モードから拔ける
:wqファイルに保存して Vi を終了する
:writeファイルに保存
:xitバッファが變更されてゐたら保存し、Vi を終了する
:yank行をレジスタへヤンク
:zいくつかの行を表示 {Vi のすべてのバージョンにはない}
:!行をフィルタにかける、または、外部コマンドを實行する
:"コメント
:#":number" と同じ
:*レジスタの內容を實行する
:&最後に實行した ":substitute" を繰り返す
:<shiftwidth’ 1 つ分だけ行を左へシフト
:=カーソルのある行の行番號を表示
:>shiftwidth’ 1 つ分だけ行を右へシフト
:@レジスタの內容を實行。しかし ‘:@‘ はない。‘:@@‘ は一部のバージョンでのみ

これらのコマンドに共通するのは、Viが ‘:edit‘ やファイルを開く他のコマンドの ++opt 引數をサポートしてゐないことです。

以下のノーマルモードコマンドはViでサポートされてゐます:

Note:
說明文中の WORD, N, Nmove などの意味については、|normal-index| の先頭を參照してください。

|CTRL-B|N 畫面後方にスクロールする
|CTRL-C|現在の(檢索)コマンドを中斷する
|CTRL-D|N 行(デフォルト: 畫面の半分の行數)下にスクロールする。Vim は ’scroll’ 畫面行をスクロールし、Vi はファイル行をスクロールする。行が折り返されると違ひが出る。
|CTRL-E|N 行上にスクロールする (N 行餘分)
|CTRL-F|N 畫面前方にスクロールする
|CTRL-G|カレントファイル名と位置を表示する
|<BS>|"h" と同じ
|CTRL-H|"h" と同じ
|<NL>|"j" と同じ
|CTRL-J|"j" と同じ
|CTRL-L|畫面を再描畫する
|<CR>|カーソルを N 行下の最初の文字へ移動する
|CTRL-M|<CR> と同じ
|CTRL-N|"j" と同じ
|CTRL-P|"k" と同じ
|CTRL-R|一部のViバージョン: CTRL-L と同じ
|CTRL-T|タグリストの N 個古いタグにジャンプする
|CTRL-U|N 行上へスクロールする (デフォルト: 畫面の半分の行數) {Vi はファイル行を使つてゐたが、Vim は ’scroll’ 畫面の行をスクロールする。行が折り返されると違ひが出る}
|CTRL-Y|N 行下へスクロールする
|CTRL-Z|プログラムを中斷する (または新しいシェルを起動する)
|CTRL-]|カーソル下の識別子で :ta する {Vi: カーソルの後の識別子}
|CTRL-^|代替ファイルを編輯する {Vi: count はない}
|<Space>|"l" と同じ
|!|{filter} コマンドで Nmove テキストをフィルタ處理する
|!!|{filter} コマンドで N 行をフィルタ處理する
"次の削除、ヤンク、貼り付けにレジスタ {a-zA-Z0-9.%#:-"} を使ふ (大文字は追記する) ({.%#:} は貼り付けでのみ動作する)
|$|カーソルを N 番目の次の行の行末へ移動する
|%|現在の行の次の (波/角) 括弧を檢索し、そのマッチに移動するか、マッチするコメント括弧に移動するか、またはマッチするプリプロセッサディレクティブに移動する (Vi: count は未サポート)
|&|最後の :s を繰り返す
|'|マークにジャンプする (Vi: 小文字のマークのみ)
|\(|カーソルを N 文後方に移動する
|\)|カーソルを N 文前方に移動する
|+|<CR> と同じ
|,|最後の f, t, F または T を反對方向に N 回繰り返す
|-|カーソルを N 行上の最初の文字へ移動する
|.|置き換へられた最後の變更を N 回繰り返す
|/|{pattern} の N 番目の出現箇所を前方に檢索する
|0|カーソルを行の最初の文字へ移動する
|:|Ex コマンドの入力を開始する
|;|最後の f, t, F または T を N 回繰り返す
|<|Nmove 行を ’shiftwidth’ 1 つ分左にシフトする
|<<|N 行を ’shiftwidth’ 1 つ分左にシフトする
|=|"indent" で Nmove 行をフィルタリングする
|==|"indent" で N 行をフィルタリングする
|>|Nmove 行を ’shiftwidth’ 1 つ分右にシフトする
|>>|N 行を ’shiftwidth’ 1 つ分右にシフトする
|?|{pattern} の N 番目の出現箇所を後方に檢索する
|@|レジスタ {a-z} の內容を N 回實行する {Vi: 名前付きレジスタのみ}
|@@|前の {a-z} を N 回繰り返す
|A|行末の後にテキストを N 回追加する
|B|カーソルを N WORD 後方へ移動する
|C|カーソル位置から行末まで變更する
|D|カーソルの下の文字を行の終はりまで、さらに N-1 行まで削除する [レジスタ x へ]。"d$" と同義
|E|カーソルを前方の N WORD の終はりに移動する
|F|カーソルを左に N 番目に現れる {char} に移動する
|G|カーソルを N 行目に移動する。デフォルトは最終行
|H|カーソルを畫面上から N 行目に移動する
|I|行の最初の文字の前にテキストを N 回插入する
|J|N 行を連結する。デフォルトは 2
|L|カーソルを畫面下から N 行目に移動する
|M|カーソルを畫面の中央の行に移動する
|N|最後の ’/’ か ’?’ を反對方向に N 回繰り返す
|O|カーソルの上に改行してテキストを插入し、N 回繰り返す {Vi: 空白の [count] 畫面行}
|P|カーソル前にテキストを N 回貼り付ける [レジスタ x から] {Vi: count はない}
|Q|"Ex" モードへ切り替へる
|R|置換モードに入る: 既存の文字を上書きする。入力したテキストを N-1 回繰り返す
|S|N 行を [レジスタ x へ入れ] 削除し、插入を開始する。"cc" と同義
|T|カーソルを左に N 番目に現れる {char} の後ろまで移動する
|U|1 行のすべての最新の變更を元に戾す {Vi: 最後に變更された行から移動してゐない閒}
|W|カーソルを N WORD 前方に移動する
|X|カーソルの前の N 文字を削除する [レジスタ x に入れる]
|Y|N 行ヤンクする [レジスタ x に]。"yy" と同義
|ZZ|變更されてゐれば現在のファイルを保存して終了する
|[[|カーソルを N セクション後方に移動する
|]]|カーソルを N セクション前方に移動する
|^|カーソルを行の最初の文字に移動する
|_|カーソルを N-1 行下の最初の文字に移動する
|`|カーソルをマーク {a-zA-Z0-9} へ移動する
|a|カーソルの後ろにテキストを N 回追加する
|b|カーソルを N word 後方に移動する
|c|Nmove テキストを削除して [register x へ入れ] 插入を開始する
|cc|N 行削除して [register x へ入れ] 插入を開始する
|d|Nmove テキストを削除する [レジスタ x へ入れる]
|dd|N 行を削除する [レジスタ x へ入れる]
|e|カーソルを前方の N word の終はりに移動する
|f|カーソルを右に N 番目に現れる {char} に移動する
|h|カーソルを左に N 文字移動する
|i|カーソルの前にテキストを N 回插入する
|j|カーソルを N 行下に移動する
|k|カーソルを N 行上に移動する
|l|カーソルを右に N 文字移動する
|m|カーソル位置にマーク {A-Za-z} を設定する
|n|最後の ’/’ か ’?’ を N 回繰り返す
|o|カーソルの下に改行してテキストを插入する {Vi: 空白の [count] 畫面行}
|p|カーソル後にテキストを N 回貼り付ける [レジスタ x から] {Vi: count はない}
|r|N 文字を {char} に置き換へる {Vi: CTRL-V <CR> は依然として改行に置き換へらる。何かを <CR> に置き換へることはできない}
|s|(置換へ) N 文字を削除して [レジスタ x へ入れ] 插入を開始する
|t|カーソルを右に N 番目に現れる {char} の前まで移動する
|u|變更を元に戾す {Vi: 1 レベルのみ}
|w|カーソルを N word 前方に移動する
|x|カーソル下およびカーソルの後の N 文字を削除する [レジスタ x へ入れる]
|y|Nmove テキストをヤンクする [レジスタ x へ入れる]
|yy|N 行をヤンクする [レジスタ x へ入れる]
|z<CR>|現在の行を先上位へ
|z-|現在の行を最下位へ
|z+|カーソルを N 行目上へ
|z^|カーソルを N 行目上へ
|{|カーソルを N 段落後方へ移動する
|カーソルを N 桁位置へ移動する
|}|カーソルを N 段落前方へ移動する
|~|カーソルの下の N 文字の大文字と小文字を切り替へる。Vim: ’tildeop’ に依る{Vi: count はない、’tildeop’ はない}
|<Del>|"x" と同じ

以下のコマンドは Vi の插入モードでサポートされてゐます:

CTRL-@前に插入したテキストを插入して插入モードを停止する {Vi: 最初の文字として入力した場合のみ。最大 128 文字まで}
CTRL-Cinsertmode’ が設定されてゐなければ、略語をチェックせずに插入モードを終了する
CTRL-D現在の行の shiftwidth 1 つ分のインデントを削除する {Vi: CTRL-D は自動インデントの後に使用した場合にのみ機能する}
<BS>カーソルの前の文字を削除する {Vi: 自動インデントを削除しない、行をまたがない、插入の過去の開始位置を削除しない}
CTRL-H<BS> と同じ
<Tab><Tab> 文字を插入する
CTRL-I<Tab> と同じ
<NL><CR> と同じ
CTRL-J<CR> と同じ
<CR>改行する
CTRL-M<CR> と同じ
CTRL-T現在の行に shiftwidth 1 つ分のインデントを插入する {Vi: インデント內の場合のみ}
CTRL-V {char}次の非數字を文字通りに插入する {Vi: 10 進數バイトエントリなし}
CTRL-Wカーソルの前の單語を削除する
CTRL-Zinsertmode’ が設定されてゐる場合: Vi を中斷する
<Esc>插入モードを終了する (’insertmode’ が設定されてゐなければ)
CTRL-[<Esc> と同じ
0 CTRL-D現在行のすべてのインデントを削除する
^ CTRL-D現在行のすべてのインデントを削除し、次行にそれを復元する
<Del>カーソル下の文字を削除する

以下のオプションは Vi でサポートされてゐます:

’autoindent’ ’ai’

新しい行のために前の行のインデントを使ふ {Vi はこれとは少し違つたやり方をする: <Esc> や<CR> を打つたときにインデントが削除された後、上下に移動したときのカーソル位置は削除されたインデントの後である。Vi は削除されたインデントのどこかにカーソルを置く}

’autowrite’ ’aw’

變更された場合は自動的にファイルに書き込む

’directory’ ’dir’

スワップファイルのディレクトリ名のリスト {Vi: 一時ファイルを入れるディレクトリ。デフォルトは "/tmp"}

’edcompatible’ ’ed’

":substitute" コマンドのフラグを切り替へる

’errorbells’ ’eb’

エラーメッセージのベルを鳴らす

’ignorecase’ ’ic’

檢索パターンの大文字小文字を無視する

’lines’

ディスプレイの行數

’lisp’

Lisp 用の自動インデント {Vi: ちよつとだけ違ふ}

’list’

<Tab> と <EOL> を表示する

’magic’

檢索パターンの特別な文字を變更する

’modeline’ ’ml’

ファイルの先頭または末尾の ’modelines’ を認識する {一部の Vi バージョンでは modelines と呼ばれてゐる}

’number’ ’nu’

各行の前に行番號を表示する

’paragraphs’ ’para’

段落を區切る nroff マクロ

’prompt’ ’prompt’

Ex モードでプロンプトを有效にする

’readonly’ ’ro’

バッファへの書き込みを禁止する {Vimは ‘:view‘ でファイルを編輯する場合は ’readonly’ を設定する}

’remap’

マッピングの再歸を許可する

’report’

レポートのしきい値の行數の變更

’scroll’ ’scr’

CTRL-UCTRL-D のスクロール行數

’sections’ ’sect’

セクションを區切る nroff マクロ

’shell’ ’sh’

外部コマンドに使用するシェルの名前

’shiftwidth’ ’sw’

(自動) インデントステップに使用するスペースの數

’showmatch’ ’sm’

括弧を插入する場合は、對應する括弧に簡單にジャンプする

’showmode’ ’smd’

現在のモードを示すステータス行のメッセージ

’tabstop’ ’ts’

ファイル內の <Tab> が使用するスペースの數

’taglength’ ’tl’

タグの有效文字數

’tags’ ’tag’

tag コマンドで使用されてゐるファイル名のリスト {Vi: デフォルトは "tags /usr/lib/tags"}

’tagstack’ ’tgst’

タグをタグスタックにプッシュする {すべての Vi のバージョンにはない}

’term’

端末名

’terse’

いくつかのメッセージを短くする

’timeout’ ’to’

マッピングとキーコードのタイムアウト

’timeoutlen’ ’tm’

timeout’ の時閒 {一部の Vi バージョンでのみ}

’ttytype’ ’tty’

term’ の別名

’verbose’ ’vbs’

有益なメッセージを與へる {ブール値オプションとして一部の Vi バージョンでのみ}

’warn’

バッファが變更されたときにシェルコマンドを警告する

’window’ ’wi’

CTRL-FCTRL-B のスクロール行數 {表示する行數を指定するためにも Vi はオプションを使用する}

’wrapmargin’ ’wm’

折り返しが始まる右からの文字 {Vi: 異なつた働きをする。そしてあまり役に立たない}

’wrapscan’ ’ws’

檢索はファイルの末尾で折り返す

’writeany’ ’wa’

"!" を必要とせずにファイルに書き込む

|missing-options| も參照。

7. コマンドライン引數

異なるバージョンの Vi では異なるコマンドライン引數があります。これはちよつと紛らはしいですので便宜のためにこの章では違ひの槪略を說明します。

5 つの種類の Vi がここでは考慮されます:

ElvisElvis version 2.1b
NviNvi version 1.79
PosixPosix 1003.2
ViVi version 3.7 (Sun 4.1.x)
VileVile version 7.4 (不完全)
VimVim version 5.2

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

+{command}

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

-
--

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: 指定されたファイル名をそれぞれ 1 つのウィンドウに讀み込みます (Vim では -o を使つてください)。

-A

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

-b {blksize}

Elvis: ファイルのセッションに {blksize} のブロックサイズを使ひます。

-b

Vim: ’binary’ モードをセットします。

-C

Vim: Vi 互換モードで起動します。

-c {command}
-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
-G {gui}

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

-g

Vim: GUI で起動します。

-g N

Vile: N 行目から編輯を開始します。

-h
-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} を quickfix エラーファイルとして使ひます。

-q{name}

Vim: 同上。

-R

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

-r

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

-S

Nvi: ’secure’ オプションをセットします。

-S {script}

Vim: 起動後にスクリプトを實行します。

-s
-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
-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} を初期化ファイルに使ひます。

8. POSIX 準據

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

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

Vi の POSIX 仕樣についてはここにあります:
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html

および關聯する Ex 仕樣:
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ex.html

以下は Vim が POSIX 仕樣に從はない點とその理由です:

Vim は端末からより確かな方法でサイズが得られると、環境變數 $COLUMNS と $LINES を無視します。’cpoptions’ にフラグ ’l’ を加へると $COLUMNS$LINES が他の方法で得られたサイズを上書きするやうになります。

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

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

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

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

POSIX テストの實行についての注意:


Up: 目次   [Index]