EN JA
VI(1)
VI(1) FreeBSD General Commands Manual VI(1)

名称

ex, vi, viewテキストエディタ

書式

ex [ -FRrSsv][ -c cmd][ -t tag][ -w size][ file ...]

vi  [ -eFRrS][ -c cmd][ -t tag][ -w size][ file ...]

view [ -eFrS][ -c cmd][ -t tag][ -w size][ file ...]

解説

vi は、スクリーン指向のテキストエディタです。 ex は、行指向のテキストエディタです。 exvi は、同じプログラムの異なるインタフェースで、編集セッションの間に行ったり来たり切り替えることが可能です。 view は、 vi-R (読み込み専用) オプションを使用するのと同等です。

このマニュアルページは、 ex/ vi テキストエディタの nex/ nvi バージョンとして提供されるマニュアルページです。 nex/ nvi は、オリジナルの Fourth Berkeley Software Distribution (4BSD) exvi プログラムのための bug-for-bug (バグまで含めた) 互換性の置き換えを目的としています。このマニュアルページの残りについて、 nex/ nvi は、 ex/ vi の歴史的な実装を区別することが必要なときのみ使用されます。

このマニュアルページは、 ex/ vi をよく知っているユーザを対象としています。他の人は、このマニュアルページの前にエディタのよいチュートリアルをほぼ確実に読むべきです。利用者の良く知らない環境で、間違いなくすぐに仕事をしなければならないなら、 ファーストスタートアップ とタイトルをつけられたオプションの説明の後のセクションを読んでください。利用者が行なおうとしていることを理解するには、おそらく十分です。

次のオプションが利用可能です:

-c cmd
最初にロードされたファイルで cmd を実行します。ファイルの最初のポジショニングに特に役に立ちますが、 cmd は、ポジショニングするコマンドに制限されません。これは、歴史的な“+cmd”構文のための POSIX 1003.2 インタフェースです。 nex/ nvi は、古い構文と新しい構文の両方をサポートしています。
-e
あたかもコマンド名が ex であったかのように、ex モードで編集を開始します。
-F
最初に編集し始めるとき、ファイル全体をコピーしません。 (デフォルトは、利用者が編集セッションの間に、誰か他の人がファイルを修正した場合に、コピーを行なうことです。)
-R
あたかもコマンド名が view であるか、または readonly (読み込み専用) オプションが設定されていたかのように、読み込み専用モードで編集を開始します。
-r
指定されたファイルを復旧するか、またはファイルが指定されないなら、復旧することができたファイルをリストします。指定された名前によって復旧可能なファイルが存在しないなら、あたかも -r オプションが指定されなかったかのように、ファイルは、編集されます。
-S
外部プログラムへのすべてのアクセスを許可せずに、 secure (安全な) 編集オプションの設定で実行します。
-s
バッチモードに入ります。 ex 編集セッションでのみ適用可能です。バッチモードは、 ex スクリプトを実行するとき、役に立ちます。プロンプト、通知メッセージ、と他のユーザ指向のメッセージは、オフにされ、スタートアップファイルまたは環境変数は、読み込まれません。これは、歴史的な“-”引数のための POSIX 1003.2 インタフェースです。 nex/ nvi は、古い構文と新しい構文の両方をサポートしています。
-t tag
指定された tag (タグ) ( ctags(1) 参照) で編集を開始します。
-v
あたかもコマンド名が vi であるかのように、vi モードで編集を開始します。
-w size
最初のウィンドウサイズを行の指定された数に設定します。

ex/ vi のためのコマンド入力は、標準入力から読み込まれます。 vi インタフェースでは、標準入力が端末でないなら、エラーです。 ex インタフェースでは、標準入力が端末でないなら、 ex は、とにかく、それからコマンドを読み込みます。しかしながら、セッションは、まさに -s オプションが指定されたかのように、正確にバッチモードのセッションとなります。

速いスタートアップ

このセクションは、 vi を使用して、単純な編集作業を行うために必要とする最低限を利用者に伝えます。スクリーンエディタを以前に使用していないなら、この単純な紹介でさえ問題があるかもしれません。その場合に、既に vi を知っている人を見つけて、彼らに、このセクションを通して利用者を導いてもらうべきです。

vi は、スクリーンエディタです。これは、スクリーンの最後の行を除いて、各スクリーンの行にファイルの一部を表示して、ほとんどすべてのスクリーンを利用することを意味します。スクリーンの最後の行は、利用者が vi にコマンドを与えて、 vi が利用者に情報を与えるために使用されます。

利用者が理解しておく必要がある他のことがらは、 vi がモードがあるエディタであるということです、すなわち、利用者は、テキストを入力するか、またはコマンドを実行するように、どれか一方を行なう正しいモードでなければなりません。最初にファイルを編集し始めるとき、コマンドモードとなります。入力モードに切り替えるコマンドがあります。入力モードから抜け出すただ 1 つのキーがあり、それは、<escape> (エスケープ) キーです。

キーの名前は、<と >記号を使用して書かれます、例えば、<escape>は、利用者の端末で通常、“Esc”とラベルが付けられている、“escape”キーを意味します。利用者が、一体どのモードでいるか混乱するなら、 vi がビープ音を出すまで、<escape>キーを入力し続けてください。一般的に、 vi は、許可されないことをしようとするなら、ビープ音を出します。また、エラーメッセージを表示します。

ファイルを編集し始めるために、次のコマンドを入力します:

$ vi file

編集を始めるとすぐに、入力するべきコマンドは、次の通りです:

:set verbose showmode

これで、エディタは、利用者に冗長なエラーメッセージを与え、スクリーンの下端に現在のモードを表示します。

ファイルをあちこち移動するコマンドは、次の通りです:

h
カーソルを 1 文字左に移動します。
j
カーソルを 1 行下に移動します。
k
カーソルを 1 行上に移動します。
l
カーソルを 1 文字右に移動します。
< cursor-arrows>
カーソルの矢印キーも動作するはずです。
/text
ファイル中の文字列“text”を検索して、カーソルをその最初の文字に移動します。

新しいテキストを入力するコマンドは、次の通りです:

a
カーソルの後に、新しいテキストを追加します。
i
カーソルの前に、新しいテキストを挿入します。
o
カーソルがある行の下に新しい行を開いて、テキストを入力し始めます。
O
カーソルがある行の上に新しい行を開いて、テキストを入力し始めます。
< escape>
いったん、 a, i, o または O コマンドの 1 つを使用して、入力モードに入ると、テキストを入力することを終了するために、< escape>を使用し、コマンドモードに戻ります。

テキストをコピーするコマンドは、次の通りです:

yy
カーソルがある行をコピーします。
p
カーソルがある行の後にコピーされた行を追加します。

テキストを削除するコマンドは、次の通りです:

dd
カーソルがある行を削除します。
x
カーソルがある文字を削除してください。

ファイルに書き込むコマンドは、次の通りです:

:w
vi のコマンド行の引数として、最初に使用された名前でファイルに書き戻します。
:w file_name
名前 file_name でファイルに書き戻します。

編集を終了して、エディタを終るコマンドは、次の通りです:

:q
編集を終了して、 vi から去ります (ファイルを修正しているが、利用者が変更を保存しないなら、 vi は、終了することを拒否します)。
:q!
利用者が行なったあらゆる修正を廃棄して、終了します。

最後の 1 つの注意は: 通常でない文字は、スクリーンで 1 カラムを超えて占めることができ、長い行は、単一のスクリーン行を越えることができます。上記のコマンドは、“物理的な”文字と行に作用します、すなわち、それらは、すべての文字が、どんなにそれを占めるスクリーン行があっても、すべての文字が、どんなにそれを占めるスクリーンカラムがあっても影響します。

正規表現

ex/ vi は、 ex substitute, globalv コマンドの最初の部分と検索パターンでのように、行アドレスのための re_format(7) で文書化されている、正規表現 (RE) をサポートしています。基本的な正規表現 (BRE) は、デフォルトで有効にされています。拡張された正規表現 (ERE) は、 extended オプションが有効にされるなら、使用されます。 magic オプションを使用して正規表現の使用を、無効にすることができます。

次の文字列には、正規表現の ex/ vi バージョンで特別の意味があります:

  • 空の正規表現は、使用される最後の正規表現と同等です。
  • ‘\<’は、単語の始まりと一致します。
  • ‘\>’は、単語の終了と一致します。
  • ‘~’は、最後の substitute (置換) コマンドの置き換えられた部分と一致します。

バッファ

バッファは、コマンドが、後の使用のために変更されるか、または削除されたテキストを保存することができる領域です。 vi のバッファは、ダブルクォートが先行した単一文字で指定されます、例えば、 "<c>。 ex のバッファは、同じですが、ダブルクォートなしです。 nex/ nvi は、バッファ名が期待される位置で別の意味のないあらゆる文字の使用を許可します。

すべてのバッファは、 行モード または 文字モード のいずれかです。テキストに行モードでバッファに挿入することは、それが含んでいる行の各々のための新しい行を作成します、一方、文字モードのバッファは、それが含んでいる最初と最後の行 以外 のあらゆる行のために新しい行を作成します。最初と最後の行は、現在の行の一部になって、現在のカーソル位置に挿入されます。バッファに 2 行以上があるなら、現在の行は、それ自身分割されます。バッファにテキストを格納するすべての ex コマンドは、行モードでそのように行ないます。 vi コマンドの振る舞いは、次のように、それらの関連する動作コマンドに依存します:

  • < control-A>, h, l, ,, 0, B, E, F, T, W, ^, b, e, f and t は、宛先バッファを文字指向にします。
  • j, < control-M>, k, ', -, G, H, L, M, _| は、宛先バッファを行指向にします。
  • $, %, `, (, ), /, ?, [[, ]], {} は、最初と終りの位置が行の最初の文字と最後の文字でないなら、宛先バッファを文字指向とします。その場合に、バッファは、行指向です。

ex コマンド display buffers は、バッファごとの現在のモードを表示します。

指定されたバッファ‘a’から‘z’は、それらの大文字の等価物を使用して参照され、その場合に、新しい内容は、それを交換する代わりに、バッファに追加されます。

指定されたバッファ‘1’から‘9’は、特別です。 c (変更) または d (削除) コマンドを使用して修正されたテキストの領域は、他のバッファが指定されないなら、そして、それが次の条件の 1 つを満足するなら、数値のバッファ‘1’に入れられます:

  • 2 行以上の文字を含んでいます。
  • 行指向の動作を使用して指定されます。
  • 次の動作コマンドの 1 つを使用して指定されます: < control-A>, `< character>, n, N, %, /, {, }, (, ), と ?

このコピーが終わる前に、バッファの以前の内容‘1’は、バッファ‘2’に移動され、‘2’は、バッファ‘3’に移動されるなどされます。バッファ‘9’の内容は、廃棄されます。この回転は、別のバッファを指定するユーザに かかわらず 起こることに注意してください。 vi で、テキストは、数値のバッファに明示的に格納されます。この場合に、バッファの回転は、バッファの内容の置換の前に起こります。数値バッファは、 vi モードでのみ利用可能です。

VI コマンド

次のセクションは、 vi エディタのコマンドモードで利用可能なコマンドについて説明します。次の単語には、コマンド記述で特別の意味があります:

bigword
1 組の非空白類文字。
buffer
コマンドがテキストを置く一時的な領域。指定されるなら、デフォルトのバッファが使用されます。また、上記の 「バッファ」 を参照してください。
count
正の数は、コマンドの繰り返しの望ましい数を指定するために使用されます。指定されないなら、デフォルトは、1 です。
motion
テキストの影響を受けた領域の別の終り、現在のカーソル位置である最初を示すカーソル移動コマンド。コマンド文字の繰り返しは、全体の現在の行に影響します。
word
文字、数字または下線のシーケンス。

buffercount の両方が存在するなら、任意の順序で指定されます。 motioncount の両方が存在するなら、動作の一部を考慮して、ともに効率的に増加されます。

< control-A>
カーソル位置で開始される単語を前方に検索します。

[ count]< control-B>
count スクリーン、ページを後ろ方向に戻ります。できるなら、オーバラップする 2 行が保持されます。

[ count]< control-D>
count 行、前方にスクロールします。 count が与えられないなら、最後の< control-D>または< control-U>コマンドによって指定された行の数を前方にスクロールします。これが最初の< control-D>コマンドであるなら、現在のスクリーンの行の数の半分をスクロールします。

[ count]< control-E>
できるなら、現在の行とカラムをそのままにしたままで、 count 行、前方にスクロールします。

[ count]< control-F>
count スクリーン、前方にページを進めます。できるなら、オーバラップする 2 行が保持されます。

< control-G>
次のファイル情報を表示します: ( vi に与えられた) ファイル名。ファイルが最後に書き込まれたときからファイルが修正されたかどうか。ファイルが読み込み専用であるか。現在の行番号。ファイルの行の合計数。ファイルの行の合計のパーセンテージとして現在の行番号。

[ count]< control-H>
[ count] h
現在の行で count 文字カーソルを後ろに移動する。

[ count]< control-J>
[ count]< control-N>
[ count] j
現在のカラムを変更せずに、 count 行、カーソルを下に移動する。

< control-L>
< control-R>
スクリーンを再描画します。

[ count]< control-M>
[ count] +
その行の最初の空白でない文字に count 行、カーソルを下に移動します。

[ count]< control-P>
[ count] k
現在のカラムを変更せずに、 count 行、カーソルを上に移動します。

< control-T>
最も近いタグの文脈に戻ります。

[ count]< control-U>
count 行、後方にスクロールします。 count が与えられないなら、最後の< control-D>または< control-U>コマンドによって指定された行の数を後方にスクロールします。これが最初の< control-U>コマンドであるなら、現在のスクリーンで行の数の半分をスクロールします。

< control-W>
ウィンドウの次のより低いスクリーンに切り替えるか、またはウィンドウにより低いスクリーンがないなら、最初のスクリーンに切り替えます。

[ count]< control-Y>
できるなら、現在の行とカラムをそのままにしたままで、 count 行、後方にスクロールします。

< control-Z>
現在のエディタのセッションをサスペンドします。

< escape>
入力されている ex コマンドを実行するか、またはそれが部分的だけであるなら、キャンセルします。

< control-]>
タグ参照をタグのスタックにプッシュします。

< control-^>
最も最近編集されたファイルに切り替えます。

[ count]< space>
[ count] l
現在の行を変更せずに、 count 文字、カーソルを前方に移動します。

[ count] ! motion shell-argument(s) < carriage-return>
(単一の引数にバンドルされた) シェル引数 が後続する -c フラグで呼び出された shell オプションによって指定されたプログラムの出力 (標準出力と標準エラー) で、 countmotion による範囲の行を置き換えます。 シェル引数 内で、‘%’, ‘#’と‘!’文字は、それぞれ、現在のファイル名、以前の現在のファイル名と以前の ! または :! コマンドのコマンドテキストに拡張されます。‘%’, ‘#’と‘!’の特別の意味は、バックスラッシュでそれらをエスケープすることによって、無効にすることができます。

[ count] # #| +| -
カーソル位置、またはそれに続く最初の非空白文字で始まる count によってカーソルの下の数を (後続する‘#’または‘+’) 増加させるか、または (後続する‘-’) 減少させます。先導する‘0x’または‘0X’がある数は、16 進数として解釈されます。先導する‘0’がある数は、8 進数でない数を含んでいなければ、8 進数として解釈されます。他の数は、‘+’または‘-’を前に付けることができます。

[ count] $
行の終りにカーソルを移動します。 count が指定されるなら、さらに count - 1 行、カーソルを下に移動します。

%
カーソル位置またはその右に最も近く見つけられたものと一致する matchchars 文字に移動します。

&
現在の行で以前の置換コマンドを繰り返します。

'< character>
`< character>
文字 character によってマークされれたカーソル位置に返るか、または、 character が‘'’または‘`’であるなら、次のコマンドの最後の前のカーソルの位置に返ります: < control-A>, < control-T>, < control-]>, %, ', `, (, ), /, ?, G, H, L, [[, ]], {, }。最初の形式は、 character でマークされた行の最初の非空白文字に返ります。 2 番目の形式は、 character によってマークされた行とカラムに返ります。

[ count] (
[ count] )
それぞれ count センテンスを後方または前方に移動します。センテンスは、前のセンテンス、パラグラフまたはセクション境界に続く最初の空白でない文字から始まり、次のピリオド、感嘆符または疑問符文字に、閉じ括弧、ダブルクォート、またはシングルクォート文字の任意の数が続き、行の終りか、または 2 つの空白類文字のいずれかが続くまで継続するテキストの領域です。空行のグループ (または、空白類文字だけを含んでいる行) は、単一のセンテンスとして扱われます。

[ count] ,
逆検索文字 (すなわち、最後の F, f, T または t コマンド) count 回数。

[ count] -
前の行の最初の非空白文字に移動します、 count 回数。

[ count] .
テキストを修正した最後の vi コマンドを繰り返します。 count は、繰り返されたコマンドの count 引数と関連する motion (動作) の両方を置き換えます。 . コマンドが u コマンドを繰り返すなら、変更されたログは、 u コマンドのアクションに依存して、前方または後方に回転されます。

/ RE < carriage-return>
/ RE/ [ offset][ z]< carriage-return>
? RE < carriage-return>
? RE? [ offset][ z]< carriage-return>
N
n
正規表現で前方 (‘/’) または後方 (‘?’) に検索します。 nN は、それぞれ、同じ方向または反対方向に最後の検索を繰り返します。 RE が空であるなら、最後の検索する正規表現が使用されます。 offset が指定されるなら、カーソルは、一致した正規表現の前に、または後の offset 行に置かれます。 n または N コマンドのいずれかが ! コマンドのための動作の構成要素として使用されるなら、コマンドのテキストのためのプロンプトはなく、前の ! が実行されます。複数の検索パターンは、セミコロンと 0 個以上の空白類文字で、それらを区切ることによってグループ化されます。これらのパターンは、最後の検索パターンによって決定された最終のカーソル位置で左から右に評価されます。 z コマンドは、結果の行の位置を変えるために閉じた検索式に追加されます。

0
現在の行の最初の文字に移動します。

:
ex コマンドを実行します。

[ count] ;
最後の文字の検索を繰り返します (すなわち、最後の F, f, T または t コマンド) count 回数。

[ count] < motion
[ count] > motion
shiftwidth の値によって、それぞれ count 行、左または右にシフトします。

@ buffer
vi コマンドとして指定された buffer を実行します。バッファは、 ex コマンドも含んでいますが、それらは : コマンドとして表現されなければなりません。 buffer が‘@’または‘*’, であるなら、実行された最後のバッファが使用されます。

[ count] A
行の終りにテキストを追加して、入力モードに入ります。 count 引数が与えられるなら、文字入力は、入力モードが終了した後に、 count - 1 回、繰り返されます。

[ count] B
count 大きな単語 (bigword) 後方に移動します。

[ buffer] C
現在の位置から行の終りまでテキストを変更します。 buffer が指定されるなら、削除されたテキストを buffer に“yank”します。

[ buffer] D
現在の位置から行の終りまでテキストを削除します。 buffer が指定されるなら、削除されたテキストを buffer に“yank”します。

[ count] E
count の大きな単語 (bigword) の終りに、前方に移動します。

[ count] F < character>
< character>に対して現在の行を通して後方に count 回、検索します。

[ count] G
count が指定されないなら、行 count に、またはファイルの最後の行に移動します。

[ count] H
スクリーンの先頭からスクリーンの行 count - 1 行下に移動します。

[ count] I
行の初めにテキストを挿入して、入力モードに入ります。 count 引数が与えられるなら、文字入力は、 count - 1 以上の回数、繰り返されます。

[ count] J
現在の行で count 行、結合 (join) します。 2 つの結合された行の間の間隔は、前のものが疑問符、ピリオドまたは感嘆符で終わっているなら、2 つの空白類文字に設定されます。そうでなければ、1 つの空白類文字に設定されます。

[ count] L
スクリーンの下端のスクリーンの行 count - 1 行上に移動します。

M
スクリーンの中央のスクリーン行に移動します。

[ count] O
現在の行の上の新しい行にテキストを追加して、入力モードを入ります。 count 引数が与えられるなら、文字入力は、 count - 1 以上の回数、繰り返されます。

[ buffer] P
buffer が文字指向であるなら、現在のカラムの前に、または行指向であるなら、現在の行の前に buffer からテキストを挿入します。

Q
vi (または visual) モードを終了して、 ex モードに切り替えます。

[ count] R
現在の行の文字を置き換えて、入力モードに入ります。 count 引数が与えられるなら、文字入力は、挿入モードを終了するとき、 count - 1 以上の回数、繰り返されます。

[ buffer][ count] S
count 行を置換します。 buffer が指定されるなら、削除されたテキストを buffer に“yank”します。

[ count] T < character>
指定された< character>の後の文字に対して現在の行を通して後方に count 回、検索します。

U
カーソルが最後に移動する前の状態に現在の行を復旧します。

[ count] W
count の大きな単語 (bigword) を前方に移動します。

[ buffer][ count] X
現在の行で、カーソルの前の count 文字を削除します。 buffer が指定されるなら、削除されたテキストを buffer に“yank”します。

[ buffer][ count] Y
buffercount 行コピーするか、 (または“yank”) します。

ZZ
編集するファイルがこれ以上ないなら、ファイルを書き込み、 vi を終了します。 2 つの“quit”コマンドを入力することは、編集するあらゆる残りのファイルを無視します。

[ count] [[
count セクション境界を後方に移動します。

[ count] ]]
count セクション境界を前方に移動します。

^
現在の行の最初の非空白文字に移動します。

[ count] _
count - 1 行下の最初の非空白文字に移動します。

[ count] a
カーソルの後にテキストを追加して、入力モードに入ります。 count 引数が与えられるなら、文字入力は、 count 回数繰り返されます。

[ count] b
count 単語後方に移動します。

[ buffer][ count] c motion
countmotion によって記述されたテキストの領域を変更します。 buffer が指定されるなら、 buffer に変更されたテキストを“yank”します。

[ buffer][ count] d motion
countmotion によって記述されたテキストの領域を削除します。 buffer が指定されるなら、削除されたテキストを buffer に“yank”します。

[ count] e
前方に count 単語の終りに移動します。

[ count] f < character>
< character>に対して現在の行の残りを通して、 count 回前方に検索します。

[ count] i
カーソルの前にテキストを挿入して、入力モードに入ります。 count 引数が与えられるなら、文字入力は、 count 回数、繰り返されます。

m < character>
< character>として現在のコンテキスト (行とカラム) を保存します。

[ count] o
現在の行の下の新しい行にテキストを追加して、入力モードに入ります。 count 引数が与えられるなら、文字入力は、 count - 1 回、繰り返されます。

[ buffer] p
buffer からのテキストを追加します。テキストは、 buffer が文字指向であるるなら、現在のカラムの後に追加され、そうでなければ、現在の行の後に追加されます。

[ count] r < character>
count 文字を character と置き換えます。

[ buffer][ count] s
現在の文字で始まる現在の行の count 文字を置換します。 buffer が指定されるなら、 buffer に置換されたテキストを“yank”します。

[ count] t < character>
< character>の直前の文字に対して現在の行を通して、 count 回、前方に検索します。

u
ファイルに行なわれた最後の変更を取消します。繰り返されるなら、 u コマンドは、これらの 2 つの状態を交互に代わります。 u の直後に使用されるとき、 . コマンドによって、変更されたログは、 u コマンドの動作に依存して、前方または後方に回転します。

[ count] w
前方に count 単語を移動します。

[ buffer][ count] x
現在のカーソル位置で count 文字を削除しますが、行の終りまでです。

[ buffer][ count] y motion
バッファに countmotion によって指定されたテキスト領域をコピーするか、 (または“yank”) します。

[ count1] z [ count2] type
オプションで、スクリーンの位置の変更とサイズの変更を行なって、再描画します。 count2 が指定されるなら、スクリーンサイズを count2 行に制限します。次の type 文字が使用されます:
+
count1 が指定されるなら、スクリーンの先頭の行 count1 に置きます。そうでなければ、現在のスクリーンの後にスクリーンを表示します。
< carriage-return>
スクリーンの先頭の行 count1 に置きます。
.
スクリーンの中心の行 count1 に置きます。
-
スクリーンの下端の行 count1 に置きます。
^
count1 が与えられるなら、 count1 の前のスクリーンの前にスクリーン (すなわち、前の 2 つのスクリーン) を表示します。そうでなければ、現在のスクリーンの前のスクリーンを表示します。

[ count] {
後方に count パラグラフ、移動します。

[ column] |
現在の行の特定の column (カラム) に移動します。 column (カラム) が省略されるなら、現在の行の始めに移動します。

[ count] }
前方に count パラグラフ、移動します。

[ count] ~ motion
tildeop オプションが設定されないなら、次の count (複数の) 文字と motion を指定することができない場合に逆にされます。そうでなければ、 motion は、強制的で、 ~ は、 countmotion によって指定されたテキスト領域の文字の場合を逆にします。

< interrupt>
現在の操作を割り込みます。<interrupt>文字は、<control-C>です。

VI テキスト入力コマンド

次のセクションは、 vi エディタのテキスト入力モードで利用可能なコマンドについて説明しています。

< nul>
前の入力を再実行します。

< control-D>
前の shiftwidth カラム境界また消去します。

^< control-D>
自動インデント文字のすべてを消去して、自動インデントのレベルをリセットします。

0< control-D>
すべての自動インデント文字を消去します。

< control-T>
次の shiftwidth カラム境界に前方に移動するために、十分な<タブ>と<空白>文字を挿入します。

< erase>
< control-H>
最後の文字を消去します。

< literal next>
任意の特別の意味から次の文字をエスケープします。<literal next>文字は、通常<control-V>です。

< escape>
ファイルにすべてのテキスト入力を解決して、コマンドモードに戻ります。

< line erase>
現在の行を消去します。

< control-W>
< word erase>
最後の単語を消去します。単語の定義は、 altwerasettywerase オプションに依存します。

< control-X>[ 0-9A-Fa-f] +
テキストに指定された 16 進数値で文字を挿入します。

< interrupt>
コマンドモードに戻って、テキスト入力モードを割り込みます。<interrupt>文字は、通常<control-C>です。

EX コマンド

次のセクションは、 ex エディタで利用可能なコマンドについて説明しています。下記の各エントリで、タグ行は、コマンドのための使用法の要約です。

< end-of-file>
スクリーンをスクロールします。

! argument(s)
[ range] ! argument(s)
シェルコマンド、またはシェルコマンドによって行のフィルタを実行します。

"
コメント。

[ range] nu[ mber][ count][ flags]
[ range] # [ count][ flags]
それぞれ行番号で先導され、選択された行を表示します。

@ buffer
* buffer
バッファを実行します。

[ range] <[ < ...][ count][ flags]
左に行をシフトします。

[ line] = [ flags]
line (行) の番号を表示します。 line が指定されないなら、ファイルの最後の行の行番号を表示します。

[ range] >[ > ...][ count][ flags]
右に行をシフトします。

ab[ breviate] lhs rhs
vi のみ。略語リストに rhs のための略語として lhs を追加します。

[ line] a[ ppend][ !]
入力テキストは、指定された行の後に追加されます。

ar[ gs]
引数のリストを表示します。

bg
vi のみ。現在のスクリーンをバックグラウンドにします。

[ range] c[ hange][ !][ count]
入力テキストは、指定された範囲を置き換えます。

chd[ ir][ !][ directory]
cd[ !][ directory]
現在の作業ディレクトリを変更します。

[ range] co[ py] line [ flags]
[ range] t line [ flags]
宛先の line (行) の後に指定された行をコピーします。

cs[ cope] add | find | help | kill | reset
Cscope コマンドを実行します。

[ range] d[ elete][ buffer][ count][ flags]
ファイルから行を削除します。

di[ splay] b[ uffers] | c[ onnections] | s[ creens] | t[ ags]
バッファ、Cscope 接続、スクリーンまたはタグを表示します。

[ Ee][ dit][ !][ +cmd][ file]
[ Ee] x[ !][ +cmd][ file]
異なったファイルを編集します。

exu[ sage][ command]
ex コマンドのための使用法を表示します。

f[ ile][ file]
ファイル名を表示してオプションで変更します。

[ Ff] g [ name]
vi モードのみ。指定されたスクリーンをフォアグラウンドにします。

[ range] g[ lobal] / pattern/ [ commands]
[ range] v / pattern/ [ commands]
コマンドを (‘global’) に一致する行または (‘v’) パターンと一致しない行に適用します。

he[ lp]
ヘルプメッセージを表示します。

[ line] i[ nsert][ !]
入力テキストは、指定された行の前に挿入されます。

[ range] j[ oin][ !][ count][ flags]
テキストの行とともに結合します。

[ range] l[ ist][ count][ flags]
行を明白に表示します。

map[ !][ lhs rhs]
( vi のみのための) マップを定義するか、または表示します。

[ line] ma[ rk]< character>
[ line] k < character>
マーク< character>で行をマークします。

[ range] m[ ove] line
指定された行をターゲットの行の後に移動します。

mk[ exrc][ !] file
指定された file に略語、エディタオプションとマップを書き込みます。

[ Nn][ ext][ !][ file ...]
引数リストから次のファイルを編集します。

pre[ serve]
ex -r オプションを使用して、後で復旧することができる形式でファイルを保存します。

[ Pp] rev[ ious][ !]
引数リストから以前のファイルを編集します。

[ range] p[ rint][ count][ flags]
指定された行を表示します。

[ line] pu[ t][ buffer]
バッファの内容を現在の行に追加します。

q[ uit][ !]
編集セッションを終了します。

[ line] r[ ead][ !][ file]
ファイルを読み込みます。

rec[ over] file
以前に保存されていたなら、 file を復旧します。

res[ ize][ +| -] size
vi モードのみ。現在のスクリーンを大きくするか、または縮めます。

rew[ ind][ !]
引数リストをリワインドします。

se[ t][ option[ =[ value]] ...] [ nooption ...][ option? ...][ all]
エディタのオプションを表示するか、または設定します。

sh[ ell]
シェルプログラムを実行します。

so[ urce] file
ファイルから ex コマンドを読み込んで、実行します。

[ range] s[ ubstitute][ / pattern/ replace/] [ options][ count][ flags]
[ range] & [ options][ count][ flags]
[ range] ~ [ options][ count][ flags]
置換を行ないます。 replace フィールドは、次のシーケンスのいずれかを含んでいます:
‘&’
pattern (パターン) によって一致したテキスト。
‘~’
以前の substitute コマンドの置き換え部分。
‘%’
これがすべての replace パターンであるなら、以前の置き換え部分の substitute コマンド。
‘\#’
ここで‘#’は、1 から 9 までの整数で、テキストは、 pattern の # 番目の部分式と一致します。
‘\L’
‘\E’または‘\e’の次の発生の行の終りまでの文字を小文字に変換します。
‘\l’
次の文字を小文字に変換します。
‘\U’
‘\E’または‘\e’の次の発生の行の終りまでの文字を大文字に変換します。
‘\u’
次の文字を大文字に変換します。

su[ spend][ !]
st[ op][ !]
< suspend>
編集セッションをサスペンドします。<suspend>文字は、通常<control-Z>です。

[ Tt] a[ g][ !] tagstring
指定されたタグを含んでいるファイルを編集します。

tagn[ ext][ !]
現在のタグの次のコンテキストを含んでいるファイルを編集します。

tagp[ op][ !][ file | number]
タグスタックで指定されたタグにポップします。

tagpr[ ev][ !]
現在のタグの前のコンテキストを含んでいるファイルを編集します。

tagt[ op][ !]
スタックをクリアして、タグスタックの最も最近のタグにポップします。

una[ bbreviate] lhs
vi のみ。略語を削除します。

u[ ndo]
ファイルに行なわれた最後の変更を取り消します。

unm[ ap][ !] lhs
マップされた文字列をアンマップします。

ve[ rsion]
ex/ vi エディタのバージョンを表示します。

[ line] vi[ sual][ type][ count][ flags]
ex モードのみ。 vi に入ります。

[ Vi] i[ sual][ !][ +cmd][ file]
vi モードのみ。新しいファイルを編集します。

viu[ sage][ command]
vi コマンドのための使用法を表示します。

[ range] w[ rite][ !][ >>][ file]
[ range] w[ rite][ !][ file]
[ range] wn[ !][ >>][ file]
[ range] wq[ !][ >>][ file]
ファイルに書き込みます。

[ range] x[ it][ !][ file]
それが修正されているなら、ファイルに書き込み、エディタを終了します。

[ range] ya[ nk][ buffer][ count]
指定された行をバッファにコピーします。

[ line] z [ type][ count][ flags]
ウィンドウを調整します。

設定オプション

エディタの振る舞いを変更するために設定するか、 (または設定を解除する) 多くのオプションがあります。このセクションは、オプション、それらの略語とそれらのデフォルト値について説明しています。

下記の各エントリで、タグの行の最初の部分は、あらゆる同等な略語が続く、オプションの完全な名前です。角括弧の部分は、オプションのデフォルト値です。ほとんどのオプションは、ブール値です、すなわち、それらは、on または off のいずれかで、関連する値は、ありません。

オプションは、他に指定されないなら、 exvi モードの両方に適用されます。

altwerase [off]
vi のみ。代替の単語消去アルゴリズムを選択します。
autoindent, ai [off]
自動的に新しい行をインデントします。
autoprint, ap [on]
ex のみ。現在の行を自動的に表示します。
autowrite, aw [off]
ファイルを変更するか、エディタのセッションをサスペンドするとき、修正されたファイルを自動的に書き込みます。
backup [""]
それらが上書きされる前に、ファイルをバックアップします。
beautify, bf [off]
制御文字を廃棄します。
cdpath [environment variable CDPATH, or current directory]
cd コマンドのためのパス接頭辞として使用されたディレクトリのパス。
cedit [no default]
コロンコマンド行ヒストリを編集する文字を設定します。
columns, co [80]
スクリーンのカラムの数を設定します。
comment [off]
vi のみ。シェル、C と C++ 言語ファイルで、先導するコメントをスキップします。
directory, dir [environment variable TMPDIR, or /tmp]
一時ファイルが作成されるディレクトリ。
edcompatible, ed [off]
各新しいコマンドのために設定を解除するようにそれらを初期化する代わり、 substitute コマンドへの‘c’と‘g’接尾辞の値を記憶します。
errorbells, eb [off]
ex のみ。ベルでエラーメッセージを知らせます。
escapetime [1]
ex/ vi は、<escape>キーのマッピングを完了するまで続くキーのために 10 分の数秒待ちます。
exrc, ex [off]
ローカルディレクトリでスタートアップファイルを読み込みます。
extended [off]
基本的な正規表現 (BRE) ではなく拡張正規表現 (ERE) を使用します。正規表現に関する詳細についてはは、 re_format(7) を参照してください。
filec [<tab>]
コロンコマンド行でファイルのパスの完了を実行する文字を設定します。
fileencoding, fe [auto detect]
現在のファイルのエンコード (符号化) を設定します。
flash [on]
エラーでキーボードをビープ音を鳴らす代わりにスクリーンをフラッシュします。
hardtabs, ht [0]
ハードウェアのタブ設定の間の間隔を設定します。このオプションは、現在効果がありません。
iclower [off]
大文字が検索文字列に現われない限り、すべての正規表現の大文字小文字を区別しません。
ignorecase, ic [off]
正規表現の大文字小文字の違いを無視します。
inputencoding, ie [locale]
入力文字のエンコード (符号化) を設定します。
keytime [6]
ex/ vi は、キーのマッピングを完了するまで続くキーのために 10 分の数秒待ちます。
leftright [off]
vi のみ。左から右のスクロールを行ないます。
lines, li [24]
vi のみ。スクリーンで行の数を設定します。
lisp [off]
vi のみ。様々な検索コマンドと Lisp で動作するオプションを修正します。このオプションは、まだ実装されていません。
list [off]
明白な方法で行を表示します。
lock [on]
編集、読み込み、または書き込みされている、あらゆるファイルで排他的ロックを取得することを試みます。
magic [on]
off に切り替えられたとき、‘^’と‘$’を除いて、すべての正規表現の文字は、通常の文字として扱われます。‘\’によって個別の文字に先行することは、それらを再び有効にします。
matchchars [[]{}()]
文字のペアは、 % コマンドによって検索します。
matchtime [7]
vi のみ。 ex/ vi は、 showmatch オプションが設定されるとき、一致する文字で 10 分の数秒休止します。
mesg [on]
他のユーザからのメッセージを許可します。
msgcat [/usr/share/vi/catalog/]
指定された言語のエラーと情報メッセージを表示するために使用されるメッセージカタログを選択します。
modelines, modeline [off]
ex コマンドのための各ファイルの最初と最後のわずかの行を読み込みます。このオプションは、決して実装されません。
noprint [""]
印刷可能な文字として決して扱われない文字。
number, nu [off]
現在の行番号で表示された各行に先行します。
octal [off]
デフォルト 16 進数の代わりに 8 進数としての未知の文字を表示します。
open [on]
ex のみ。このオプションが設定されないなら、 openvisual コマンドは、許可されません。
optimize, opt [on]
vi のみ。ダム端末へのテキストのスループットを最適化します。このオプションは、まだ実装されていません。
paragraphs, para [IPLPPPQPP LIpplpipbp]
vi のみ。 {} コマンドのための追加のパラグラフ境界を定義します。
path [""]
編集されているファイルを検索するための追加のディレクトリを定義します。
print [""]
印刷可能文字として常に扱われる文字。
prompt [on]
ex のみ。コマンドのプロンプトを表示します。
readonly, ro [off]
読み込み専用としてファイルとセッションをマークします。
recdir [/var/tmp/vi.recover]
復旧ファイルが格納されるディレクトリ。
redraw, re [off]
vi のみ。ダム端末でインテリジェント端末をシミュレートします。このオプションは、まだ実装されていません。
remap [on]
解決されるまでキーを再マップします。
report [5]
エディタが変更または yank を報告することに関する行の数を設定します。
ruler [off]
vi のみ。コロンコマンド行で列/カラム定規を表示します。
scroll, scr [window size / 2]
スクロールされた行の数を設定します。
searchincr [off]
/? コマンドを増加します。
sections, sect [NHSHH HUnhsh]
vi のみ。 [[]] コマンドのための追加セクションの境界を定義します。
secure [off]
外部プログラムへのすべてのアクセスを off に切り替えます。
shell, sh [environment variable SHELL, or /bin/sh]
エディタによって使用されるシェルを選択します。
shellmeta [~{[*?$`'"\]
ファイル名の拡張が必要かどうか判断するためにチェックされたメタ文字を設定します。
shiftwidth, sw [8]
自動インデントとシフトコマンドのインデント幅を設定します。
showmatch, sm [off]
vi のみ。右のものが挿入されるとき、左の一致する文字に注意してください。
showmode, smd [off]
vi のみ。現在のエディタモードと“modified”フラグを表示します。
sidescroll [16]
vi のみ。左から右のスクロールがシフトする量を設定します。
slowopen, slow [off]
テキスト入力の間に更新する表示を遅らせます。このオプションは、まだ実装されていません。
sourceany [off]
現在のユーザによって所有されないスタートアップファイルを読み込みます。このオプションは、決して実装されません。
tabstop, ts [8]
このオプションは、エディタの表示のためのタブの幅を設定します。
taglength, tl [0]
タグ名の significant 文字の数を設定します。
tags, tag [tags]
タグファイルのリストを設定します。
term, ttytype, tty [environment variable TERM]
端末のタイプを設定します。
terse [off]
このオプションは、歴史的にエディタメッセージをそれほど冗長でないようにします。それは、この実装で効果がありません。
tildeop [off]
関連する動作を行なう ~ コマンドを修正します。
timeout, to [on]
マップされるキーのタイムアウト。
ttywerase [off]
vi のみ。代替の消去アルゴリズムを選択します。
verbose [off]
vi のみ。すべてのエラーのためのエラーメッセージを表示します。
w300 [no default]
vi のみ。ボーレートが 1200 ボー未満であるなら、ウィンドウサイズを設定します。
w1200 [no default]
vi のみ。ボーレートが 1200 ボーと等しいなら、ウィンドウサイズを設定します。
w9600 [no default]
vi のみ。ボーレートが 1200 ボー以上であるなら、ウィンドウサイズを設定します。
warn [on]
ex のみ。ファイルが ! コマンドの前に、最後に書き込まれて以来、修正されているなら、このオプションによって、警告メッセージは、端末に印刷 (表示) されます。
window, w, wi [environment variable LINES - 1]
スクリーンのためのウィンドウサイズを設定します。
windowname [off]
現在のファイル名へのアイコン/ウィンドウ名を変更します。
wraplen, wl [0]
vi のみ。左側のマージンから指定されたカラムの数、自動的に、行を分断します。 wraplenwrapmargin 編集オプションの両方が設定されるなら、 wrapmargin 値が使用されます。
wrapmargin, wm [0]
vi のみ。右側のマージンから指定されたカラムの数、自動的に、行を分断します。 wraplenwrapmargin 編集オプションの両方が設定されるなら、 wrapmargin 値が使用されます。
wrapscan, ws [on]
ファイルの終りまたは始めのまわりを折り畳む検索を設定します。
writeany, wa [off]
ファイルの上書きチェックを off に切り替えます。

環境変数

COLUMNS
スクリーンのカラムの数。この値は、あらゆるシステムまたは端末特有の値を無効にします。 ex/ vi が実行するとき、 COLUMNS 環境変数が設定されていないか、または columns オプションがユーザによって明示的にリセットされているなら、 ex/ vi は、環境変数に値を入れます。
EXINIT
ex スタートアップコマンドのリストは、変数 NEXINIT も設定されていないなら、 /etc/vi.exrc の後に読み込まれます。
HOME
スタートアップ $HOME/.nexrc$HOME/.exrc ファイルのための初期ディレクトリのパスとして使用されるユーザのホームディレクトリ。また、この値は、 cd コマンドのためのデフォルトのディレクトリとして使用されます。
LINES
スクリーンの列の数。この値は、あらゆるシステムまたは端末特有の値を無効にします。 ex/ vi が実行するとき、 LINES 環境変数が設定されていないか、または lines オプションがユーザによって明示的にリセットされているなら、 ex/ vi は、環境変数に値を入れます。
NEXINIT
ex スタートアップコマンドのリストは、 /etc/vi.exrc の後に読み込まれます。
SHELL
ユーザシェルの選択 ( shell オプションも参照)。
TERM
ユーザの端末タイプ。デフォルトは、タイプ“unknown”です。 ex/ vi が実行するとき、 TERM 環境変数が設定されていないか、または term オプションがユーザによって明示的にリセットされているなら、 ex/ vi は、環境変数に値を入れます。
TMPDIR
一時ファイルを格納するために使用される位置 ( directory 編集オプションも参照)。

非同期イベント

SIGALRM
vi/ ex は、ファイル修正の定期的なバックアップのために、そして操作が長い時間をとるかもしれないとき、“busy”メッセージを表示するために、このシグナルを使用します。

SIGHUP
SIGTERM
現在のバッファがその全体を最後に書き込まれてから、変更されているなら、エディタは、後で復旧することができるように修正されたファイルを保存することを試みます。詳細については、 vi/ ex リファレンスマニュアルのセクション 「復旧」 を参照してください。

SIGINT
割り込みが生じるとき、現在の操作は、停止され、エディタは、コマンドレベルに戻ります。テキストの入力の間に割り込まれたなら、既に入力されたテキストは、あたかもテキストの入力が、通常終了したかのように、ファイルに解消されます。

SIGWINCH
スクリーンは、サイズ変更されます。詳細については、 vi/ ex リファレンスマニュアルのセクション 「スクリーンのサイズ処理」 を参照してください。

関連ファイル

/bin/sh
デフォルトのユーザシェル。
/etc/vi.exrc
システム全体の vi のスタートアップファイル。 ex コマンドのために、スタートアップのシーケンスで最初に読み込まれます。 root またはユーザによって所有され、所有者によってのみ書き込み可能でなければなりません。
/tmp
一時ファイルのディレクトリ。
/var/tmp/vi.recover
デフォルトの復旧ファイルのディレクトリ。
$HOME/.nexrc
ユーザのホームディレクトリのスタートアップファイルのための最初の選択で、 NEXINIT または EXINIT のいずれかが設定されていないなら、 /etc/vi.exrc 直後に ex コマンドのために読み込まれます。 root またはユーザによって所有され、所有者によってのみ書き込み可能でなければなりません。
$HOME/.exrc
$HOME/.nexrc と同じ条件の下で ex コマンドのために読み込まれる、ユーザのホームディレクトリのスタートアップファイルのための 2 番目の選択。
.nexrc
exrc オプションが以前にオンにされたなら、スタートアップシーケンスの終わりで ex コマンドのための読み込まれる、ローカルのディレクトリのスタートアップファイルのための最初の選択。ユーザによって所有され、所有者によってのみ書き込み可能でなければなりません。
.exrc
.nexrc と同じ条件の下で ex コマンドのために読み込まれる、ローカルのディレクトリのスタートアップファイルのための 2 番目の選択。

終了ステータス

exvi ユーティリティは、成功すれば、0 で終了し、エラーが生じるなら、 >0 で終了します。

関連項目

ctags(1), iconv(1), re_format(7)

規格

nex/ nvi は、 IEEE Std 1003.1-2008 (“POSIX.1”) に近づいています。そのドキュメントは、いくつかの場面で歴史的な ex/ vi の慣例と異なります。両側で行なわれる変更があります。

歴史

ex エディタは、 1BSD ではじめて登場しました。 ex/ vi エディタのための nex/ nvi の置き換えは、 4.4BSD ではじめて登場しました。

作者

Bill Joy は、1977 年に ex のオリジナル版を書きました。
November 2, 2013 FreeBSD