viコマンド詳細説明
viコマンドはUnix環境でよく使われる重要なコマンドで、フルスクリーンモードで1つまたは複数のファイルを編集できます。 vi の実行時にファイルが指定されていない場合、vi コマンドは名前のない空の作業ファイルを自動的に生成します。指定したファイルが存在しない場合は、指定したファイル名で新規ファイルが作成されます。ファイルへの変更が保存されていない場合、vi コマンドは元のファイルの内容を変更しません。
注: vi コマンドは編集されたファイルをロックしないため、複数のユーザーが同時にファイルを編集でき、最後に保存されたファイルのバージョンは保持されます。
以下は、vi コマンドで使用されるオプションとその意味です:
-c サブコマンド 指定されたファイルを編集する前に、指定されたコマンドのサブコマンドを実行します。
-r filename 指定されたファイル filename を復元します。
- R 指定されたファイルを読み取り専用モードでエディターに配置するため、ファイルへの変更は保存されません。
-ynumber 編集ウィンドウのサイズを行数に設定します。
vi 編集のモードは以下の 3 つです:
コマンドモード vi が入るモードです。このモードでは、ユーザーはさまざまなサブコマンドを入力して、 * 行の削除、行の貼り付け、次の単語への移動、別の行への移動などの操作を実行できます。
テキスト入力モード このモードでは、行の内容を変更したり、新しい行を追加したりできます。コマンド モードで、a、i、または c を入力してテキスト入力モードに入り、Esc キーを押してコマンド モードに戻ります。
コマンド項目モード このモードでは、サブコマンドを通じてより多くのパラメーターを入力できます。たとえば、w サブコマンドにはファイル名の入力が必要で、「/」サブコマンドには検索語の入力が必要です。ユーザーは Esc キーを使用してコマンド モードに戻ります。
以下はセルフコマンドモードで実行します
同一行上を移動するセルフコマンドは、カーソルを1マス左に移動します。
l カーソルを 1 つ右に移動します。
j カーソルを 1 つ下に移動します。
k カーソルを 1 つ上に移動します。
w 次の小さな文字の前にカーソルを移動します。
W 次の大きな文字の前にカーソルを移動します。
b カーソルを前の小さい文字の前に移動します。
B カーソルを前の大きな文字の前に移動します。
e カーソルを次の小さな文字の後ろに移動します。
E カーソルを前の大きな文字の後ろに移動します。
fcはカーソルを同じ行の次のc文字に移動します。
Fcはカーソルを同じ行の前のc文字に移動します。
tc は、同じ行の次の文字 c の前のスペースにカーソルを移動します。
Tc 同じ行の前の文字 c の後のスペースにカーソルを移動します。
数値| カーソルを数値列に移動します。
以下はコマンドモードで行間を移動するためのサブコマンドです
+またはEnterでカーソルを次の行の空白以外の最初の文字に移動します。
- カーソルを前の行の空白以外の最初の文字に移動します。
0 カーソルを現在の行の最初の文字に移動します。
$ 現在行の最後の文字にカーソルを移動します。
H カーソルを画面の一番上の行に移動します。
L カーソルを画面の一番下の行に移動します。
M カーソルを画面中央に移動します。
以下はコマンドモードで画面表示を変更するためのサブコマンドです
z- 現在行を画面の最終行として設定し、画面を再表示します。
z. 現在の行を画面の中央行に設定し、画面を再表示します。
Ctrl+lで画面の現在の内容を再表示します。
/pattern/z- パターンの次の位置を見つけて、現在の行を画面の最後の行に設定します。
以下はコマンドモードでページを表示する際に使用するサブコマンドです
Ctrl+fで1ページ前にスクロールします。
Ctrl+dで半ページ前にスクロールします。
Ctrl + b 1ページ前にスクロールします。
Ctrl + u 半ページ前方にスクロールします。
Ctrl + eで画面を1行下にスクロールします。
Ctrl + y で画面アイテムを 1 行上にスクロールします。
以下はコマンドモードで文字列を検索するために使用されるサブコマンドです
/pattern は、指定されたパターンを逆方向に検索します。ファイルの末尾に到達した場合は、先頭から開始します。
? pattern は、指定されたパターンを前方に検索します。ファイルの先頭に到達すると、末尾から開始します。
n 最後に定義された検索を最後に指定された方向に再度実行します。
N 最後に指定した方向と逆方向に、最後に定義した検索を再度実行します。
/pattern/+number pattern を含む行の次の数行でカーソルを停止します。
/pattern/-number pattern を含む行の前の数行でカーソルを停止します。
% 一致する「()」または「{}」に移動します。
以下は、テキスト入力モードでテキストを入力するために使用されるサブコマンドです(ユーザーはいつでもEscapeを押してコマンドモードに戻ることができます):
a カーソルの後ろからテキストの入力を開始します。
Aさんは行末からテキストの入力を開始します。
iカーソルの前からテキストの入力を開始します。
行頭の最初の空白以外の文字の前にテキストを入力します。
oカーソルがある行の後に空行を挿入します。
Oカーソルがある行の前に空行を挿入します。
以下は、コマンド モードでテキストを変更するために使用されるサブコマンドです (ユーザーはいつでも Esc キーを押してコマンド モードに戻ることができます):
cc または S で行全体を変更します。
C 行のカーソル位置以降の部分を変更します。
cwはカーソルのある単語を変更します。
ddは現在の行を削除します。
D カーソルがある行のカーソル以降の内容を削除します。
dwはカーソルのある単語を削除します。
J この行の末尾に次の内容行を追加します。
rcは光のシンボルがある文字をcに置き換えます。
Rはこの行の内容を上書きします。
u最後の変更を元に戻します。
xはカーソルのある文字を削除します。
~ カーソル下の文字の大文字と小文字を変更します。
最後の操作を繰り返します。
<<現在の行を左に移動します。
>>現在の行を右に移動します。
以下はファイル内のテキストをコピーする際に使用するワードコマンドです
p カーソルがある行の下の行までバッファの内容を取得します。
P カーソルがある行の上の行までのバッファの内容を取得します。
"bd 有名バッファ b のテキストを削除します。
"bp 有名バッファ b のコンテンツを投稿します。
Yyは現在の行をバッファに入れます。
Yは現在の行をバッファに入れます。
Yw はカーソル下の単語をバッファに入れます。
以下はファイルを保存するためのサブコマンドです
:w 変更されたファイルを書き戻します。
:w filename filename が存在しない場合、変更したファイルを file filename として保存します ファイル filename が存在する場合、エラーが報告されます。
!w filename If file filename が存在する場合は、変更したファイルを file filename として保存します。
以下は、vi で編集した複数のファイルを切り替えるために使用されるサブコマンドのリストです
:n編集を開始 vi がアクティブ化される ファイルリストの次のファイル。
:n filenames は編集する新しいファイルリストを指定します。
現在のファイルと別のファイルを切り替えるために使用されるサブコマンドは以下にリストされています:
:e filename filename を使用して vi をアクティブ化します (別のファイル filename を vi にロードします)。
e! 現在のファイルに変更がある場合は、以前の変更を破棄します。
:e+filename filename を使用して vi を起動し、ファイルの末尾から編集を開始します。
:e+number filename filename を使用して vi を起動し、行番号から編集を開始します。
:e# 別のファイルの編集を開始します。
以下は、このファイルに他のファイルコードを追加するために使用されるサブコマンドです:
:r filename は、filename ファイルを読み取り、その内容を現在のファイルに追加します。
:r ! コマンドはコマンドファイルを実行し、その出力を現在のファイルに追加します。
以下はviの他のサブコマンドです
ctrl+gで編集中のファイルの情報を取得します。
:sh は sh を開始し、exit または ctrl+d を使用して sh から戻ることができます :! コマンドはコマンドを実行します。
最後の :! コマンド サブコマンドを再実行します。
:q は vi を終了します。ユーザーが編集したファイルに変更を加えた場合、システムはユーザーに q コマンドを使用して終了させません。
:q! ファイルに変更があるかどうかに関係なく、vi を終了します。
ZZ or:wq 変更をファイルに保存して vi を終了します。
ユーザーは特別なファイル .exrc で特別な vi コマンドを定義できます。 vi でこれらのコマンドを使用する場合は、
コマンドの前にコロン (:) を追加する必要があります。
——————————————————-
viのパターン
viは昔に書かれたプログラムです。当時のキーボードには、今日私たちが慣れ親しんでいるほど多くのファンクション キーがありませんでした。したがって、vi は文字と ESC を入力することによってテキストの入力と変更を制御するように設計されています。
これを残念に思う人もいるかもしれませんが、すべての機能を実行するためにキーボード上の手の位置を変える必要がないことがわかるでしょう。その結果、入力が速くなります。
インタラクティブな全画面編集作業を完了するために、vi には 3 つのモードがあります。挿入モードはテキストを入力するために使用されます。挿入モードでは、入力した文字は画面に表示され、ファイルに保存されます。コマンド モードは、ほとんどの編集機能に使用されます。コマンド モードでは、すべての入力により、テキストに直接移動するのではなく、カーソルの移動、テキストの一部の削除、テキストのコピーなどの特定の応答が生成されます。 3 番目のモードは、検索、グローバル置換、複数ファイルの処理などの追加機能を実行することです。このモードは元のエディターに基づいています。
viを起動する
viを起動すると、デフォルトのモードはコマンドモードになります。以下の手順に従って試してみてください: プログラム名を入力して vi を開始します:
$ vi
次のような内容が表示されます:
~~~~~~~~~~~~~~~ ~~~~ ~~~~~~空のバッファ
i–挿入
ここで、「i」を入力して挿入モードに入ります。文字「i」はエコーされません。これ以降に入力した内容はすべてキャッシュに表示されます。それでは、テキストを入力してみましょう。 例にある単語は、孫子の「兵法」の英語版からのものです。この例では、カーソル位置に下線が引かれていることに注意してください。
賢明であれば、指揮官は状況の変化を認識し、機敏に行動することができ、誠実であれば、部下は賞罰の確実性に疑いを持たず、人類を愛し、他者に同情し、彼らの功績を高く評価するでしょう。勇気があれば、彼はためらうことなく機会をつかむことによって勝利を収めます、厳格であれば、彼らは彼に畏敬の念を抱き、罰を恐れるために訓練されます…「将軍が勇気がなければ、彼はそうなるでしょう。」疑いを克服することも、素晴らしい計画を立てることもできません。'~~~~~~~~~~~~~~~~
Esc–キャンセル
入力が終わったら、Esc キーを押してコマンド モードに戻ります。 (すでにコマンド モードになっている場合は、Esc キーを押すとホーン音が聞こえます。) Esc キーを押すと、未完了のコマンドが取り消され、挿入モードが終了します。 Esc キーを押すと、カーソルは最後に入力した文字の下に残ります。
残念ながら、現在どのモードにいるのかを示す明らかな兆候はありません。しかし、現在どのモードにいるのかを知る簡単な方法があります。キーを押すと、対応する文字が画面に表示される場合は挿入モードになり、それ以外の場合はコマンド モードになります。現在どのモードであるかわからない場合は、Esc キーを 2 回押してホーンの音を聞いて、コマンド モードであることを確認します。
カーソルの移動と簡単な編集
基本的なカーソル移動コマンドを見てみましょう。指を訓練して、今後必要なコマンドを自動的に実行できるようにしましょう。
最も重要な移動コマンド
カーソルの移動に影響を与えるコマンドがいくつあるか見てみましょう。
hh – カーソルを左に移動します
まず、h を 5 回押して、カーソルを 5 位置左に移動します (画面上に h が表示されている場合は、Esc キーを押し忘れているはずです)。カーソルは「計画」の「p」の下にあるはずです (以下の例を参照)。
賢明であれば、指揮官は状況の変化を認識し、誠実であれば、部下は報酬の確実性を疑うことはありません。人道的であれば、彼は人類を愛し、他者の勤労を評価し、勇気があれば、躊躇せずに機会を捉えて勝利を収めます。沈宝熙は…「将軍に勇気がなければ、疑いを克服することも、偉大な計画を立てることもできないだろう。」~~~~~~~~~~~~~~~
kk–移動上カーソル
それでは、kを5回押してカーソルを5行上に移動してみましょう。おそらく、ショートカットがあるはずだと考えたほうがよいでしょう。簡単な方法は次のとおりです。実行したいアクションの前に数字を入力します。 5k を押すと、k を 5 回押したのと同じ結果が得られます。カーソルは「he」の「e」の下にあるはずです。
賢明であれば、指揮官は状況の変化を認識し、機敏に行動することができ、誠実であれば、部下は賞罰の確実性に疑いを持たず、人類を愛し、他者に同情し、彼らの産業に感謝するでしょう。勇気があれば、彼はためらうことなく機会をつかむことによって勝利を収めます、厳格であれば、彼らは彼に畏敬の念を抱いており、罰を恐れているので、彼は言いました。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これらの機能を使用する場合、いくつかの制限があります。たとえば、h または l を使用してカーソルをテキスト行の先頭または末尾を超えて移動すると、カーソルは先頭または末尾に留まり、ホーンが鳴って注意を促します。
他にhとkに似た人はいますか?表 3.2 を見てください。それらに慣れるための最良の方法は、それらを頻繁に使用することです。
表 3.2. 一般的な矢印キー
コマンドの移動
h 左 1 文字
j 次の行
k 前の行
l 右 1 文字
w, W 前の単語 (W は句読点を無視します)
b, B 次の単語 ( B 句読点を無視します)
$ 行末まで
^ 行頭の最初の空でない文字
0 行頭
G バッファーの先頭
nG n 行目
いくつかあります大文字と小文字のコマンドの違い。小文字は通常、句読点で「単語」を区別しますが、大文字は句読点を無視します。
最も重要な編集プログラム
最も単純で最も一般的に使用される編集プロセスを見てみましょう:
改訂 間違いを犯さない人はいません。したがって、遅かれ早かれ、入力したテキストを変更する必要がある状況に遭遇するでしょう。ワードプロセッサに費やされる時間のほとんどは、実際には新しいものを入力するのではなく、修正に費やされます。したがって、簡単に変更する方法を知っておくことが重要です。
x – 文字を削除する テキストを削除する最も簡単な方法は、x を使用することです。このコマンドの結果、カーソルが置かれている文字が消え、次のテキストが左に移動します。削除する文字が行の最後の文字である場合、カーソルが存在しない文字の下に留まらないように、カーソルは 1 つ左に移動します。それ以上言葉がない場合は、クラクションが鳴ります。
d – オブジェクトの削除 このコマンドの右側には特定のテキスト オブジェクトも必要です。テキスト オブジェクトはテキストの一部です。その右側に接続されている文字は、カーソルの動きを制御する文字です。たとえば、w は 1 単語進むことを意味し、dw は次の単語を削除します。 5w は 5 単語進むことを意味し、d5w はそれらを削除します。
dd – 行を削除 最もよく使用される d シリーズ コマンドの 1 つ。前と同様に、5dd は 5 行を削除します
D – 大文字全体を削除します D は、カーソルから行末までを削除するために使用されます。 d$と同じ効果。
u–回復 後悔したいですか?削除を元に戻すだけでなく、すべての編集作業を元に戻します。
– 繰り返し編集作業を繰り返します。