5.3. エディタについて -viコマンド-
5.3. エディタについて -viコマンド-
ファイルの操作としては、コピーや移動の他に、ファイル自体の読み書きというものがあります。ファイルを読む方法については既に説明しましたので、ここではファイルを作成するためのエディタについて説明します。
5.3.1. エディタの種類
ファイルを編集するためのエディタにはいくつかの種類がありますが、主なものを以下に列挙します。
- vi
ほぼ全てのディレクトリビューションにおいて、標準でインストールされるエディタで、古くから使われています。ただしviは操作性にクセがあるため、ややとっつきにくい面があるのは否めません。なお、CentOSでインストールされるviは本来のviではなく、利便性を向上したvim(Vi iMproved)となっています。もともとはコンパクトだったviも、現在ではかなり巨大化しています。
- Emacs
Emacsは非常に機能が豊富なエディタです。このEmacsと前出のviがUNIX世界における2大エディタです。本家のEmacs以外に、GUI機能を拡張したXEmacsというものもあります。ベースの機能は同じであるため、Emacs一派のことをEmacsenと称することがあります。
- nano/pico
昨今のviは巨大化しつつあるということと、操作性が現代のものにそぐわないという理由から作られた小型軽量のエディタです。操作性にviのようなクセがないため、viよりも習得しやすいかもしれません。
- gedit
GUIベースのエディタです。Windowsでいうところの notepad.exe(メモ帳)に近い操作系を採用しているため、わかりやすいと思います。前出のエディタと違い、geditはGUI環境下でないと使えません。
5.3.2. viエディタの操作
viエディタには、
- コマンドモード(vi内部の各種キー操作ができます)
- 入力モード(文字を入力/削除できます)
の2つのモードがあります。起動時(viコマンド実行時)にはコマンドモードになっています。
コマンドモード時に使用できるキー操作には非常に多くの種類がありますが、ここでは 特に使用頻度が高いと思われるものを紹介します。
ESC |
コマンドモードに移行 |
i |
現在のカーソル位置の前に文字を挿入(→入力モードに移行) |
I |
カーソルを行頭に移動して文字を挿入(→入力モードに移行) |
o |
現在行の下に新たな行を挿入して文字を挿入(→入力モードに移行) |
O |
現在行の上に新たな行を挿入して文字を挿入(→入力モードに移行) |
s |
現在のカーソル位置の文字を削除して文字を挿入(→入力モードに移行) |
S |
現在行を削除して文字を挿入(→入力モードに移行) |
C |
現在のカーソル位置から行末までを削除して文字を挿入(→入力モードに移行) |
a |
現在のカーソル位置の後ろに文字を挿入(→入力モードに移行) |
x |
現在のカーソル位置の文字を削除 |
dd |
現在のカーソル位置の行を削除 |
n |
文字列検索時に、次の検索候補を表示する |
:w |
保存 |
:q |
終了 |
:q! |
保存せず終了 |
:wq |
保存して終了 |
数字dd |
現在のカーソル位置の行から数字行分削除 |
:/文字列 |
上から文字列を検索(nで次の候補へ移動) |
: ?文字列 |
下から文字列を検索(nで次の候補へ移動) |
:数字 |
数字の行へ跳ぶ |
:e! |
前回保存した状態に戻る |
:w! |
所有者であれば書き込み権限がなくても書き込める |
%s/置換元文字列/置換先文字列/g |
ファイル内の指定した文字列を全て置換する |
:set number | 行数を表示する |
:set nonumber | 行数表示を解除する |
gg | ページ先頭に戻る |
G | ページ最終行へ飛ぶ |
Ctrl+f,Ctrl+b | ページ単位で進む(f)、ページ単位で戻る(b) |
【動画説明】
ここでは、example.txtというファイルを作成し、実際に文字を入力して保存してみましょう。
$ vi example.txt
"これはテストファイルです。"という文字を入力モードで入力します。保存したら、catコマンドで内容を確認してみましょう。
$ cat example.txt
これはテストファイルです。
vimtutorというコマンドを実行すると、viコマンドの日本語チュートリアルプログラムを参照できます。またviewコマンドでは読み込み専用でファイルを開くことができます。操作に慣れてきたら是非挑戦してみてください。
【問題】
1. test.txtというファイルに「これはテストファイルです。」と記述して保存し、catコマンドで確認してみて下さい。
2. test.txtの「ファイル」を「文字列」にコマンドモードのまま置換してみましょう。