vi または vedit コマンド
目的
ファイルをフルスクリーン表示で編集します。
構文
{ vi | vedit } [ -l ] [ -R ] [ -tTag ] [ -v ] [ -wNumber] [ -yNumber ] [ -r [ File ] ] [{ + | -c } { Subcommand } ] [ File ... ]
説明
vi コマンドは、基本 ex エディターに基づいてフルスクリーン・エディターを始動します。 したがって、vi エディター内では ex サブコマンドが使用できます。 vedit コマンドは、vi エディターの初心者向けバージョンを始動します。 vedit エディターでは、report オプションが 1 に設定され、showmode オプションが設定され、novice オプションが設定されて、ライン・エディターとなります。
編集するファイル名 (複数可) を指定して vi エディターを始動します。 コマンド・ラインで複数の File パラメーターを指定すると、vi エディターは各ファイルを指定順に編集します。 既存のファイル上の vi エディターは、ファイル名、行番号、および画面最下部の文字数を表示します。 マルチバイト・ロケールの場合には、この文字数はバイト数として解釈する必要があります。
vi エディターはフルスクリーン・エディターなので、画面単位でテキストを編集できます。 vi エディターは編集しているファイルのコピーを編集バッファーに作成し、ファイルの内容を変更結果が保存されるまで変更しません。 ディスプレイ画面上のカーソル位置は、ファイル内におけるカーソル位置を示し、サブコマンドはカーソル位置のファイルに影響を与えます。
vi エディターに関する制限
以下のリストは、vi エディターの最大制限値を示したものです。 これらの値のカウントは、1 バイト文字を想定しています。
- グローバル・コマンド・リスト当たり 256 文字まで。
- 1 つのシェル・エスケープ・コマンドには 2048 文字まで。
- 1 つの文字列値オプションには 128 文字まで。
- 1 つのタグ名には 30 文字まで。
- 合計 2048 文字で 128 マップ・マクロ。
- 1,048,560 行と見なされる。
- マクロ名およびマクロ・テキストは 100 文字まで。
vi 編集モード
vi エディターは、以下のモードで操作します。
項目 | 説明 |
---|---|
コマンド・モード | vi エディターを始動すると、コマンド・モードになります。 テキスト入力モードでしか指定できないものを除き、すべてのサブコマンドを入力できます。 vi エディターは、サブコマンドおよび他のモードが終了すると、コマンド・モードに戻ります。 サブコマンドを取り消すときには、Esc キーを押します。 |
テキスト入力モード | テキストを追加するときには、このモードで vi エディターを使用します。 以下のサブコマンドのいずれかでテキスト入力モードに入ります。 以下のサブコマンドのいずれかでテキスト入力モードに入ります。 すなわち、a サブコマンド、A サブコマンド、i サブコマンド、I サブコマンド、o サブコマンド、O サブコマンド、cx サブコマンド (x はサブコマンドの有効範囲を表します)、C サブコマンド、s サブコマンド、S サブコマンド、R サブコマンドです。 これらのいずれかのサブコマンドを入力すれば、テキストを編集バッファーに入力できます。 コマンド・モードに戻るときには、正常終了の Esc キーを押すか、割り込み (Ctrl-C キー・シーケンス) を押して異常終了します。 |
最終行モード | 接頭部 : (コロン)、/ (スラッシュ)、? (疑問符)、! (感嘆符)、または !! (感嘆符 2 つ) が付いたサブコマンドは、画面最下部に表示される行に入力されたデータを読み取ります。
最初の文字を入力すると、vi エディターではカーソルが画面最下部に移動するので、そこにコマンドの残りの文字を入力します。
Enter キーを押すとサブコマンドは実行され、割り込み (Ctrl-C キー・シーケンス) を押すと取り消されます。
感嘆符 !! を使用すると、カーソルは 2 つの感嘆符が入力されたときだけ移動します。
接頭部 : を使用して最終行モードを入力するとき、以下の文字をカウントを指定するコマンドの前で使用する
と、vi エディターはその文字に特別な意味を持たせます。
注: 上矢印キーおよび下矢印キーを使用して、最終行モード時のサブコマンドの履歴を見ることができます。
|
vi エディターのカスタマイズ
- vi エディター・オプションの設定
- マクロの定義
- キーのマッピング
- 省略形の設定
vi エディター・オプションの設定
vi オプション (省略形) | 説明 |
---|---|
autoindent (ai) | テキスト入力モード時に、shiftwidth オプションで指定したタブ・ストップ間隔を使用して、前行の字下げ位置まで自動的に字下げします。 デフォルトは noai です。 カーソルを前のタブ・ストップまで戻すには、Ctrl-D キー・シーケンスを押します。 このオプションは、グローバル・コマンドには無効です。 |
autoprin (ap) | 編集バッファーを変更するコマンドの後に、現在行を表示します。 デフォルトは ap です。 このオプションは、単一の行に入力した一連のコマンドのうち、最後のコマンドにのみ適用され、グローバル・コマンドには無効です。 |
autowrite (aw) | 編集バッファーをファイルに自動的に書き込むのは、 :n サブコマンド、 :ta サブコマンド、Ctrl-A、Ctrl -]、および Ctrl -T キー・シーケンス、ならびに ! サブコマンドの前で、前回の write サブコマンド以降に編集バッファーが変更された場合です。デフォルトは noaw です。 |
backtags (bt) | Ctrl-T サブコマンドが、ファイル編集位置を前回 の Ctrl-] サブコマンドが発行されたロケーションに戻すことができるようにします。 nobacktags が設定されている場合、Ctrl-T は Ctrl-] と同じです。 デフォルトは backtags です。 |
beautifying text (bf) | テキスト入力中に、編集バッファーに制御文字 (タブ、改行、および用紙送りインジケーター) を入力できないようにします。 デフォルトは nobf です。 このオプションは、コマンド入力に適用されます。 |
closepunct (cp=) | 特にテキストの折り返し時 (wraptype オプション) に終了句読点のリストを処理します。 複数文字による句読点の前に文字数を付けます。 例えば、cp=3..;)} となります。 vi コマンドは、折り返し時には終了句読点を分割しません。 |
directory (dir=) | 編集バッファーが入っているディレクトリーを表示します。 デフォルトは dir = /var/tmp です。 |
edcompatible (ed) | 複数の置換を行う間にサブコマンド接尾部 g (グローバル) および c (確認) を保持し、r (読み取り) 接尾部を r サブコマンドと同様に機能させます。 デフォルトは noed です。 |
exrc (exrc) | このオプションを設定しなければ、現在のディレクトリー名が HOME 環境変数で指定されていない限り、初期化時に現行ディレクトリー内の .exrc ファイルがすべて無視されます。 デフォルトは noexrc です。 |
hardtabs (ht=) | vi エディターに対して、ディスプレイ画面上のハードウェア・タブ・ストップの間隔を指示します。 (このオプションは、基礎となる端末または端末エミュレーターのタブ設定と一致する必要があります。) デフォルトは ht=8 です。 |
history (hist=) | 最終行モード時のコマンドの履歴を見る場合に使用される最大履歴数を設定します。初期値は hist=32 です。tvi コマンドの場合、最大履歴数は 0 (hist=0) です。 |
ignorecase (ic) | 正規表現の検索中に大文字と小文字の違いを無視します。 デフォルトは noic です。 |
linelimit (ll=) | -y コマンド・ライン・オプションに関して最大行数を設定します。 このオプションは、.exrc ファイルまたは EXINIT 環境変数とともに使用する場合のみ有効です。 |
lisp (lisp) | ( )、{ }、[ [、および ] ] の特殊な意味を除去し、s 式に対して = (フォーマット出力) 演算子を使用可能にして、リスト処理 (LISP) プログラムを編集できるようにします。 デフォルトは nolisp です。 |
list (list) | タブ (^I) 付きテキストとマーク付きの行末 ($) を表示します。 デフォルトは nolist です。 |
magic (magic) | パターンを検索するときに、 .(ピリオド)、[ (左大括弧)、および * (アスタリスク) を特殊文字として扱います。 オフ・モードでは、( ) (小括弧) と $ (ドル記号) のみが特殊な意味を保持します。ただし、前に円記号 (¥) を付けると、他の文字の特殊な意味を復活させることができます。 デフォルトは magic です。 |
mesg (mesg) | ビジュアル・モードで設定されている間、端末への書き込み許可をオンにします。 このオプションは、.exrc ファイルまたは EXINIT 環境変数とともに使用する場合のみ有効です。 デフォルトは on です。 |
modeline (modeline) | このオプションをファイルの最初の 5 行または最後の 5 行に使用すると、vi エディターのコマンド・ラインが実行されます。 vi エディターのコマンド・ラインは、1 行のどこにでも挿入できます。 vi エディターにコマンド・ラインを認識させるには、その行のスペースまたはタブの後に文字列 ex: または vi: を付ける必要があります。コマンド・ラインは、2 つ目の : (コロン) で終わります。 vi エディターは、1 つ目のコロンと 2 つ目のコロンの間にあるデータを、vi エディター・コマンドとして解釈しようとします。 デフォルトは nomodeline です。 |
novice | novice モードになっていることを示します。 この値を set コマンドで変更することはできません。 |
number (nu) | 各行に接頭部として行番号を付けて表示します。 デフォルトは nonu です。 |
optimize (opt) | カーソル・アドレッシング機能がない端末の処理速度を高めます。 デフォルトは noopt です。 |
paragraphs (para=) | 段落を開始する vi マクロ名を定義します。 デフォルトは para=IPLPPPQPP¥ LIpplpipnpbp です。 .P マクロのように単一文字の nroff マクロの場合、段落を再指定するときには引用文字としてスペースを指定する必要があります。 |
partialchar (pc=) | 倍角文字が完全に表示されない場合に、最後の表示列に表示されます。 デフォルト文字は - (負符号) です。 |
prompt | コマンド・モードで、: (コロン) を出力して新しい vi エディターの入力を求めるプロンプトを表示します。 デフォルトは on です。 |
readonly (ro) | 永久的な読み取り専用モードを設定します。 デフォルトは noreadonly です。 |
redraw (redraw) | ダム・ワークステーション上でスマート・ワークステーションをシミュレートします。 デフォルトは nore です。 |
remap | 他のマクロに関するマクロを定義できるようにします。デフォルトは on です。 |
report (re=) | メッセージが表示される前にコマンドを繰り返すことができる回数を設定します。 グローバル・サブコマンドのように、メッセージを多く生成するサブコマンドの場合は、コマンド・シーケンスが完了するとメッセージが表示されます。 デフォルトは report=5 です。 |
scroll (scr=) | 上下にスクロールする際のスクロール行数を設定します。 デフォルトは、ウィンドウ・サイズの 1/2 に相当する行数から端数を切り捨てた行数です。 |
sections (sect=) | セクションを開始する vi マクロを定義します。 デフォルトは sect=NHSHHH¥ HUuhsh+c です。.P マクロのように単一文字の nroff マクロの場合、段落を再指定するときには引用文字としてスペースを指定する必要があります。 |
shell (sh=) | ! サブコマンドまたは :! サブコマンドのシェルを定義します。 デフォルトはログイン・シェルです。 |
shiftwidth (sw=) | autoindent オプション、 シフト・コマンド ( > と < )、 およびテキスト入力コマンド (Ctrl-D と Ctrl-T キー・シーケンス) で使用するソフトウェア・タブ・ストップの間隔を設定します。 vi オプションは、行頭の字下げにのみ影響を与えます。 デフォルトは sw=8 です。 |
showmatch (sm) | ) (右小括弧) または ] (右大括弧) を入力すると、 それに対応している ( (左小括弧) または [ (左大括弧) を表示します。 デフォルトは nosm です。 |
showmode (smd) | vi エディターが入力モードになっていることを示すメッセージを表示します。 デフォルトは nosmd です。 |
slowopen (slow) | 挿入時のディスプレイ画面の更新を延期します。 デフォルトは noslow です。 |
tabstop (ts=) | 表示されたファイル内でタブ・ストップの間隔を設定します。 デフォルトは ts=8 です。 |
tags (tags =) | ctags コマンドを使用して作成された関数名データベース・ファイルの検索パスを定義します。デフォルトは tags=tags¥ /usr/lib/tags です。 |
term (term=) | 使用中のワークステーションのタイプを設定します。 デフォルトは term=$TERM です。 この場合、$TERM は TERM シェル変数の値です。 |
terse (terse) | vi エディターで短いフォーマットのメッセージを表示できるようにします。 デフォルトは noterse です。 |
timeout (to) | 文字入力の時間制限を 2 秒に設定します。 この制限により、timeout オプションを設定するときにマクロ内の文字を別個の文字として入力し、処理できます。 マクロの使用を再開するには、notimeout オプションを設定します。 デフォルトは to です。 |
ttytype | 使用する端末の tty タイプを示します。 この値を vi エディターで変更することはできません。 |
warn (warn) | 編集バッファーで変更を行った後でシェル・コマンドを初めて発行するが、ファイルへの書き込みが済んでいない場合、! サブコマンドがシェル・コマンドを実行する前に警告メッセージを表示します。 デフォルトは warn です。 |
window (wi=) | テキスト・ウィンドウ 1 つ分に表示される行数を設定します。 600 ボー未満であれば 8 行、1200 ボーの場合は 16 行、1200 ボーを超える場合はフルスクリーンの行数より 1 行少ない行数です。 |
wrapmargin (wm=) | ある行から次の行までの自動ワード折り返しのマージンを設定します。 デフォルトは wm=0 です。値 0 を指定すると、ワード折り返し機能がオフになります。 |
wrapscan (ws) | 文字列検索を編集バッファーの終わりから先頭に折り返せるようにします。 デフォルトは ws です。 |
wraptype (wt=) | 行末でワードを折り返すために使用するメソッドを示します。
デフォルト値は general です。
以下の 4 つの値から 1 つ指定できます。
|
writeany (wa) | 通常は write サブコマンドの前に実行される検査をオフにします。 デフォルトは nowa です。 |
デフォルト設定から変更された vi エディター設定のリストを表示するには、set と入力してスペース・バーを押します。コマンド・モードに戻るには、Enter キーを押します。
vi エディター設定の詳細リストを表示するには、set all と入力します。コマンド・モードに戻るには、Enter キーを押します。
vi エディターをオンにするには、set Option と入力します。 このコマンドを実行すると、自動的にコマンド・モードに戻ります。
複数の vi エディター・オプションをオンにするには、set Option Option Option と入力します。このコマンドを実行すると、指定した 3 つの vi エディター・オプションがオンになり、コマンド・モードに戻ります。
vi エディター・オプションをオフにするには、set noOption と入力します。このコマンドを実行すると、自動的にコマンド・モードに戻ります。
vi エディター・オプションの値を変更するには、setOption=Value と入力します。このコマンドを実行すると、自動的にコマンド・モードに戻ります。
vi エディターの :set サブコマンドを使用すると、この編集セッション中にのみ使用するオプションを設定するか、またはこの編集セッションの将来のすべての編集セッションに使用するオプションを設定できます。
この編集セッションのみに使用する vi エディター・オプションを設定または変更するには、コマンド・ラインから :set サブコマンドを入力します。
EXINIT 環境変数を設定してオプションを変更する方法については、environment ファイル内の環境変数の説明のセクションを参照してください。
set cp=3 . . ;
.exrc ファイルにコメントを追加するには、行の先頭文字として " (二重引用符) を使用します。
マクロの定義
サブコマンドまたはサブコマンド・シーケンスを頻繁に使用する場合は、vi エディターを使用して、そのサブコマンドまたはシーケンスを発行するマクロを定義することができます。
マクロを定義するには、サブコマンドのシーケンスに英字の名前を付けてバッファーに入れます。 a から z までの小文字を使用するとバッファーの内容がオーバーレイされ、A から Z までの大文字を使用すると、テキストはバッファーの以前の内容に追加されるので、マクロを個々に構築できます。
o /corner/+3
次に、Esc キーを押して、次のコマンドを入力します。
"c
この場合、c はバッファー・マクロ名です。
定義済みバッファーの以前の内容にテキストを追加するには、o viSubcommand と入力し、Esc キーを押し、"CapitalLetter と入力します。 この場合、CapitalLetter 変数は、A から Z までの大文字を指定します。 例えば、corner という言葉を捜して、更にコマンドを追加できるバッファー・マクロ T を作成するには、次のように入力します。
o corner
"T
この場合、T はバッファー・マクロ名です。 このプロセスを何度でも繰り返して、同じバッファーにさらに vi サブコマンドを追加することができます。
o -dd
"Tdd
マクロを始動するには、@Letter と入力します。 この場合、Letter 変数は、使用したいバッファー・マクロの英字名を指定します。 同じマクロを再度使用するには、@@ (アットマーク 2 つ) を入力します。 例えば、@T と入力すると、T バッファー・マクロが始動され、search、move cursor、および delete line コマンドが実行されます。@@T と入力すると、T バッファー・マクロが再度始動されます。
システムで使用する文字セットは、照合テーブルで定義されます。 このテーブルは、vi マクロのパフォーマンスに影響を与えます。
キーのマッピング
:map、:map!、および :ab サブコマンドを使用して、コマンドまたはコマンド・シーケンスにキー・ストロークをマップすることができます。 :map サブコマンドは、コマンド・モードで使用します。 :map! サブコマンドおよび :ab サブコマンドは、テキスト入力モードで使用します。 どちらのモードでも、今回以降のすべての編集セッションに使用するキー、または今回の編集セッション専用のキーをマップできます。
将来のすべての編集セッション に使用するキーをマップするには、サブコマンドを $HOME/.exrc ファイルに入れます。 vi エディターを始動するたびに、このファイルが読み取られます。 マッピングは、すべての編集セッションで有効になります。
現在の編集セッション専用 のキーをコマンド・モード からマップするには、vi エディター・セッション中にサブコマンドを始動します。 現在の編集セッション専用のキーをテキスト入力モード からマップするには、vi エディター・セッション中にコマンド・ラインにサブコマンドを入力します。 マッピングは、現在の編集セッション中にのみ有効です。
:map サブコマンド、 :map! サブコマンド、および :ab サブコマンドを以下のように定義して使用します。
項目 | 説明 |
---|---|
:map | マクロをコマンド・モードで定義します。
:map サブコマンドを使用すると、vi エディター内で単一のキーを押して、指定したコマンドまたはコマンド・シーケンスを実行できます。
コマンド・モードでキーをマップするには、編集バッファーが空の状態で vi エディターを始動し、vi エディターが始動した後に vi コマンドで vi ファイル名を指定せず、バッファーに何も入力しません。 :map サブコマンドを使用すると、以下の操作を行うことができます。
以下のキーは、vi エディターでは使用しませんが、コマンド・モードで :map サブコマンドとともに使用することができます。
既に vi エディターで使用しているキーをマップできますが、マップが有効になっている間は、そのキーの通常の機能を使用できなくなります。 一部の端末では、コマンド・シーケンスをファンクション・キーにマップできます。 LISP モードの場合は、vi エディターで使用されているので、= (等号) は使用できません。 ワード map が次に出現する位置を突き止めてワード MAP に変更するコマンド・シーケンスに、文字 v をマップするには、次のコマンドを入力します。
上記の例は、vi エディターに対して、map が次に出現する位置を突き止め (/map<Ctrl-V><Enter>)、 map を MAP に変更し (cwMAP)、ワード変更サブコマンドを終了し (<Ctrl-V><Esc>)、コマンドを入力します (<Ctrl-V><Enter>)。 要件: vi エディターで Enter キーが解釈されないようにするには、マップ時に先行の Ctrl-V キー・シーケンスを付ける必要があります。この条件は、Esc、Backspace、および Delete キーにも該当します。
制御文字 Ctrl-A、Ctrl-K、および Ctrl-O をマップするには、Ctrl キーと文字を同時に押します。 例えば、ファイルを保存して連続する次のファイルを編集するコマンド・シーケンスに、Ctrl-A キー・シーケンスをマップするには、次のコマンドを入力します。
制御文字 Ctrl-T、Ctrl-W、および Ctrl-X をマップするには、Ctrl-V キー・シーケンスを使用して最初にエスケープする必要があります。 |
| (パイプ接続シンボル) をマップするには、次のように、2 つの Ctrl-V キー・シーケンスで最初にエスケープする必要があります。 次の例では、シェルにエスケープし、ファイル /etc/motd を連結して出力を wc コマンドにパイプ接続するコマンド・シーケンスに、文字 g をマップします。
端末でファンクション・キーをマップできる場合は、#number キー・シーケンスを使用して参照し、マップしたいファンクション・キーの番号を指定する必要があります。次の例では、1 ワードを削除してカーソルを下方に 3 ワード分だけ移動させるコマンド・シーケンスに、ファンクション・キー F1 がマップされます。
ファンクション・キーのマッピングを機能させるには、端末タイプのファンクション・キーの出力が、terminfo ファイル内で定義した出力と一致する必要があります。 これらの定義は kfnumber エントリーで示されます。 この場合、kf1 はファンクション・キー F1 を表し、kf2 はファンクション・キー F2 を表すという具合になります。ファンクション・キーを押したときに表示される出力が、このエントリーと一致しない場合は、マッピングする前に、端末のセットアップ・モードを使用し、これらの端末データベース・エントリーに合わせて設定を変更する必要があります。 また、Home、End、Page Up、および Page Down などの一定のキーボード特殊キーもマップすることができます。 ほとんどの端末では、これらのキーは既に vi エディター内でマップされています。 このマッピングは、:map サブコマンドを使用して確認できます。 これらのキーがマップされていない場合は、以下のように :map サブコマンドを使用することができます。
すべての現在のマップ・リストをコマンド・モードで表示させるには、:map サブコマンドを入力します。 上記の例は、次のように表示されます。
ヒント: Ctrl-V および Enter キー・シーケンスは、Ctrl-M キー・シーケンスとして表示され、Ctrl-V および Esc キー・シーケンスは、Ctrl-[ キー・シーケンスとして表示されます。
|
|
:map! | テキスト入力モードで文字列を単一のキーにマップします。
キーをテキスト入力モードでマップするには、編集バッファーが空の状態で vi エディターを始動し、エディターが始動した後は、vi コマンドを使用して vi ファイル名を指定せず、バッファーに何も入力しないでください。
:map! サブコマンドを使用すると、以下の操作を行うことができます。
マップしたキーをテキスト入力モードで入力すると、指定した文字列が生成されます。 Ctrl-V および Esc キー・シーケンスを使用すると、コマンド・モードになり、現在のワード (bbw) の先頭まで戻り、cw (ワード変更) サブコマンドが始動されます。 例えば、次のように入力します。
テキストを入力するときに、ワードを誤って入力したことに気付いたら、% (パーセント) キーを押し、そのワードを入力し直すと変更できます。 自動的に挿入モードに戻ります。 重要: :map! サブコマンドに使用するキーは、慎重に選択してください。
いったんキーをマップすると、最初に :unmap! サブコマンドを出さないでキーをテキストとして入力することはできません。
|
:ab | テキスト入力モードで使用できるように、キーまたはキー・シーケンスを文字列にマップします。
:ab サブコマンドは、複数の繰り返されるフレーズ、名前、またはタイトルを処理するテキストを入力するときに便利です。
以下の例では、ワード city をテキスト入力モードで入力し、後にホワイト・スペース、ピリオド、またはコンマを付けると、フレーズ Austin, Texas 78759 に置き換えられます。
例えば、テキスト入力中に、次のように入力するものと仮定します。
Tab キーを押すと、ワード city が次のように展開されます。
ワード内に含まれる省略形は、展開されません。 例えば、My current residence iscity と入力しても、ワード iscity は展開されません。 :map!サブコマンドを使用して挿入モードに省略形をマップすると、発生する位置にかかわらず、出現した省略形はすべて展開されます。 前述の例 (:map! city Austin, Texas 78759) に :map! サブコマンドを使用すると、 前後の文字に関係なく、city ワードをタイプした場合、常にそのワードは Austin, Texas 78759 に展開されます。 したがって、ワード iscity は isAustin, Texas 78759 となります。 重要: :ab サブコマンドに使用するキーは、慎重に選択してください。
キーを定義すると、そのキーは最初に :unab サブコマンドを発行しなければテキストとして入力できなくなります。
|
省略形の設定
set コマンドは、省略形が分離した語である場合にのみ、 省略形を文字列に置き換えるという点を除けば、set コマンドは map! コマンドと同様に機能します。 vi エディターの set コマンドを使用すると、以下の操作を行うことができます。
- 既存の省略形のリスト
- 省略形の除去
- 省略形の設定 (定義)
ヒント: 編集バッファーが空の状態で vi エディター を始動してください。vi エディターが始動した場合は、vi コマンドを使用して vi ファイル名を指定したり、バッファーに入力したりしないでください。 Esc キーを押して、コマンド・モードになっていることを確認してください。
項目 説明 省略形のリスト :ab コマンドを入力すると、既存の省略形がリストされます。 Enter キーを押すと、コマンド・モードに戻ります。 省略形の除去 省略形を除去するには、:anabAbbreviation コマンドを入力します。 この場合、Abbreviation 変数では、それ以上省略したくない文字列を指定します。 省略形の設定 (定義) 省略形を設定するには、:ab Abbreviation String コマンドを入力します。 この場合、Abbreviation 変数では、省略形として定義する文字列を指定し、String 変数では省略する文字列を指定します。 省略形が別個のワードである場合にのみ、省略形は文字列に置き換えられます。 例えば、テキスト入力モードで :ab kn upper コマンドを入力してから、acknowledge と入力すると、ワード acknowledge に含まれる文字列 kn は別個のワードではないので、省略形設定文字列は開始されません。
ただし、テキスト入力モードで :ab kn upper コマンドを入力してから make the kn line all kncase と入力すると、結果は make the upper line all uppercase となります。
フラグ
項目 | 説明 |
---|---|
-cSubcommand | vi による表示を開始する前に、ex エディター・サブコマンドを実行します。 カーソルは、最後に実行されたサブコマンドの影響を受ける行に移動します。 -c' ' の場合と同様に、null オペランドを入力すると、vi エディターによりカーソルがファイルの先頭行に移動します。 -c フラグは、+ フラグと一緒には使用できません。 同時に両方のフラグを指定しないでください。 |
-l | LISP モードで vi エディターに入ります。 このモードでは、LISP コードに適した字下げが vi エディターによって作成され、(, )、 {, }、 [[、]] などのサブコマンドは、LISP のコードに適した動作をするように変更されます。 |
-r [File] | vi エディター やシステムの誤動作が発生した後で、ファイルを回復します。 File 変数を指定しなければ、vi エディターはすべての保管ファイルのリストを表示します。 |
-R | readonly オプションを設定し、ファイルの上書きを防止します。 |
-tTag | Tag 変数の入ったファイルを編集し、vi エディターをその定義に配置します。 このフラグを使用するには、ユーザーは最初に ctags コマンドを使用して関数名とその位置からなるデータベースを作成する必要があります。 |
-v | verbose モードで vi エディターに入ります。 |
-wNumber | デフォルト・ウィンドウ・サイズを、Number 変数で指定した値に設定します。 このフラグは低速回線で vi エディターを使用するときに便利です。 |
-yNumber | 最大行数設定値 1,048,560 を 1024 よりも大きい任意の値で上書きします。 vi エディターがバッファー操作で余分に行を使用するので必要な行数を 2 度要求する必要があります。 |
+[Subcommand] | 編集開始前に ex エディター・サブコマンドを実行します。 Subcommand 変数を指定しなければ、カーソルはファイルの先頭行に置かれます。 この + フラグは、-c フラグと一緒には使用できません。 同時に両方のフラグを指定しないでください。 |
vi 一般サブコマンドの構文
サブコマンドを入力するには、以下の一般構文を使用します。
項目 | 説明 |
---|---|
[Named_Buffer] | 一時テキスト・ストレージ域を指定します。 |
[Operator] | サブコマンドやアクションを指定し、vi エディターを指示します。 |
[Number] | アクションまたは行アドレスの範囲を整数で指定します。 |
Object | 実行対象として、テキスト・オブジェクト (文字、ワード、ステートメント、段落、セクション、文字列) またはテキスト位置 (行、現在行における位置、画面位置) を指定します。 |
サブコマンドの前のカウント
多くのサブコマンドの前には数値を指定することができます。 vi エディターはこの数値を以下のいずれかの方法で解釈します。
- Number パラメーターで指定した行に移動する。
5G 10Z
- Number パラメーターで指定した桁に移動する。
25|
- Number パラメーターで指定した行数だけ上下にスクロールする。
10Ctrl-U 10Ctrl-D
vi エディターのサブコマンド
サブコマンドを使用すると、以下のようなアクションを実行できます。
- カーソルの移動
- テキストの編集
- ファイルの操作
- その他のアクション
カーソルの移動
サブコマンドを使用すると、次の方法によってファイル内でカーソルを移動できます。
- 1 行内の移動
- 文字位置による 1 行内の移動
- ワードへの移動
- 行位置による移動
- センテンス、段落、またはセクションへの移動
- 画面の再ドローによる移動
- ページングとスクロール
- パターン検索
- ファイル内の特定位置にマーク付けして戻る
1 行内の移動
コマンド・モードで以下のサブコマンドを入力します。 不完全なコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
左向き矢印、または h か Ctrl-H | カーソルを 1 文字左に移動します。 |
下矢印、j、または Ctrl-J か Ctrl-N | カーソルを 1 行下に移動します (桁位置は移動しません)。 |
上矢印、または k か Ctrl-P | カーソルを 1 行上に移動します (桁位置は移動しません)。 |
右向き矢印または l | カーソルを 1 文字右に移動します。 |
文字位置による 1 行内の移動
コマンド・モードで以下のサブコマンドを入力します。 不完全なコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
^ | カーソルを最初の非ブランク文字に移動します。 |
0 | カーソルを行の先頭に移動します。 |
$ | カーソルを行の終わりに移動します。 |
fx | カーソルを次の x 文字に移動します。 |
Fx | カーソルを最後の x 文字に移動します。 |
tx | カーソルを、次の x 文字の 1 桁前に移動します。 |
Tx | カーソルを、最後の x 文字の 1 桁後に移動します。 |
; | 最後の f、F、t、または T サブコマンドを繰り返します。 |
, | 最後の f、F、t、または T サブコマンドを反対方向に繰り返します。 |
Number| | カーソルを指定した桁に移動します。 |
ワードへの移動
コマンド・モードで以下のサブコマンドを入力します。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
w | カーソルを次の small ワードに移動します。 |
b | カーソルを直前の small ワードに移動します。 |
e | カーソルを次の small ワードの最後に移動します。 |
W | カーソルを次の big ワードに移動します。 |
B | カーソルを直前の big ワードに移動します。 |
E | カーソルを次の big ワードの最後に移動します。 |
行位置による移動
コマンド・モードで以下のサブコマンドを入力します。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
H | カーソルを画面の一番上の行に移動します。 |
L | カーソルを画面の一番下の行に移動します。 |
M | カーソルを画面の中央の行に移動します。 |
+ | カーソルを次行の最初のブランク以外の文字に移動します。 |
- | カーソルを直前の行の最初のブランク以外の文字に移動します。 |
Enter | カーソルを次行の最初のブランク以外の文字に移動します。 |
センテンス、段落、またはセクションへの移動
コマンド・モードで以下のサブコマンドを入力します。 不完全なサブコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
( | カーソルを直前のセンテンスの先頭か、LISP モードのときは直前の s 式に移動します。 |
) | カーソルを次のセンテンスの先頭か、LISP モードのときは次の s 式に移動します。 |
{ | カーソルを直前の段落の先頭か、LISP モードのときは次のリストに移動します。 |
} | カーソルを次の段落の先頭か、C モードのときは次のセクションに、または LISP モードのときは次のリストに移動します。 |
]] | カーソルを次のセクションか、LISP モードのときは次の関数に移動します。 |
[[ | カーソルを直前のセクションか、LISP モードのときは直前の関数に移動します。 |
画面の再ドローによる移動
コマンド・モードで以下のサブコマンドを入力します。 不完全なサブコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
z | 画面最上部に現在行を移動して画面を再表示します。 |
z- | 画面最下部に現在行を移動して画面を再表示します。 |
z. | 画面中央に現在行を移動して画面を再表示します。 |
/Pattern/z- | Pattern パラメーターで指定した文字列を含む行を画面最下部に移動して画面を再表示します。 |
ページングとスクロール
コマンド・モードで以下のサブコマンドを入力します。 不完全なサブコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
Ctrl-U | 半画面上にスクロールします。 |
Ctrl-D | 半画面下にスクロールします。 |
Ctrl-F | 1 画面下にスクロールします。 |
Ctrl-B | 1 画面上にスクロールします。 |
Ctrl-E | ウィンドウを 1 行下にスクロールします。 |
Ctrl-Y | ウィンドウを 1 行上にスクロールします。 |
z+ | 前ページ |
z^ | 次ページ |
パターン検索
コマンド・モードで以下のサブコマンドを入力します。 不完全なサブコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
[Number]G | Number パラメーターで指定した行番号にカーソルを移動します。 Number パラメーターが指定されていない場合は、最終行にカーソルを移動します。 |
/Pattern | Pattern パラメーターで指定した文字列のある行の次の行にカーソルを置きます。 |
?Pattern | Pattern パラメーターで指定した文字列のある行の直前の行にカーソルを置きます。 |
n | Pattern パラメーターで指定したテキストの最後の検索を同方向に繰り返します。 |
N | Pattern パラメーターで指定したテキストの最後の検索を反対方向に繰り返します。 |
/Pattern/+Number | Pattern パラメーターで指定した文字列と一致する行の後の指定した行番号にカーソルを置きます。 |
?Pattern?-Number | Pattern パラメーターで指定した文字列と一致する行の前の指定した行番号にカーソルを置きます。 |
% | 現在のカーソル位置にあるものと一致する括弧または中括弧を検索します。 |
テキストの編集
編集用のサブコマンドで、次の作業を実行できます。
- ファイル内の特定位置にマーク付けして戻る
- ファイルへのテキスト追加
- 入力モードでのテキスト変更
- コマンド・モードでのテキスト変更
- テキストのコピーと移動
- 変更結果の復元と繰り返し
ファイル内の特定位置にマーク付けして戻る
コマンド・モードで以下のサブコマンドを入力します。 不完全なサブコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
" | カーソルを現在行の直前の位置に移動します。 |
" | カーソルを現在行の直前の位置を含む行の先頭に移動します。 |
mx | x パラメーターで指定した文字で現在位置をマークします。 |
`x | x パラメーターで指定したマークの位置にカーソルを移動します。 |
'x | カーソルを x パラメーターで指定したマークを含む行の先頭に移動します。 |
ファイルへのテキストの追加 (テキスト入力モード)
vi エディターをテキスト入力モードに変更するには、コマンド・モードで以下のサブコマンドを入力します。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
aText |
Text パラメーターで指定したテキストをカーソルの後に挿入します。 テキスト入力モードは Esc キーを押すと終了します。 |
AText |
Text パラメーターで指定したテキストを行の最後に追加します。 テキスト入力モードは Esc キーを押すと終了します。 |
iText |
Text パラメーターで指定したテキストをカーソルの前に挿入します。 テキスト入力モードは Esc キーを押すと終了します。 |
IText |
Text パラメーターで指定したテキストを行の最初の非ブランク文字の前に挿入します。 テキスト入力モードは Esc キーを押すと終了します。 |
o |
空行を現在行の下に追加します。 テキスト入力モードは Esc キーを押すと終了します。 |
O |
空行を現在行の上に追加します。 テキスト入力モードは Esc キーを押すと終了します。 |
入力モードでのテキスト変更
テキスト入力モードでのみ以下のサブコマンドを使用してください。 これらのコマンドは、コマンド・モードでは別の意味を持っています。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
Ctrl-D |
前の自動字下げストップに戻ります。 |
^ Ctrl-D | 現在行についてのみ自動字下げ処理を終了します。 |
0Ctrl-D | カーソルを左マージンに戻します。 |
Esc | 挿入を終了し、コマンド状態に戻ります。 |
Ctrl-H | 最後の文字を消去します。 |
Ctrl-Q | xon が使用不可になっている場合に任意の文字を入力します。 |
Ctrl-V | 任意の文字を入力します。 |
Ctrl-W | 最後の small ワードを消去します。 |
\ | 消去文字と抹消文字を引用します。 |
Ctrl-? | 挿入または Ctrl-D キー・シーケンスに割り込んで終了します。 |
コマンド・モードでのテキスト変更
コマンド・モードで以下のサブコマンドを使用します。 不完全なサブコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
C |
行の残りの部分を変更します (c$ と同じ)。 |
cc |
行を変更します。 |
cw | ワードを変更します。 |
cwText | Text パラメーターで指定したテキストにワードを変更します。 |
D | 行の残りの部分を削除します (d$ と同じ)。 |
dd | 行を削除します。 |
dw | ワードを削除します。 |
J | 行を結合します。 |
rx | 現行文字を、x で指定した文字に置き換えます。 |
RText |
Text パラメーターで指定したテキストに文字を上書きします。 |
s |
文字を置き換えます (cl と同じ)。 |
S |
行を置き換えます (cc と同じ)。 |
u | 前の変更を元に戻します。 |
x | カーソル位置の文字を削除します。 |
X | カーソル位置の前の文字を削除します (dh と同じ)。 |
<< | 1 行左にシフトします。 |
<L | カーソルから画面の終わりまでの全行を左にシフトします。 |
>> | 1 行右にシフトします。 |
>L | カーソルから画面の終わりまでの全行を右にシフトします。 |
~ | カーソル位置の文字が大文字であれば小文字に、小文字であれば大文字に変更します。 |
! | LISP 用に字下げします。 |
テキストのコピーと移動
コマンド・モードで以下のサブコマンドを使用します。 不完全なサブコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
p | アンドゥ・バッファーからテキストを戻し、カーソルの後に挿入します。 |
P | アンドゥ・バッファーからテキストを戻し、カーソルの前に挿入します。 |
"xp | x バッファーからテキストを戻します。 |
"xd | テキストを削除して x バッファーに入れます。 |
y | 後に続くオブジェクト (例えばワードであれば w) をアンドゥ・バッファーに入れます。 |
"xy | 後に続くオブジェクトを x バッファーに入れます。 x はどの文字でもかまいません。 |
Y | 行をアンドゥ・バッファーに入れます。 |
変更結果の復元と繰り返し
コマンド・モードで以下のサブコマンドを使用します。 不完全なサブコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
u | 最後の変更を元に戻します。
ヒント: 元に戻した後は、カーソルは更新された現在行上の先頭の非ブランク文字に移動します。
|
U | 最後の変更以後カーソルが行を残していなければ、現在行を復元します。 |
. | 最後の変更を繰り返すか、 "np コマンドを増分します。
注:
|
"n p | 最後から n 番目に削除された行をすべて、またはブロック単位で検索します。 |
ファイルの操作
ファイル操作用のサブコマンドを使用すると、以下のセクションで説明するタスクを実行することができます。
- ファイルへの変更保存
- 第 2 のファイルの編集
- ファイル・リストの編集
- ファイル情報の検索
ファイルへの変更保存
コマンド・モードで以下のサブコマンドを使用します。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
:w | 編集バッファーの内容を元のファイルに書き込みます。 ex エディター内でこのサブコマンドを使用している場合は、: (コロン) は不要です。 |
:w File | File パラメーターで指定したファイルに編集バッファーの内容を書き込みます。 ex エディター内でこのサブコマンドを使用している場合は、: (コロン) は不要です。 |
:w! File | File パラメーターで指定したファイルに編集バッファーの内容を上書きします。 ex エディター内でこのサブコマンドを使用している場合は、: (コロン) は不要です。 |
第 2 のファイルの編集
コマンド・モードで以下のサブコマンドを入力します。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
:e File | 指定ファイルを編集します。 ex エディターからこのサブコマンドを使用している場合、: (コロン) は不要です。 |
:e! | 現行ファイルを再度編集し、すべての変更を破棄します。 |
:e + File | 指定ファイルをファイルの終わりから編集します。 |
:e + Number File | 指定ファイルを指定行番号から編集します。 |
:e # | 代替ファイルを編集します。 通常は、:e コマンドで別のファイルにアクセスする前のファイル名が代替ファイルです。 ただし、新しいファイルを呼び出したときに現行ファイル内で変更が保留になっている場合には、新しいファイルが代替ファイルになります。 これは、Ctrl-A サブコマンドと同じです。 |
:r File | 新しい行を現在行の下に追加することによって、ファイルを編集バッファーに読み取ります。 ex エディターからこのサブコマンドを使用している場合、: (コロン) は不要です。 |
:r !Command | 指定したコマンドを実行し、新しい行を現在のカーソル位置に追加することによってファイル内に出力を入れます。 |
:ta Tag | Tag タグの入っているファイルを、そのタグ位置から編集します。 このサブコマンドを使用するには、最初に ctags コマンドを使用して関数名とそれらの位置のデータベースを作成する必要があります。ex エディターからこのサブコマンドを使用している場合、: (コロン) は不要です。 |
Ctrl-] | 現行のワードと関連したタグの入っているファイルを、そのタグ位置から編集します。 このサブコマンドを使用するには、最初に ctags コマンドを使用して関数名とそれらの位置のデータベースを作成する必要があります。Ctrl-T は、前回の Ctrl-] サブコマンドが発行された編集位置でファイルを編集します。 複数の Ctrl-] サブコマンドが発行されている場合は、Ctrl-] サブコマンドが発行された前回の編集位置に戻るのに、 複数の Ctrl-T サブコマンドを使用することができます。 |
Ctrl-A | 代替ファイルを編集します。 代替ファイルは、通常は前の現行ファイル名です。 ただし、新しいファイルを呼び出したときに現行ファイル内で変更が保留になっている場合には、新しいファイルが代替ファイルになります。 このサブコマンドは :e # サブコマンドと同じです。 |
ファイル・リストの編集
コマンド・モードで以下のサブコマンドを入力します。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
:n | コマンド・ラインで入力したリスト内の次のファイルを編集します。 ex エディターからこのサブコマンドを使用している場合は、: (コロン) は不要です。 |
:n Files | 編集する新しいファイル・リストを指定します。 ex エディターからこのサブコマンドを使用している場合は、: (コロン) は不要です。 |
ファイル情報の検索
コマンド・モードで以下のサブコマンドを入力します。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
Ctrl-G | 現行ファイル名、現在行番号、ファイル内の行数、ファイル内におけるカーソル位置をパーセントで表示します。 |
その他のアクション
vi エディターには、以下のセクションで説明するサブコマンドがあります。
- スクリーン調整
- シェル・コマンドの入力
- vi エディターへの割り込みと終了
スクリーン調整
コマンド・モードで以下のサブコマンドを入力します。 不完全なサブコマンドは、Esc キーを押すと取り消すことができます。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
Ctrl-L | 画面を消去し、再表示します。 |
Ctrl-R | 画面を再表示し、@ (アットマーク) でマークされたブランク行を削除します。 |
zNumber | ウィンドウの長さを指定した行数にします。 |
シェル・コマンドの入力
以下のサブコマンドを使用すると、vi エディターでコマンド内でコマンドを実行することができます。 これらのサブコマンドは、コマンド・モードで入力します。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
:sh | 複数のコマンドを実行できるように、シェルに入ります。 Ctrl-D キー・シーケンスを押すと、vi エディターに戻ることができます。 ex エディター内でこのサブコマンドを使用している場合は、: (コロン) は不要です。 |
:!Command | 指定したコマンドを実行してから vi エディターに戻ります。
ex エディター内でこのサブコマンドを使用している場合は、: (コロン) は不要です。
ヒント: :! サブコマンドの後の特殊文字 # (代替ファイル)、
% (現行ファイル)、および ! (直前のコマンド) は展開されます。
これらの文字が展開されないようにするには、円記号 (¥) を使用してください。
|
:!! | 最後の :!Command サブコマンドを繰り返します。 |
Number!!Command | 指定したコマンドを実行し、Number で指定した行をコマンドの出力に置き換えます。 数値を指定しなかった場合、デフォルト値は 1 となります。 コマンドが標準入力を求める場合、指定した行は入力として使用されます。 |
!Object Command | 指定したコマンドを実行し、Object パラメーターで指定したオブジェクトをコマンドの出力に置き換えます。 コマンドが標準入力を求める場合、指定したオブジェクトは入力として使用されます。 |
vi エディターへの割り込みと終了
コマンド・モードで以下のサブコマンドを入力します。 vi サブコマンドのフォーマットについては、『vi 一般サブコマンドの構文』のセクションを参照してください。
項目 | 説明 |
---|---|
Q | コマンド・モードで ex エディターに入ります。 |
ZZ | vi エディターを終了して変更を保存します。 |
:q | vi エディターを終了します。 編集バッファーの内容を変更した場合は、vi エディターは警告メッセージを表示し、終了しません。 ex エディターからこのサブコマンドを使用している場合は、: (コロン) は不要です。 |
:q! | vi エディターを終了します。 編集バッファーは破棄されます。 ex エディターからこのサブコマンドを使用している場合は、: (コロン) は不要です。 |
Esc | テキスト入力または不完全なサブコマンドを終了します。 |
Ctrl-? | サブコマンドに割り込みます。 |
終了状況
以下の終了値が戻されます。
項目 | 説明 |
---|---|
0 | 正常に完了したことを示します。 |
>0 | エラーが発生したことを示します。 |
入力ファイル
入力ファイルは必ずテキスト・ファイルか、同様のファイルである必要があります。 ただし、ファイルの最後の行が不完全であってはなりません (つまり、ヌル文字が含まれていないことが必要です)。
.exrc ファイルは、ex コマンドが記述されたテキスト・ファイルである必要があります。
$HOME/.vi_history ファイルは、自動生成されるテキスト・ファイルで、最終行モード時のコマンドの履歴を記録します。
デフォルトでは、vi エディターはファイルから編集する行を読み取る際に、各行を vi エディター・コマンドとして解釈しません。