viはLinuxの標準のテキストエディタを起動するコマンドだ。Linuxを使う上で、viエディタを使うケースは非常に多い。
このページでは基本的なviエディタの使い方を解説する。ぜひLinuxユーザーとしてのスキルアップに役立ててほしい。
目次
- 1 viとは
- 2 演習の準備
- 3 viコマンドの基本
- 4 viエディタの基本的な使い方
- 4.1 入力モードのキー一覧
- 4.2 コマンドモードのキー一覧
- 4.3 入力モードとは
- 4.4 iキー:現在のカーソル位置に文字を挿入する
- 4.5 Rキー:現在のカーソル位置から文字を上書きする
- 4.6 Aキー:現在のカーソル行の最後に文字を追加する
- 4.7 Oキー(大文字):現在のカーソル行の前の行に行を挿入する
- 4.8 oキー(小文字):現在のカーソル行の次の行に行を挿入する
- 4.9 入力モードの注意点
- 4.10 コマンドモードとは
- 4.11 xキー:1文字削除
- 4.12 yyキー:1行コピーしクリップボードへ格納する
- 4.13 ddキー:1行切り取りクリップボードへ格納する
- 4.14 :qキー:viを閉じる
- 4.15 :q!キー:ファイルを破棄してviを閉じる
- 4.16 :wキー:viは終了しないでファイルを保存する
- 4.17 :wqキー:ファイルを保存しviを終了する
- 4.18 viでファイルを新規作成する
- 5 関連項目
viとは
Linuxを含むUnixベースのOSで利用できるテキストエディタだ。
世の中にマウスのようなポインティングデバイスがまだ普及しておらず、キーボード入力が主流だった時代からある。
Linuxにはプリインストールされているため、スタンダードなエディタとなっている。
演習の準備
今回は流れにそって実際に演習できるように構成した。
実際に演習する場合は、次のコマンドを実行し、はじめに演習するためのファイルを作成しておこう。
$ mkdir ./work/
$ echo '### 初期設定ファイル ###' >work/config.php
$ echo >>work/config.php
$ echo '# ワークディレクトリ' >>work/config.php
$ echo '$workdir = "/home/work/";' >>work/config.php
$ echo '# 管理者アカウント' >>work/config.php
$ echo '$admin = "wolker";' >>work/config.php
$ echo '# デバッグモード' >>work/config.php
$ echo '$debugmode = "Yes";' >>work/config.php
viコマンドの基本
viコマンドの基本動作
viは、Linuxの標準のエディタを起動するコマンドだ。
基本的な書式は次のようになる。
$ vi ファイル名
ファイル名で指定しているファイルが存在していれば、そのファイルを開く。
workディレクトリのconfig.phpという名前のファイルをviで開く場合は、次のとおりだ。
$ vi work/config.php
workディレクトリ内のconfig.phpをviエディタで開く。
viエディタでworkディレクトリ内のconfig.phpが開かれた。
はじめは、編集することができないコマンドモードで始まる。
この状態では、カーソルキーを動かして閲覧ができる。
編集前に編集箇所を確認しておくといいだろう。
viエディタの基本的な使い方
viエディタは入力モードに移るためのキーと、切り取りやコピーをするコマンドモードのキーがある。
詳細は後から説明するが、まずは一覧で見ていこう。
入力モードのキー一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
iキー
現在のカーソル位置に文字を挿入する
Rキー
現在のカーソル位置から文字を上書きする
Aキー
現在のカーソル行の最後に文字を追加する
Oキー(大文字)
現在のカーソル行の前の行に行を挿入する
oキー(小文字)
現在のカーソル行の次の行に行を挿入する
コマンドモードのキー一覧
xキー
1文字削除
yyキー
1行コピーしクリップボードへ格納する
ddキー
1行切り取りしクリップボードへ格納する、または1行削除
pキー
クリップボードの内容をカーソル行の下の行に貼り付ける
:qキー
ファイルを閉じる。変更があった場合はメッセージが表示され、閉じることができない
:q!キー
ファイルを閉じる。変更があった場合は変更を破棄する
:wキー
ファイルを保存する。viは終了しない
:wqキー
ファイルを保存しviを終了する
それぞれ詳細を紹介していく。
入力モードとは
文字を入力する場合は、入力モードに移るキーを入力する。
入力モードに移るキーは次の5つである。
iキー:現在のカーソル位置に文字を挿入する
現在のカーソル位置に文字を挿入する場合は「i」キーを入力する。
$workdir = "/home/work/";を$workdir = "/home/work1/";に変更してみよう。
workの次の/へカーソルを合わせてiキーを押すと現在のカーソル位置に文字を挿入する編集モードになる。
「1」のキーを押す。
$workdir = "/home/work1/";
に変更された。
ESCキーを押し、コマンドモードに戻ろう。
Rキー:現在のカーソル位置から文字を上書きする
現在のカーソル位置から文字を上書きする場合は「R」(大文字)キーを入力する。
$admin = "wolker";を$admin = "worker";に変更してみよう。
lへカーソルを合わせてR(大文字)キーを押すと現在のカーソル位置から文字を上書きする編集モードになる。
「r」(小文字)のキーを押す。
今度は挿入されずに、lがrに上書きされ、
$admin = "worker";
に変更された。
ESCキーを押し、コマンドモードに戻ろう。
Aキー:現在のカーソル行の最後に文字を追加する
現在のカーソル行の最後に文字を追加する場合は「A」(大文字)キーを入力する。
管理者アカウントの後ろに続けてnot useと入力してみよう。
# 管理者アカウントのどこでも構わないのでカーソルをあわせて
A(大文字)キーを押すと行の最後にカーソルが移動し編集モードになる。
そのままnot useと入力できる。
# 管理者アカウントの後ろにnot useが入力された。
ESCキーを押し、コマンドモードに戻ろう。
Oキー(大文字):現在のカーソル行の前の行に行を挿入する
現在のカーソル行の前の行に行を挿入する場合は「O」キーを入力する。
# 管理者アカウントnot useの上に空白行を挿入してみよう。
# 管理者アカウントnot useのどこでも構わないのでカーソルをあわせてO(大文字)キーを押す。
上の行に1行挿入された。
ESCキーを押し、コマンドモードに戻ろう。
oキー(小文字):現在のカーソル行の次の行に行を挿入する
現在のカーソル行の次の行に行を挿入する場合は「o」キーを入力する。
$admin = "worker";の上に空白行を挿入してみよう。
$admin = "worker";のどこでも構わないのでカーソルをあわせてoキー(小文字)を押す。
下の行に1行挿入された。
ESCキーを押し、コマンドモードに戻ろう。
入力モードの注意点
入力モードは、ESCキーを押すことで、コマンドモードに戻る。
上記のように、入力したらESCキーを押すことを忘れないように意識しよう。
上下左右へのカーソルの移動、delete、BackSpaceなどの文字をしようとすると、想定外の文字が入力される。
これらのことは入力モードではできない。
間違えて入力した場合は、そのままコマンドモードに移行し、コマンドモードで削除などの操作を行おう。
コマンドモードとは
コマンドモードでできることはたくさんある。
今回は、使用頻度の高い文字列の編集とviを閉じる操作を紹介する。
xキー:1文字削除
1文字を削除する時は「x」キーを入力する。
$debugmode = "Yes";をesを削除し$debugmode = "Y";に変更してみよう。
eにカーソルをあわせる。
xキーを2回押す。
esの2文字が削除された。
yyキー:1行コピーしクリップボードへ格納する
1行をコピーしクリップボードへ格納する時は「yy」と入力する。
$admin = "worker";を次の行にもコピーしてみよう。
# $admin = "worker";のどこでも構わないのでカーソルをあわせてyyと入力するとこの行がクリップボードに入力される。
クリップボードの文字を貼り付ける時は、貼り付け先の前の行にカーソルをあわせて「p」キーを入力する。
# $admin = "worker";のどこでも構わないのでカーソルをあわせてpと入力する。
先ほどクリップボードに格納された文字列が貼り付けされた。
ddキー:1行切り取りクリップボードへ格納する
1行を切り取り、クリップボードへ格納する時は「dd」と入力する。
### 初期設定ファイル ###をファイルの最終行へ移動してみよう。
### 初期設定ファイル ###のどこでも構わないのでカーソルをあわせてddと入力する。
この行が切り取られクリップボードに入力される。
クリップボードの文字を貼り付ける時は、貼り付け先の前の行にカーソルをあわせて「p」キーを入力する。
最終行へ移動しどこでも構わないのでカーソルをあわせてpと入力する。
先ほどクリップボードに格納された文字列が貼り付けされた。
:qキー:viを閉じる
viを閉じる時は「:q」と入力する。
変更がある場合は、警告が表示され、終了できない。
今回は変更があったので、「E37: No write since last change (add ! to override)」の警告が表示され、viエディタが終了しない。
:q!キー:ファイルを破棄してviを閉じる
ファイルを破棄してviを閉じる時は「:q!」と入力する。
保存されずにviが閉じられ、コマンドプロンプトの画面に戻る。
ファイルの更新日付を確認してみよう。
$ ls -l work
変更内容は保存されず破棄されたため、ファイル日付が変更されていないことが確認できた。
演習のためにviでファイルを開いておこう。
$ vi work/config.php
:wキー:viは終了しないでファイルを保存する
ファイルを保存する時は「:w」と入力する。
保存されるだけで、viは閉じない。
確認のメッセージ「"work/config.php" 8 lines, 180 characters written」のようにファイル名と書き込んだ行数と文字数が表示される。
:wqキー:ファイルを保存しviを終了する
ファイルを保存しviを閉じる時は「:wq」と入力する。
保存されてviが閉じられ、コマンドプロンプトの画面に戻る。
$ ls -l work
ファイル日付が変更されている。
viでファイルを新規作成する
viで新規ファイルを新規作成する時は、作成したいファイル名を指定するだけでよい。
$ vi ファイル名
ファイル名で指定しているファイルが存在していなければ、ファイルが新規作成される。
ディレクトリも存在していないのであれば、作成する。
ファイルを保存する動作をするまでは、実際にファイル、ディレクトリが作成されない。
workディレクトリにnewfile.phpという名前のファイルをviで新規作成する場合は、次のとおりだ。
$ vi work/newfile.php
テキストファイルを新規作成した。
ここまでで、演習は終了だ。
:qキーでそのまま終了しよう。
関連項目
ファイルの内容を変更するのではなく、閲覧、確認するだけなら次のコマンドを使用する。
cat
ファイルの内容を表示する。
more
ファイルの内容を1画面毎に表示する。Enterキーで次の行を順次表示する。
less
ファイルの内容を表示する。上下カーソルキーでスクロールができる。
まとめ
単純なテキストファイルの変更ならGUIベースのテキストエディタを使用したくなるが、アクセス制限のかかったファイルや設定ファイルなどは、テキストエディタでは開くまでの手続きが面倒なケースもある。
その点、CUI環境のviエディタであれば、Linuxコマンドベースでアクセスできるため、アクセスしやすくなる場合が多い。
なによりもLinuxはGUIだけではなく、キーボード入力ベースのCUIでの操作を行うことが非常に多い。サーバーマシンなどはCUIでしか動かさない場合もある。
そのようなことから、viエディタを使うことがスタンダードでありWebや書籍でも利用するように解説しているケースも多い。
しかし、GUIベースのテキストエディタと違い少し操作に癖のあるエディタのために初心者は混乱するかもしれない。
viエディタに慣れるまで時間がかかったというエンジニアも多い。
基本となるテキストエディタなので、ぜひ参考にしてほしい。
初めまして、Linuxの超初心者です。
日本語化のために「ファイルA」の途中に「ファイルB」スクリプトを全コピーして書き込みたいのですが、Viを使っての方法、色々調べましたが、さっぱり判りません。ご教授戴けましたら幸いです。宜しくお願いいたします。
いつもご愛読ありがとうございます。
viエディタではctrl + vがうまくいかないため、
入力モードにしてから、SHIFT + Insert を押してみてください。
SHIFT + Insertでクリップボードからテキストを貼り付けることができます。
宜しくお願い致します。
ためになる記事ありがとうございます
1点だけ,記事の目次および小項目のタイトルで:qコマンドと:q!コマンドが両方とも:qキーとなっており,また:wコマンドと:wqコマンドもタイトルが両方とも:wキーとなっているので,修正していただけると嬉しいです!
いつもご愛読ありがとうございます。
記事に反映させていただきました。
ご指摘ありがとうございました。