この記事では、Unixでviエディタがどのように機能するかを説明します。 Unixにはファイルの編集方法がたくさんあります。 画面指向のテキストエディタviを使用することは最良の方法の1つです。 このエディタを使用した後、コンテキスト内の行はファイル内のその他の行と一緒に編集できます。
VIMと呼ばれるviエディタの改良版も提供されます。 ここで、VIMはViImproved(VIの改良版)の略称です。
viは通常、Unixエディタのデファクトスタンダードと見なされています。
- すべてのUnixシステムで利用可能です。
- その実装は非常に似ています。
- リソースは少し必要です。
- edやexなどのその他のエディタよりもユーザーフレンドリーです。
viエディタを使用して、既存のファイルを編集したり、新規ファイルを最初から作成したりできます。 このエディタを使用して、テキストファイルを読み取ることもできます。
目次
viエディタを起動する
次の表には、viエディタを使用するための基本的なコマンドを示します。
番号 | コマンドと説明 |
1 | viファイル名 存在しない場合は、新規ファイルを作成します。存在する場合は、既存のファイルを開きます。 |
2 | vi -Rファイル名 既存のファイルを読み取り専用モードで開きます。 |
3 | viewファイル名 既存のファイルを読み取り専用モードで開きます。 |
以下のは、新規ファイルtestfileを作成する例です。(ファイルが現在の作業ディレクトリに存在しない場合)
$vi testfile
上記のコマンドは、以下の出力を生成します。
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]
カーソルの後の各行にチルダ(〜)が表示されます。 チルダは未使用の行を表します。 行がチルダで始まっておらず、空白に見える場合は、スペース、タブ、改行、またはその他の非表示の文字があることを意味します。
開いたファイルが処理を開始します。 続く前に、いくつかの重要な概念を説明します。
動作モード
viエディタを使用する場合、通常、次の2つのモードがあります。
- コマンドモード-このモードでは、ファイルの保存、コマンドの実行、カーソルの移動、行または単語の切り取り(プル)と貼り付け、検索と置換などの管理タスクを実行できます。 このモードでは、入力したものはすべてコマンドとします。
- 挿入モード-このモードを使用して、ファイルにテキストを挿入します。 このモードで入力された内容は入力とし、ファイルに配置されます。
viは常にコマンドモードで起動されます。 テキストを入力するには、挿入モードにする必要があり、iと入力するだけでいいです。 挿入モードを終了するには、Escキーを押して、コマンドモードに戻ります。
ヒント–現在のモードがわからない場合は、Escキーを2回押し、コマンドモードになります。 viエディタを使用してファイルを開きます。 最初にいくつかの文字を入力し、コマンドモードに入り、その違いを理解できます。
viを離れる
viを終了するコマンドは「:q
」です。コマンドモードで、「:q」を入力してから戻ります。 ファイルが変更されている場合、エディタは警告を表示し、終了することを許可しません。 このメッセージを無視し、保存せずにviを終了するには、コマンド「q!
」を使用します。これにより、変更を保存せずにviを終了できます。
エディタのコンテンツを保存するコマンドは「:w
」です。 上記のコマンドをquitコマンドと組み合わせて使用するか、「:wq
」を使用してreturnを実行できます。
変更を保存してviを終了する最も簡単な方法は、ZZ
(大文字)コマンドを使用することです。 コマンドモードで、ZZ
と入力します。 ZZ
コマンドは「:WQ
」コマンドと同じように機能します。
特定のファイル名を指定/宣言する場合は、「:w
」の後に指定できます。 例えば、処理中のファイルをfilename2という名前の別のファイル名として保存する場合は、「:w filename2
」と入力して戻ります。
ファイル内に移動する
テキストに影響を与えずにファイル内に移動するには、コマンドモードにする必要があります(Escキーを2回押します)。 次の表に、一回に1文字ずつ移動するために使用できるいくつかのコマンドを示します。
番号 | コマンドと説明 |
1 | k カーソルを1行上に移動します。 |
2 | j カーソルを1行下に移動します。 |
3 | h カーソルを左側の文字位置に移動します。 |
4 | l カーソルを右側の文字位置に移動します。 |
ファイル内に移動する場合には、以下の点を考える必要があります。
- viでは大文字と小文字が区別されます。 コマンドを使用する場合には、大文字と小文字の区別に注意してください。
- viのほとんどのコマンドは、操作を実行する回数から開始することできます。例えば、2jはカーソルを2行下に移動します。
viにあるファイル内に移動するその他の方法はたくさんあります。 コマンドモードにする必要があることを忘れないでください(Escキーを2回押します)。 次の表に、ファイル内に移動するためのいくつかのコマンドを示します。
以下は、ファイル内に移動するコマンドのリストです。
番号 | コマンドと説明 |
1 | 0或いは| 行の先頭にカーソルを置きます。 |
2 | $ 行の最後にカーソルを置きます。 |
3 | w カーソルを次の単語に置きます。 |
4 | b 前の単語にカーソルを置きます。 |
5 | ( 現在の文の先頭にカーソルを置きます。 |
6 | ) 次の文の先頭にカーソルを置きます。 |
7 | E 空白で区切られた単語の最後に移動します。 |
8 | { 次のセクションに移動します。 |
9 | } 前のセクションに移動します。 |
10 | [[ パーツを後ろに移動します。 |
11 | ]] パーツを前に移動します。 |
12 | n | 現在の行のn番目の列に移動します。 |
13 | 1G ファイルの最初の行に移動します。 |
14 | G ファイルの最後の行に移動します。 |
15 | nG ファイルのn行目に移動します。 |
16 | :n ファイルのn行目に移動します。 |
17 | fc cに進みます。 |
18 | Fc cに戻ります。 |
19 | H 画面の上部に移動します。 |
20 | nH 画面の上部からn行目に移動します。 |
21 | M 画面の中央に移動します。 |
22 | L 画面の下部に移動します。 |
23 | nL 画面の下部をn行目に移動します。 |
24 | :X コロンの後に数字が続くと、xで示される行番号にカーソルが置かれます。 |
制御コマンド
次のコマンドをControl Keyとともに使用して、次の表に示す機能を実行できます。
以下のは、制御コマンドのリストです。
番号 | コマンドと説明 |
1 | Ctrl + d 画面を1/2前に進めます。 |
2 | Ctrl + f 全画面を1画面前に移動します。 |
3 | Ctrl + b 全画面を1画面後に移動します。 |
4 | Ctrl + e 画面を1行上に移動します。 |
5 | Ctrl + y 画面を1行下に移動します。 |
6 | CTRL + u 画面を1/2ページ上に移動します。 |
7 | Ctrl + d 画面を1/2ページ下に移動します。 |
8 | Ctrl + b 画面を1ページ上に移動します。 |
9 | Ctrl + f 画面を1ページ下に移動します。 |
10 | CTRL + I 画面を更新します。 |
ファイルを編集する
ファイルを編集するには、挿入モードにする必要があります。 コマンドモードから挿入モードに入るにはいろいろな方法があります。
番号 | コマンドと説明 |
1 | i 現在のカーソル位置の前にテキストを挿入します。 |
2 | I 現在の行の先頭にテキストを挿入します。 |
3 | a 現在のカーソル位置の後にテキストを挿入します。 |
4 | A 現在の行の最後にテキストを挿入します。 |
5 | o カーソル位置の下にテキスト入力のため、新しい行を作成します。 |
6 | O カーソル位置の上にテキスト入力のため、新しい行を作成します。 |
文字を削除する
これは、開いたファイルの文字と行を削除するために使用できる重要なコマンドのリストです。
番号 | コマンドと説明 |
1 | X カーソル位置の下の文字を削除します。 |
2 | X カーソル位置の前の文字を削除します。 |
3 | dw 現在のカーソル位置から次の単語まで削除します。 |
4 | d^ 現在のカーソル位置から行頭まで削除します。 |
5 | d$ 現在のカーソル位置から行末まで削除します。 |
6 | D カーソル位置から現在の行の最後まで削除します。 |
7 | dd カーソルがある行を削除します。 |
上記のように、viのほとんどのコマンドは、操作を実行する回数から開始することができます。 例えば、2x
はカーソル位置の下の2文字を削除し、2dd
はカーソルがある2行を削除します。
先に進む前に、コマンドの練習をやってください。
コマンドを変更する
vi
の文字、単語、行を削除せずに変更できます。 以下のはそれに関わるコマンドです。
番号 | コマンドと説明 |
1 | cc 行の内容を削除して、挿入モードにします。 |
2 | CW カーソルの下の単語をカーソルから単語の小文字wの末尾に変更します。 |
3 | r カーソルの下の文字を置き換えます。 入力が置き換えられた後、viはコマンドモードに戻ります。 |
4 | R 現在のカーソルの下の文字から始まる複数の文字を上書きします。 上書きを停止するには、Escを使用します。 |
5 | s 現在の文字を入力した文字に置き換えます。 その後、挿入モードになります。 |
6 | S カーソルがある行を削除し、新しいテキストに置き換えます。 新しいテキストを入力した後、viは挿入モードに維持します。 |
コマンドのコピーと貼り付け
次のコマンドを使用して、ある場所から行または単語をコピーし、別の場所に貼り付けることができます。
番号 | コマンドと説明 |
1 | yy 現在の行をコピーします。 |
2 | yw カーソルが小文字のwにある文字から単語の最後まで現在の単語をコピーします。 |
3 | p コピーしたテキストをカーソルの後に置きます。 |
4 | P 選択したテキストをカーソルの前に置きます。 |
高度なコマンド
編集を簡素化し、viをより効果的に使用するための高度なコマンドがいくつかあります。
以下のは、高度なコマンドのリストです。
番号 | コマンドと説明 |
1 | J 現在の行を次の行に連結します。 numberjコマンドは多くの行を連結します。 |
2 | << 現在の行を1幅左に移動します。 |
3 | >> 現在の行を1幅右に移動します。 |
4 | 〜 カーソルで文字の大文字と小文字を切り替えます。 |
5 | ^G CtrlキーとGキーを同時に押すと、現在のファイル名と情報が表示されます。 |
6 | U 現在の行を、カーソルがその行に入る前の状態に戻します。 |
7 | u これは、ファイルの最後の変更を元に戻すのに役立ちます。 「u」をもう一度入力すると、再変更されます。 |
8 | J 現在の行を次の行に連結します。 |
9 | :f ファイル内の現在位置を%(パーセンテージ)で表示し、ファイル名(ファイルの総数)を表示します。 |
10 | :f ファイル名 現在のファイル名をfilenameに変更します。 |
11 | :w ファイル名 ファイル名を変更して、ファイルに書き込みます。 |
12 | :e ファイル名 ファイル名で別のファイルを開きます。 |
13 | :cd ディレクトリ名 現在のディレクトリ名をdirnameに変更します。 |
14 | :e# 開いている2つのファイルを切り替えます。 |
15 | :n Viで複数のファイルを開く場合は、「:n」を使用してシリーズの次のファイルに移動します。 |
16 | :p viで複数のファイルを開く場合は、「:p」を使用してシリーズの前のファイルに移動します。 |
17 | :N viで複数のファイルを開く場合は、「:N」を使用してシリーズの前のファイルに移動します。 |
18 | :rファイル ファイルを読み取り、現在の行の後に挿入します。 |
19 | :nrファイル ファイルを読み取り、n行目の後に挿入します。 |
単語と文字の検索
viエディタエディタでの検索には、string
とcharacter
の2種類があります。 文字列検索の場合、/
および?
コマンドを使用します。 これらのコマンドを開始すると、入力したコマンドが画面の最後の行に表示され、検索する特定の文字列を入力します。
これらの2つのコマンドは、検索が行われる方向のみが異なります-
- /はファイル内に、順次(下向き)に検索します。
- ?はファイルに、逆方向(上向き)に検索します。
n
コマンドとN
コマンドを使用して、前の検索コマンドをそれぞれ同じ方向または反対方向に繰り返します。 一部の文字に特別な意味があり、検索式の一部として含めるには、これらの文字の前にバックスラッシュ(**)を付ける必要があります。
番号 | 文字と説明 |
1 | ^ 行の先頭で検索します(検索式の先頭で使用します)。 |
2 | . 文字に一致します。 |
3 | * 0個以上前の文字に一致します。 |
4 | $ 行末で検索します。(検索式の最後で使用)。 |
5 | [ 一致または不一致の式のセットを開始します。 |
6 | < 単語の最後または先頭を検索するために、バックスラッシュでエスケープされた式に入れます。 |
7 | > これは、上記の「<」文字を確認するのに役立ちます。 |
文字検索では、行内を検索して、コマンドの後に入力された文字を検索します。 fおよびFコマンドは、現在の行の文字のみを検索します。 fは前向きに検索し、Fは後向きに検索し、カーソルは検索された文字の位置に移動します。
tコマンドとTコマンドは現在の行の文字のみを検索しますが、tに対しては、カーソルは文字の前の位置に移動し、Tは行の文字の後ろの位置を検索します。
コマンドの設定
次の:setコマンドを使用し、vi画面の外観を変更できます。 コマンドモードに入った後、「:set」と入力し、次のコマンドを入力します。
番号 | コマンドと説明 |
1 | :set ic 検索する時に大文字と小文字を区別しません。 |
2 | :set ai 自動インデントを設定します。 |
3 | :set noai 自動インデントをキャンセルします。 |
4 | :set nu 左側に行番号が表示されている行です。 |
5 | :set sw ソフトウェアタブの幅を設定します。 例えば、次のコマンドを使用して、シフト幅を4に設定できます。「:set sw = 4」 |
6 | :set ws wrapscanが設定されているが、ファイルの下部に単語が見つからない場合は、最初から検索します。 |
7 | :set wm このオプションの値がゼロより大きい場合、エディタは自動的に「改行」します。 例えば、ラッパーマージンを2文字に設定するには、「:set wm = 2」を入力します。 |
8 | :set ro ファイルタイプを「読み取り専用」に変更します。 |
9 | :set term 端末タイプを印刷します。 |
10 | :set bf 入力中の制御文字を破棄します。 |
コマンドを実行する
viはエディタでコマンドを実行できます。 コマンドを実行するには、コマンドモードに入り、「:!
」を入力します。
例えば、このファイル名でファイルを保存する前にファイルが存在するかどうかを確認する場合は、「:!ls
」を入力します。 画面にls
の出力が表示されます。
任意のキー(またはコマンドのエスケープシーケンス)を押して、viセッションに戻ることができます。
テキストを置換する
replaceコマンド(:s/
)を使用して、ファイル内の単語または単語グループを速めに置き換えることができます。 テキストを置換する構文は次のとおりです。
:s/search/replace/g
gは全局を表します。このコマンドの出力結果は、カーソル行のすべての一致を変更することです。
注意事項
次の点は、viをうまく使用するのに役立ちます。
- コマンドを使用するには、コマンドモードにする必要があります。 (Escキーを2回に押して、コマンドモードになります。)
- これらのコマンドは慎重に使用する必要があります。 これらは大文字と小文字を区別します。
- テキストを入力するには、挿入モードにする必要があります。
コメントを残す