本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 1 : ユーザーコマンド (N~Z) > v

vi(1)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

vi, view, vedit ― スクリーン指向の (ビジュアル) テキストエディター

構文

vi [-] [-l] [-r] [-R] [-t tag] [-v] [-V] [-w size] [-x] [-C] [+ command] [file ...]

XPG4 構文

vi [-rR] [-c command] [-t tag] [-w size] [file ...]

旧式のオプション

vi [-rR] [+command] [-t tag] [-w size] [file ...]

view [-] [-l] [-r] [-R] [-t tag] [-v] [-V] [-w size] [-x] [-C] [+ command] [file ...]

vedit [-] [-r] [-R] [-l] [-t tag] [-v] [-V] [-w size] [-x] [-C] [+ command] [file ...]

注意

プログラム名の ex, edit, vi, view, および vedit は、同じプログラムに対する異なるパーソナリティです。 ここでは、 vi/view/vedit パーソナリティの動作について説明します。

説明

vi (ビジュアルエディター) プログラムは、基礎となる ex 行エディター ex(1) 参照) に基づくディスプレイ指向のテキストエディターです。 両エディターを切り換えたり、 vi の中から ex のコマンドを実行したりすることが可能です。 行エディターのコマンドおよびオプションについては、 ex(1) で説明します。 ここでは、ビジュアルモード コマンドだけを説明します。

view プログラムは、 readonly エディターオプションが設定される点を除き vi と同じです (ex(1) 参照)。

vedit プログラムは、初心者や不慣れなユーザー使いやすいようになっています。 report エディターオプションが 1 に設定され、 nomagic, novice, および showmode エディターオプションも設定されています。

vi では、 ターミナルスクリーンが、編集中のファイルのメモリー上のコピーに対するウィンドウとなります。 ファイルのコピーに加えた変更は、スクリーンディスプレイに反映して表示されます。 スクリーン上のカーソルの位置は、ファイルコピー内の位置を示します。

環境変数 TERM によって、 terminfo データベースで定義したターミナルタイプを指定しなければなりません (terminfo(4) 参照)。 指定しなければ、メッセージが表示され、行エディターが呼び出されます。

ex と同様に、エディターの初期化スクリプトは環境変数 EXINIT 、あるいは現在のディレクトリまたはホームディレクトリにある .exrc ファイルに置くことができます。

オプションと引き数

vi は、次のコマンド行オプションや引き数を認識します。

- 

対話形式のユーザーへのフィードバックをすべて抑制します。 これは、エディターコマンドをスクリプトから取り出すときに便利です。

-l 

lisp エディターオプションを設定します (ex(1) 参照)。 lisp コード用の字下げを行います。 vi(, ), {, }, [[, および ]] の各コマンドは、 lisp ソースコードで機能するよう修正されます。

-r 

エディターまたはシステムがクラッシュした後に、指定の file を回復します。 file を省略した場合は、セーブされている全ファイルのリストがプリントされます。 セーブされたファイルを回復するには、そのファイルの所有者でなければなりません (その他のユーザーが所有しているファイルをスーパーユーザーが回復することはできません)。

-R 

ファイルが誤ってオーバーライトされないように readonly エディターオプションを設定します (ex(1) 参照)。

-t tag 

tag tag コマンドを実行して、定義済みのファイルをロードし位置づけます。 ex(1)tag コマンドと tags エディターオプションを参照してください。

-v 

ビジュアルモード (vi) を起動します。 ex では有効ですが、 vi では無意味です。

-V 

冗長モードを設定します。 エディターのコマンドが、 .exrc ファイルまたはソースファイルから入力されると、実行時に表示されます (ex(1)source コマンド参照)。

-wsize 

window エディターオプションの値を size に設定します。 size を省略すると、デフォルトとして 3 を使用します。

-x 

暗号化モードを設定します。 暗号化したファイルの作成または編集に使用するキーを入力するよう要求されます。 このコマンドは、読み込んだテキストが暗号化されているかどうかを判断します。 テンポラリバッファー ファイルも -x オプションで入力されたキーの変形バージョンを使用して暗号化されます (ex(1) の crypt コマンド参照)。

-C 

暗号化のオプション。 -x オプションと同様の働きをしますが、 読み込んだすべてのテキストが暗号化されているとみなします。

-c command 

(XPG4 のみ)

+command 

(旧式) 指定した ex のコマンドモードのコマンド を実行して、編集を開始します。 通常の ex コマンド行のエントリーの指定と同じように、 command オプション引き数は縦線 (|) で区切られた複数の ex コマンドから構成されます。 この方法で入力モードに指定するコマンドを使用しても、どのような結果になるか確定できません。

file  

編集するファイルを 1 つまたは複数指定します。複数の file を指定した場合、指定した順に処理されます。 -r オプションも指定すると、ファイルは回復領域から読み取ります。

(XPG4 のみ) -t tag と -c command (または旧式の +command) オプションを両方とも指定すると、 -t tag を最初に処理します。つまり、タグを含むファイルが -t で選択され、次にコマンドが実行されます。

vi を起動すると、 コマンドモード に入ります。 入力モード に入るには、テキストの挿入または変更に使用するコマンドを入力します。

入力モードを終了するには、 ESC (エスケープ) を使用します。ただし、エディターオプション doubleescape を設定した場合は、 ESC 文字を 2 回連続して入力する必要があります (ex(1) 参照)。

コマンドモードでは、 ESC を使用して、完結していないコマンドを取り消すことができます。 入力モード以外で、途中まで入力したコマンドがない場合に ESC を使用すると、ターミナルのベルが鳴ります。

警告: ESC によって、"bottom line" コマンド (下記を参照) が 完了します

画面の最後の行 (1 番下の行) には、検索コマンド (/ および ?) 、 ex コマンド (:)、 およびシステムコマンド (!) に対する入力内容がエコー表示されます。この部分は、 エラーの報告やその他メッセージの出力にも使用されます。

テキストの入力中、またはステータス行でのコマンドの入力中に SIGINT シグナルを受け取ると、入力が終了して (またはコマンドが取り消されて)、 エディターはコマンドモードに戻ります。また、コマンドモードで SIGINT を受け取るとベルが鳴ります。ベルは一般に エラー (認識できないキー操作など) の通知に使用されます。

~ だけの行は、その直前の行がファイルの最終行であることを示します (~ の行はファイルの終わりを過ぎていることを示します)。 ローカルインテリジェンス機能が限定されているターミナルでは、スクリーン上に @ でマークされた行が表示される場合があります。 これは、スクリーン上のスペースがファイルの行に対応していないことを示します (^R と入力して、これらの空白を取り除いて再表示させれば、 この行を削除することができます)。

システムがクラッシュした場合、または vi が内部エラーや予想外のシグナルによって異常終了した場合、 vi は、まだ書き込まれていない変更があれば バッファーを保存しようとします。 保存された変更を読み出すには、 -r コマンド行オプションを使用します。

vi テキストエディターは、 SIGWINCH シグナルをサポートしており、ウィンドウの大きさの変更時にはスクリーンを再表示します。

コマンドのまとめ

ほとんどのコマンドでは、その前に引き数として数字を指定することができます。 この引き数は、サイズや位置の指定 (表示コマンドや移動コマンドの場合)、 あるいは反復回数の指定 (テキスト変更コマンドの場合) に使用します。 ここでは、簡単のため、このオプションの引き数の効果を説明するときには、 count という表記でこの引き数を示すことにします。

c, d, y, <, >, !, および = の各操作記号の後には、移動コマンドを指定して コマンドの適用範囲を指示することができます。 すなわち、適用範囲となるのは、現在のカーソル位置から、 移動コマンドで指示したカーソルの位置の直前までの領域です。 コマンドが行単位で作用する場合には、 この領域の中に一部または全部が含まれる行がすべて対象となります。 これ以外の場合は、指定した範囲だけが操作の対象になります。

以下の説明では制御文字を ^X という形式で表記します (これは Ctrl-X です)。また、空白とは、スペース, タブ, および代替スペースの 各文字のことであるとします。 代替スペースとは、 LANG 環境変数で指定された言語について langinfo(5) で記述した ALT_PUNCT 項目の最初の文字のことです (environ(5) 参照)。

特に説明がない限り、コマンドはコマンドモードで使用するものとします。 すなわち、入力モードでは効果はありません。

^B 

逆方向にスクロールして、前のテキストウィンドウを表示します。 この前にある count はスクロールするウィンドウの数を指定します。 2 行がオーバーラップします (可能な場合)。

^D 

テキストウィンドウを半画面分、順方向にスクロールします。 この前にある count はスクロールする行数 (論理行) を指定します。この行数は、後続の ^D または ^U コマンドでも使用されます。

^D 

(入力モード) autoindent または ^T で指定した字下げが shiftwidth スペース分だけ戻されます。 ^T によって行の先頭以外の位置に挿入した空白を ^D で戻すことはできません。 前に ^ を入れると、 現在の入力モードでの現在および後続の入力行の字下げはすべて 削除されます。ただし、空白を直接入力したり ^T を使うことにより行頭に空白を挿入した場合には新たに字下げが行われます。

^E 

順方向に 1 行分スクロールします。 カーソルの位置はそのまま変わりません (可能な場合)。

^F 

順方向にスクロールして、次のテキストウィンドウを表示します。 この前にある count はスクロールするウィンドウの数を指定します。 2 行がオーバーラップします (可能な場合)。

(XPG4 のみ) 現在の行が表示され、カーソルは、現在の行の空白以外の最初の文字か、行が空白行のときは最初の文字に移動します。

^G 

現在のファイル名、その他の情報 (行数や現在の位置) をプリントします (ex コマンドの f と同じです)。

^H 

左へ 1 文字分移動します (左端で止ります)。 この前にある count は前に戻る文字数を指定します (h と同じです)。 この場合、文字は表示されたままです。

^H 

(入力モード) 前の入力文字までカーソルを左に移動します。この文字はスクリーンから消去しません。 この文字は、セーブしたテキストからは削除されます。

^J 

可能であれば、カーソルを 1 行下の同じカラムに移動します。 この前にある count は下に移動する行数を指定します。 (^N および j と同じです)。

^L 

スクリーンをクリアして再表示します。 なんらかの理由でスクリーンの表示が乱れた場合に使用します。

^M 

次の行で空白以外の最初の文字に移動します。 この前にある count は先に進む行数を指定します。

^N 

^J および j と同じです。

^P 

カーソルが 1 行上の同じカラムに移動します。 この前にある count は上に移動する行数を指定します (k と同じです)。

^R 

@ でマークされた正しくない行 (ファイルの実際の行と対応していない行) を 削除して、現在のスクリーンを再表示します。

^T 

^T タグスタックをポップします。 ex(1)pop コマンドを参照してください。

^T 

(入力モード) shiftwidth の空白が挿入されます。 行の先頭で使用した場合のみ、挿入した空白を ^D で取り消すことができます。

^U 

テキストウィンドウを半画面分、逆方向にスクロールします。 この前にある count はスクロールする行数 (論理行) を指定します。この行数は、後続の ^D または ^U コマンドでも使用されます。

^V 

入力モードで ^V を使用すると、次の文字が引用され、特殊文字 (ESC を含む) をファイルに挿入できるようになります。

^W 

入力モードで ^W を使用すると、1 語分戻ります。 削除した文字はディスプレイにそのまま表示されています。

^Y 

逆方向に 1 行分スクロールします。 カーソルの位置はそのまま変わりません (可能な場合)。

^[ 

途中まで入力したコマンドを取り消します。 途中まで入力されたコマンドがない場合、 ^[ はベルを鳴らします。

入力モードで ^[ を使用すると、入力モードが終了します。ただし、エディターオプション doubleescape を設定してある場合は、終了するためには ESC 文字を 2 回連続して入力する必要があります (ex(1) 参照)。

スクリーンの最後の行にコマンド (ex のコマンド行、または \? による検索パターン) を入力している際に ^[ を使用すると、入力が終了してコマンドが実行されます。

通常のターミナルでは、 ^[ は ESC または ESCAPE キーにより入力することができます。

^\ 

vi を抜け出て、 ex コマンドモードに入ります。入力モードにある場合は、まず入力を終了します。

^] 

カーソルの後ろにある語をタグとみなして、エディターコマンド tag を実行します (ex(1) 参照)。

^^ 

前のファイルに戻ります (:ex# と同じです)。

スペース  

右へ 1 文字分移動します (行末で止ります)。 この前にある count は 先に移動する文字数を指定します (l と同じです)。

erase  

消去します。 erase はユーザー指定する消去文字です (stty(1) 参照)。 ^H と同じです。

kill  

取り消します。 kill はユーザー指定する取り消し文字です (stty(1) 参照)。入力モードの場合は、現在の入力行の先頭に戻ります (入力行は スクリーンディスプレイから消去されません)。

susp  

エディターのセッションを一時停止して、呼び出しシェルに戻ります。 susp はユーザー指定するプロセス制御用の一時停止文字です (stty(1) 参照)。エディターコマンド suspend の詳細については、 ex(1) を参照してください。

! 

バッファー内の指定した行を標準入力として指定されたシステムコマンドに渡して、 これらの行をコマンドからの標準出力に置き換える操作です。 ! の後には、移動コマンドを続けて、受け渡す行 (現在の位置から 移動の終わりまでの行) を指定し、さらにコマンドを続けます (通常どおり リターンで終了します)。 この前にある count! の後ろの移動コマンドに渡されます。

count の後に ! を 2 つ続けると、現在の行から count で指定した行数分が渡されます。

"  

名前付きバッファーの指定の前に使用します。名前付きバッファーは 1 から 9 まであり、エディターは削除されたテキストをその中に入れます。 a から z までの名前付きバッ ファは、削除したテキストまたは記憶したテキストを セーブしておくためにユーザー使用できるバッファーです。下記の y を参照してください。

$ 

現在の行の最後に移動します。 この前にある count は移動する行数を指定します (たとえば、 2$ は次の行の行末にカーソルを移動します)。

% 

現在のカーソル位置にある小かっこまたは中かっこに対応する 小かっこまたは中かっこに移動します。

& 

ex コマンドの & と同じです (すなわち、 & は前の substitute コマンドを繰り返します)。

' 

この後に再度 ' を続けると、 vi は前のコンテキストに 戻ってカーソルを行の先頭に置きます (絶対形式の移動を 行うと、必ず前のコンテキストが設定されます)。また、 ' の後に a-z, の英字を続けると、その英字でマークされた行で空白以外の最初の文字に戻ります (m コマンド参照)。

d などの操作記号と併用して、テキストの範囲を指定すると、 その範囲内の行全体を対象として操作が行われます (` も参照)。

` 

この後に再度 ` を続けると、 vi は前のコンテキストに戻ってマークのある文字の位置にカーソルを 置きます (絶対形式で移動を行うと、必ず前のコンテキストが設定されます)。また、 ` の後に a-z の英字を続けると、その英字でマークされた行の該当する文字に戻ります (m コマンド参照)。

d などの操作記号と併用して、テキストの範囲を指定すると、該当する行の中の 厳密にマークがある位置から現在の位置までを対象として操作が行われます (' も参照)。

[[  

前のセクションの境界に戻ります。セクションはオプション sections の値で定義されます。改ページ (^L) または { で始まる行でも [[ は停止します。

lisp オプションを設定してある場合、カーソルは行の先頭の ( の位置で停止します。

]]  

次のセクションの境界に移動します ([[ 参照)。

^ 

現在の行で空白以外の最初の位置に移動します。

( 

文の先頭に戻ります。文とは、 ., !, または ? の後に行末か 2 つ分のスペースが続く形で終わるものです。 ., !, または ? とスペースまたは行末の間に、閉じかっこの ), ], ", および ' の各文字が入っていても、やはり文として認識されます。 count を指定すると、カーソルは指定した数の文だけ前に戻ります。

lisp オプションを設定してある場合、カーソルは lisp の指示語 s-expression の先頭に移動します。 文は、パラグラフやセクションの境界から始まることもあります ({ および [[ 参照)。

) 

次の文の先頭に移動します。 count を指定すると、カーソルは、指定した数の文だけ先に移動します (( 参照)。

{ 

前のパラグラフの先頭に戻ります。パラグラフは paragraphs オプションの値で定義されます。空白行とセクション境界 (上記 [[ 参照) もパラグラフの先頭とみなされます。 count を指定すると、カーソルは指定した数のパラグラフだけ戻ります。

} 

次のパラグラフの先頭に移動します。 count を指定すると、カーソルは指定した数のパラグラフだけ先に移動します ({ 参照)。

| 

この前に、 count を指定する必要があります。 カーソルは現在の行の指定されたカラム (ある場合) に移動します。

+ 

次の行の空白以外の最初の文字に移動します。 count を指定すると、カーソルは指定した数の行だけ先に移動します (^M と同じ)。

, 

カンマ (,) は、最後に実行した f, F, t, または T コマンドの逆向きの操作、すなわち現在の行を逆方向に検索を行います。 count を指定すると、カーソルは指定した回数だけ検索を繰り返します。

- 

ハイフン文字 (-) は、前の行の空白以外の最初の文字にカーソルを戻します。 count を指定すると、カーソルは指定した数の行だけ戻ります。

_ 

アンダースコア文字 (_) は、現在の行の空白以外の最初の文字にカーソルを移動します。 count を指定すると、カーソルは、現在の行を 1 行目として、 指定した行数だけ先に移動します。また、 count を省略した場合、あるいは count として 1 を指定した場合は、現在の行とみなされます。

. 

バッファーを変更した最後のコマンドを繰り返します。 count を指定すると、コマンドは指定した回数だけ繰り返されます。

/ 

画面の最後の行から文字列を読み取り、これを正規表現とみなして、 順方向に走査することにより一致する文字列を検索します。 検索は、キャリッジリターンを入力してパターンを終了する同時に開始されます。 また、検索処理は、 SIGINT (またはユーザー定の割り込み文字) を送ることによって終了させることができます。

テキストの範囲を指定して使用する操作記号とともに / を使用すると、現在のカーソルの位置から 一致した文字列までがその操作の適用範囲となります。 また、一致した行からのオフセットを指定する (すなわち、 / で正規表現を閉じた後に +n または -n を続ける) ことにより、該当する行全体を対象とすることもできます。

0 

現在の行の先頭文字に移動します (ゼロ以外の数字が前にある場合、 0 はコマンドとはみなされません)。

: 

コロン文字 (:) は、 ex コマンドを開始します。 : と、入力したコマンドは、一番下の行に表示されます。 ex コマンドは、ユーザーがキャリッジリターンを押すと実行されます。

; 

f, F, t, または T で行った 1 文字の検索を繰り返します。 count を指定すると、検索処理が指定の回数だけ繰り返されます。

< 

1 shiftwidth だけ左に行をシフトする操作記号です。 < の後に移動コマンドを続けて、行の範囲を指定できます。 この前にある count は移動コマンドに渡されます。

2 回繰り返す (<<) と、現在の行 (または現在の行から count で指定した行数分) がシフトされます。

> 

1 shiftwidth だけ右に行をシフトする操作記号です
(< 参照)。

= 

lisp オプションが設定してある場合、 = は、 lisp および autoindent を設定した場合と同じように、指定の行だけ字下げを行います。 = の前に count を指定して対象とする行数を示すこともできます。また、同じ目的で = の後に移動コマンドを続けることもできます。

? 

逆方向に走査します。 / の逆です (/ 参照)。

@buffer 

名前付きバッファー (buffer) に保存されているコマンドを実行します。 <return> がコマンドストリームの一部でない限り、 バッファーの内容の終わりに <return> 文字を入れないように注意してください。 ex モードで実行するコマンドの前にはコロン (:) を付けてください。

~ 

ティルド (~) は、カーソルが指す英字の大文字/小文字を変換して、 カーソルを右に 1 文字移動します (行末で止ります)。 この前にある count は、現在の行から何文字だけ大文字/小文字を変換するかを指定します。

A 

行末に付加します ($a と同じ)。

B 

カーソルを 1 語 (語はブランク以外の文字の並び) 戻して、その先頭に置きます。 count を指定すると、カーソルは指定した数の語だけ前に戻ります。

C 

現在の行のテキストを行末まで変更します (c$ と同じ)。

D 

現在の行のテキストを行末まで削除します (d$ と同じ)。

E 

語の終わりまで順方向に移動します。語はブランク以外の文字の並びです。 count を指定すると、カーソルは指定した数の語だけ先に進みます。

F 

この後に、1 文字を続ける必要があります。 現在の行を逆方向に走査して、指定された文字を検索します。 文字が見つかると、カーソルがその位置に移動します。 count を指定すると、検索は指定した回数だけ繰り返されます。

G 

この前に引き数として指定した行番号に移動します。 count を省略すると、ファイルの終わりに移動します。

H 

カーソルを画面の 1 行目に移動します。 count を指定すると、カーソルは画面の先頭から count 行目に移動します。 カーソルは該当する行の空白以外の最初の文字に置かれます。 操作記号の後に指定すると、行全体に作用します。

I 

行の先頭に挿入します (^i を続けてタイプした場合と同じ)。

J 

現在の行と次の行を結合します。行の間には適当な数の空白が入れられます。 すなわち、語と語の間にはスペースが 1 つ、ピリオドの後には スペースが 2 つ挿入されます。 また、次の行の最初の文字が閉じ小かっこ ()) の場合には、スペースを入れません。 この前に count を指定すると、2 行ではなく、指定した数の行が結合されます。

L 

カーソルを画面の最後の行の空白以外の最初の文字に移動します。 count を指定すると、カーソルは画面の最後の行から count 行目に移動します。操作記号と併用すると、行全体に作用します。

M 

画面の中央行の空白以外の最初の文字にカーソルを移動します。

N 

/ または ? で指定された最後のパターンをそのコマンドの向きと逆方向に検索します。 n の逆向きの操作です。

O 

現在の行の上に新しい行をオープンして、入力モードに入ります。

P 

最後に削除されたテキストまたは記憶されたテキストをカーソルの前または上に戻します。 行全体が削除または記憶されている場合は、 現在の行の上にそのテキスト行が戻されます。それ以外の場合は、 カーソルの直前にテキストが挿入されます。

(XPG4 のみ) この場合は、カーソルは挿入された文字の最後のカラムに移動します。

P の前に名前付きバッファー指定 (x) を入れると、 そのバッファーの内容を抽出します。

Q 

vi を終了して、 ex コマンドモードに入ります。

R 

画面上の文字を入力した文字に置き換えます。置き換え文字の入力は、 ESC で終了します。

S 

行全体を置き換えます (cc と同じ)。 この前にある count は、変更する行数を指定します。

T 

この後に、1 文字を続ける必要があります。 現在の行を逆方向に走査して、指定された文字を検索します。 文字が見つかると、その文字の直後にカーソルを置きます。 count は、検索を繰り返す回数を指定します。

U 

現在の行を、カーソルがこの行に移動してくる前の状態に戻します。

(XPG4 のみ) カーソルの位置は、カラム 1 あるいは autoindent が設定されているときはその前の行で示す位置に設定されます。

W 

現在の行で順方向に語の先頭まで移動します。 語はブランク以外の文字の並びです。 現在の位置が語の先頭の場合、現在の位置が (大きい区切りの) 語の中にある場合、またはその位置の文字が (大きい区切りの) 語の一部分でない場合は、 現在の位置が次の (大きい区切りの) 語の先頭文字に移動します。 次の (大きい区切りの) 語が現在の行に存在しない場合は、現在の位置は次の (大きい区切りの) 語を含む行の最初の (大きい区切りの) 語の先頭文字に移動します。 このコマンドの場合、空行または空白行があることで、正確な 1 つの (大きい区切りの) 語があるとみなされます。 現在の行は選択された (大きい区切りの) 語を含む行に設定され、 現在の位置は選択された (大きい区切りの) 語の先頭文字に設定されます。 このコマンドの前に count で指定された語数分だけ先に移動します。

X 

カーソルの前の文字を削除します。 この前にある count は繰り返しの回数を指定します。 ただし、現在の行にある文字だけが削除されます。

Y 

現在の行のコピーを名前なしのバッファーに入れ (記憶し) ます (yy と同じ)。 count を指定すると、その行数分が バッファーにコピーされます。 Y の前にバッファー名を指定すると、行はその名前付きバッファーにコピーされます。

ZZ 

エディターを終了します。その際、最後の書き込み以降に バッファーが変更されていれば、 バッファーの書き込みを実行します。 (ex コマンドの x と同じ)。最後の書き込みを別のファイルに書き込んだ後、 バッファーを変更していない場合には、エディターはバッファーを書き込まずに 終了するので注意してください。

a 

入力モードに入って、カーソルの現在位置の後に入力テキストを追加します。 この前に count を指定すると、指定の回数だけテキストの挿入が繰り返されます (ただし、 挿入テキスト全体が 1 行内にある場合だけに限られます)。

b 

現在の行で、前の語の先頭に戻ります。 語は、英数字の並びまたは特殊文字の並びです。 この前にある count は繰り返しの回数を指定します。

c 

この後に、移動コマンドを続ける必要があります。 指定されたテキスト領域を削除して、入力モードに入り、 削除したテキストを新しいテキストに置き換えます。 変更の影響が 1 行以上に及ぶ場合、 削除したテキストは数値名のバッファーにセーブされます。 一方、変更の影響が現在の行だけで収まる場合は、変更される最後の文字に $ マークが付けられます。 この前に count を指定すると、その値が移動コマンドに渡されます。 cc というコマンドを指定すると、現在の行全体が変更されます。

d 

この後に、移動コマンドを続ける必要があります。 指定されたテキスト領域を削除します。 削除の影響が 1 行以上に及ぶ場合、テキストは数値名のバッファーにセーブされます。 この前に count を指定すると、その値が移動コマンドに渡されます。 dd というコマンドを指定すると、現在の行全体が削除されます。

e 

次の語の終わりまで順方向に移動します。語の定義は b コマンドに示したとおりです。 この前にある count は繰り返しの回数を指定します。

f 

この後に、1 文字を続ける必要があります。 現在の行の残りを走査して指定された文字を検索します。 文字が見つかると、カーソルがその位置に移動します。 この前にある count は、検索を繰り返す回数を指定します。

h 

カーソルを 1 文字、左に移動します (^H と同じ)。 この前にある count は繰り返す回数を指定します。

i 

入力モードに入って、入力されたテキストをカーソルの前に挿入します (a 参照)。

j 

カーソルを 1 行下の同じカラムに移動します (^J および ^N と同じ)。

k 

カーソルを 1 行上の同じカラムに移動します (^P と同じ)。

l 

カーソルを 1 文字、右に移動します (<space> と同じ)。

mx 

カーソルの現在位置をマークします。 x は小文字の英字 (a-z) で、 ` および ' コマンドと共に使用して、マークの付いた行や行の位置を指します。

n 

直前の / または ? 走査コマンドを繰り返します。

o 

現在の行の下に行をオープンして、入力モードに入ります。 行をオープンする位置が異なるほかは O と同じです。

p 

カーソルの次または下にテキストを入れます。テキストを置く位置のほかは P と同じです。

r 

この後に、1 文字を続ける必要があります。 カーソルが指す文字が指定の文字に置き換えられます (新しい文字は 改行でもかまいません)。 r の前に count を指定すると、その数の文字が指定の文字に置き換えられます。

s 

カーソルが指す文字を削除して、入力モードに入ります。 入力したテキストが削除された文字に置き換わります。 count は、変更する現在行の文字数を指定します。 c の場合と同様に、変更される最後の文字が $ でマークされます。

t 

この後に、1 文字を続ける必要があります。 現在行の残りを走査して指定された文字を検索します。 文字が見つかると、カーソルはその文字の直前のカラムに移動します。 この前にある count は、検索を繰り返す回数を指定します。

u 

現在のバッファーに最後に加えた変更内容を取り消します。 u コマンドを繰り返すと、2 つの状態が交互に切り換わります。 つまり、前の u コマンドの作用を取り消すことになります。 複数の行にまたがるテキストを挿入した後に u コマンド使用すると、その行は数値名付きバッファーにセーブされます。

w 

次の語の先頭まで順方向に移動します (語の定義は、 b コマンドで示したとおりです)。 この前にある count はカーソルが移動する語数を指定します。

x 

カーソルが指す 1 文字を削除します。 x の前に count を指定すると、指定した文字数だけカーソル位置から順方向に削除されます (ただし、 現在の行だけに限られます)。

y 

この後に、移動コマンドを続ける必要があります。 指定したテキストが名前なしの一時バッファーにコピー (記憶) されます。 y の前に名前付きバッファーの指定 "x を行うと、 テキストはそのバッファーにも入れられます。 yy というコマンドを指定すると、現在の行全体が記憶されます。

z 

以下のオプションで指定された位置に現在の行を表示する形で、画面を再表示します。 z<return> は画面の先頭、 z. は画面の中央、 z- は画面の最下行をそれぞれ指定します。コマンド z^ および z+ は、それぞれ ^B および ^F に類似しています。ただし、 z^z+ は 2 行をオーバー ラップさせることはありません。 z と後続のコマンド文字との間に、 count を指定することにより、 再表示画面に表示する行数を指定することができます。また、 z の前に count を指定すると、 デフォルトの現在行の代わりに基準行として使用される行の番号となります。

キーボード上の編集キー

エディターは、初期設定の際に、ターミナル上のキーボードの一部の編集キーを 対応するビジュアルモード コマンドに自動的にマッピングします。 この マッピングは、 terminfo(4) データベースの中で現在のターミナル (TERM 環境変数で指定されたターミナル) で有効と定義されているキーのうち、 下の表で示されているキーに限って実行されます。

マッピングは、コマンドモードと入力モードの両方について設定されます (ex(1) の map コマンド参照)。単に入力モードのオンとオフを切り換えるだけの insertchar キーを除き、入力モード マッピングの操作を実行すると、 いったん入力モードを終了して、同じ機能をコマンドモード マッピングの操作で 実行した後、再び入力モードに戻ります。

一部のターミナルでは、ビジュアルモード コマンドとしてキーボード編集キーから 入力する文字シーケンスと、ユーザーが (一連の) コマンドを実行するために 入力した文字シーケンスが一致してしまう可能性があります。 この問題は、入力モード用のマッピングでよく起こります。 そのため、これらのターミナルでは、入力モード マッピングは デフォルトで使用不能になっています。 しかし、ユーザー必要に応じてエディターオプション keyboardeditkeyboardedit! を設定することにより、コマンドモードと入力モード両方のキーボード編集キー マッピングの使用可能/不能を切り換えることができます (ex(1) 参照)。この問題は、 timeout, timeoutlen および doubleescape の各エディターオプションによっても解決できます。

terminfoコマンド入力  
エントリーモードのマップモードのマップマップ名説明
key_ici^[inschar文字挿入
key_eici^[inschar文字挿入の終了
key_upk^[kaup上矢印
key_downj^[jadown下矢印
key_lefth^[haleft左矢印
key_rightl^[laright右矢印
key_homeH^[Hahomeホーム
key_ilo^[^[o^[ainsline行挿入
key_dldd^[ddadelline行削除
key_clear^L^[^Laclear画面消去
key_eold$^[d$aclreol行末まで消去
key_sf^E^[^Eascrollfスクロールダウン
key_dcx^[xadelchar文字削除
key_npage^F^[^Fanpage次ページ
key_ppage^B^[^Bappage前ページ
key_sr^Y^[^Yasrスクロールアップ
key_eosdG^[dGaclreos画面末まで消去

多言語化対応

サポートされる国際コードと環境変数は次のとおりです。

環境変数

UNIX95 は、このコマンドに対して XPG4 の動作を使用するように指定します。

COLUMNS は、システムが選択した画面の横サイズを上書きします。

LINES は、システムが選択した画面の縦サイズを上書きします。 画面の行数やビジュアルモードでの画面の縦サイズとして使用します。

SHELL は、 !shellread、 やその他のコマンドを !string のコマンド形式で解釈させるための変数です。 shell コマンドの場合、プログラムは -cstring の 2 つの引き数を指定して実行します。 この変数がヌルか設定されていない場合は、 sh ユーティリティを使用します。

TERM は、端末タイプの名前を解釈させるための変数です。 この変数を設定していないか、ヌル文字が設定されている場合は、 デフォルトの端末タイプが使用されます。

PATH には、エディターコマンドで実行するシェルコマンド shellread、 や write のためのコマンド検索パスを決定します。 EXINIT は、最初のファイルを読み込む前にエディター上で実行される ex コマンドのリストを決定します。 そのリストは、縦棒 (|) で複数のコマンドを区切ったものです。

HOME は、エディターの起動ファイル .exrc を置くディレクトリのパス名を決定します。

LC_ALL 変数は、 LANGLC_ で始まる環境変数で指定されたロケールカテゴリを上書きするロケールを決定します。

LC_MESSAGES は、標準エラーに書き込まれる診断メッセージと標準出力に書き込まれる情報メッセージの形式と内容に影響するロケールを決定します。

LC_COLLATE は、正規表現の評価と tags ファイルの処理に使用する照合順序を決定します。 LC_CTYPE は、テキストの解釈 (シングルバイトまたはマルチバイト文字)、 大文字と小文字の区別、 大文字と小文字の間の変換、 および正規表現の中の文字クラス表現に一致する文字を決定します。

LANG は、メッセージの表示に使用する言語を決定します。

LANGOPTS は、右から左に表記する言語のテキストを入出力ファイルに保存する方式を 決定するオプションを指定します。 environ(5) を参照してください。

環境内で LC_COLLATE または LC_CTYPE が指定されていない場合、または空の文字列に設定されている場合は、 未指定または空の変数に対するデフォルトとして、 LANG の値が使用されます。また、 LANG が指定されていない場合、または空の文字列に設定されている場合は、 LANG の代わりに "C" (lang(5) 参照) がデフォルトとして使用されます。 インターナショナル変数に無効な値が設定されている場合、エディターは、 インターナショナル変数がすべて "C" に設定されているものとして動作します。 environ(5) を参照してください。

サポートされるコードセット

シングル/マルチバイトの文字コードセットがサポートされています。

警告

ex(1) の「警告」を参照してください。

プログラムの制限

vi では、編集するファイルについて次の制限があります。

行の最大長

4096 文字です。これは、オーバーヘッドの 2-3 バイトを含みます。 したがって、行の長さが 4092 文字までであれば問題は生じません。

  • この制限値より長い行を含むファイルをロードすると、その許容最大長まで行が切り詰められます。 そのファイルをセーブすると、元のファイルの上に切り詰めたバージョンを書き込むため、元の行は完全にオーバーライトされます。

  • 許容最大長より長い行をエディターから作成しようとすると、 line too long というエラーメッセージが出力されます。

最大ファイルサイズ

最大ファイル長として、234,239 行という値が通知なく強制されます。

その他の制限

  • グローバルなコマンドリストは 256 文字までです。

  • vi または exopen モードでは、ファイル名は 128 文字までです。短いファイル名の HP-UX システムでは、
    ファイル名の最大長は 14 文字です。

  • 前の挿入/削除バッファーは 128 文字までです。

  • シェルエスケープ コマンドは 100 文字までです。

  • 文字列値のオプションは 63 文字までです (:set コマンド)。

  • プログラムタグ名は 30 文字までです。

  • map コマンドで定義できるマクロは 32 個以下です。

  • map の複合マクロの文字数の合計は 512 文字までです。

暗号化されていないファイルの編集に -C オプションを使用しないでください。 -C オプションは、すでに暗号化されているファイルにのみ使用されようになっています。 -C オプションが、暗号化されていないファイルに使用されると、編集セッションでの書き込みによりファイルが壊れる可能性があります。

著者

vi は、カリフォルニア大学バークレイ校によって開発されました。 vi の 16 ビット対応の拡張版は、一部、株式会社東芝のソフトウェアに基づくものです。

参照

ctags(1), ed(1), ex(1), stty(1), write(1), terminfo(4), environ(5), lang(5), regexp(5)

The Ultimate Guide to the vi and ex Text Editors,
  

Benjamin/Cummings Publishing Company, Inc., ISBN 0-8053-4460-8, HP part number 97005-90015.

標準準拠

vi: SVID2, SVID3, XPG2, XPG3, XPG4

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.