Powered by SmartDoc

テキストエディタvi

viとは

vi(6)はどんなUNIXでも必ず利用できるテキストエディタです。GUIのエディタに慣れた人には取っつきづらい面もありますが、長年使われてきた歴史のあるテキストエディタで、最初は取っつきにくいかもしれないが、コマンドをうまく使えば効率的なファイル編集ができるようになります。現在の多くのUNIX系OSではviの代わりにその上位互換プログラムのvimが使われています。なお、UNIX系OSではvi以外のエディタにはEmacsがあります。

viが最近のテキストエディタと大きく異なりモードという概念がある。viのモードは文字入力の挿入モード、編集作業用のコマンドモードの二つがあり、viを利用するときは、今どのモードで作業しているのかを意識しなければならない。

どのモードであっても ESCキーを押すとコマンドモードに移行し、 i、a、o、Oキーを押すと挿入モードに移行する。

※もし、今どのモードなのかが分からなくなったら ESCキーを押してコマンドモードに移行すればよい。

  1. visual editorの略

viの起動

図6.1[viの起動]のようにコマンド名に続けて編集したいファイル名を入力すれば、viが起動する。起動直後のモードはコマンドモードである。

viの起動
$ vi 編集するファイル名
または
$ vim 編集するファイル名

vimの使い方を練習するvimtutorコマンドがある。

挿入モードへ移行

文字を入力するには表6.1[挿入コマンド]のいずれかのコマンドをコマンドモードで入力し、挿入モードへ移行するればよい。挿入モードへ移行したあとのキー入力はファイルへの文字入力として扱われる。

挿入コマンド
コマンド 挿入位置 コマンド 挿入位置
i カーソル位置 I 行頭
a カーソルの右側 A 行末
o カーソル行の下 O カーソル行の上

i、a、oはそれぞれinsert、append、openの頭文字です。

修正・変更コマンド

表6.2[修正・変更コマンド]のコマンドでファイルの修正、変更する。修正したい部分をすぐに消せるので便利である。

修正・変更コマンド
コマンド 動作
s カーソルの文字を消し、挿入モードに
S カーソル行のすべての文字を消し、挿入モードに
r カーソル位置の一文字のみ変更し、挿入モードに
R カーソル以降の文字を変更
cw カーソル上の単語を変更
c$ カーソル位置から行末までを変更

s、r、c、wはそれぞれsearch、replace、change、wordの頭文字。$は行末を意味する。

カーソル移動コマンド

一般的なエディタと同様にカーソルキーで動かせるがviはもともとhjklの各キーでもカーソルを動かしていた。

表6.3[カーソル移動キー]はコマンドモードでのviのカーソル移動コマンドです。

カーソル移動キー
キー 方向 キー 方向 キー 方向 キー 方向
h 左の文字 0 行頭へ w 次の単語の先頭 gg ファイル先頭行
j 下の行 $ 行末へ b 前の単語の先頭 G ファイル最終行
k 右の文字 数字G 数字の行へ e 次の単語の末尾 L 画面の最終行へ
l 上の行 :行番号 指定した行へ H 画面の先頭行へ M 画面の中心行へ

スクロールコマンド

Ctrlキーとの組み合わせでスクロールできる。

スクロール
キー操作 動作 キー操作 動作 キー操作 動作
Ctrl+b 上に1画面 Ctrl+f 下に1画面 Ctrl+u 上に半画面
Ctrl+d 下に半画面 Ctrl+y 上に一行 Ctrl+e 下に一行

b、f、u、dはback、forward、up、downの頭文字。

削除コマンド

削除コマンドを表6.5[削除コマンド]に示す。コマンドモードで使い、削除したデータはバッファに保存され、貼り付けできる。

削除コマンド
キー 削除対象
x カーソル上の1文字
数字x 数字分の文字を削除 2xで2文字削除
X カーソル左側のすべての文字
J 改行文字
dd カーソル行の全ての文字
数字dd カーソル行から数字分の行
dカーソル移動コマンド(w,e,^,$) カーソルが移動した行までを削除

アンドゥ・リドゥコマンド

削除などの操作の結果を取り消す操作をアンドゥ、取り消しの取り消しをリドゥといい、表6.6[アンドゥ・リドゥコマンド]のコマンドを使う。

アンドゥ・リドゥコマンド
コマンド 動作
u 操作結果の取り消し
Ctrl+r 取り消しの取り消し

コピーコマンド

viは行単位で文字をコピーし、コピーした文字はバッファに保存されるため、貼り付けコマンドで再利用できる。表6.7[コピーコマンド]にコマンドを示す。

コピーコマンド
コマンド 動作
yy カーソル行をバッファに保存
Y yyと同じ
数字yy カーソル行から数字行分をバッファに保存
"文字yy バッファ文字(a〜z)にカーソル行を保存する
"文字Y "文字yyと同じ

バッファは最大26(aからz)まで利用できる。

vコマンドを使うと範囲を指定してコピーが可能。

  1. vキーを押し、ビジュアルモードにする
  2. カーソルを移動し、範囲を指定する
  3. yyとキーを押し、指定範囲をコピーする

貼り付けコマンド

削除やコピーでバッファに記憶されたデータはpまたはPコマンドで貼り付けられる。コピー時にバッファ名を指定した場合はpまたはPコマンドの前にバッファ名を指定して利用します。

貼り付けの手順を次の通り

pはカーソルの次の行に、Pはカーソルの前の行にバッファのデータを貼り付けます。

ファイルの読み込み、保存、終了コマンド

表6.8[ファイルの読み込み・保存・終了]にファイルの読み書き終了コマンドを示す。

ファイルの読み込み・保存・終了
コマンド 役割
ZZ ファイルを保存し、viを終了
:wq ZZと同じ
:w ファイルを保存するのみ。viは終了しない
:wファイル名 ファイルを指定した名前で保存。
:q! ファイルを保存せず、viを終了
:oファイル名 ファイルを開く。
:rファイル名 ファイルをカーソル位置に読み込む。

検索・置換コマンド

編集中のファイルから複数の文字や文字列列を検索あるいは置換するコマンドを表6.9[検索コマンド]表6.10[置換コマンド]に示す。編集作業の効率化に欠かせないコマンドである。コマンドモードで利用します。

検索コマンド
コマンド 動作
f文字 カーソル行内で右方向へ"文字"を検索。カーソルは文字の上
F文字 カーソル行内で左方向へ"文字"を検索。カーソルは文字の上
t文字 カーソル行内で右方向へ"文字"を検索。カーソルは文字の左
T文字 カーソル行内で左方向へ"文字"を検索。カーソルは文字の左
/文字列 文字列をファイル末尾方向へ検索。カーソルは先頭文字の上
?文字列 文字列をファイル先頭方向へ検索。カーソルは先頭文字の上
置換コマンド
コマンド 動作
:s/検索文字列/置換文字列/ 行内で最初に見つかった文字列を置換
:s/検索文字列/置換文字列/g 行内の文字列を置換
:%s/検索文字列/置換文字列/ ファイル全体の文字列を置換

その他コマンド

:!シェルコマンド
viを抜けずにシェルコマンドを実行
:help
ヘルプの表示
:set number
行番号を表示する

設定ファイル

vimの設定情報はファイル~/.vimrcで、vim起動時にこのファイルが読み込まれ、vimを自動的に設定してくれる。次のリストはファイルの文字コードの設定例です。

vimの日本語コード設定
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=iso-2022-jp,sjis,euc-jp,utf-8
set fileformats=unix,dos,mac  

演習

  1. vimtutorでvimの使い方を練習する。
  2. 演習用ファイルを各自のホームディレクトリにコピーし、編集する。