viとは
viとはおそらく全ての UNIX系 OSで使用できるであろうテキストエディタです。
Linuxの設定ファイルはテキスト形式になるので、これら設定ファイル変更や、ログビューアとして、Linux管理者や開発者は非常に高い頻度で viを使用します。
ただ、Windows標準の Notepad等に比べると操作がだいぶ異なるので、初めのうちは非常にとっつきにくいエディタです。しかし慣れてしまうと、キーボードのホームポジションに手を置いたままほぼ全ての操作が行えたりと、なかなか使い勝手の良いエディタになってきます。
二つのモード
viには「入力モード」と「コマンドモード」という2つのモードがります。入力モードというのは文字を入力するモードで、コマンドモードというのはコピー・ペースト・削除といったコマンドを使用して編集操作を行うモードです。
viは起動した状態ではコマンドモードになっています。編集する場合には編集したい位置にカーソルを移動してから入力モードへの切り替えを行って文字を入力なり編集を行います。
逆に入力モードからコマンドモードへは [ESC]キーで切り替えることが出来ます。viでは、先ずコマンドを使用する前にや、困ったときに [ESC] という癖を付けておきましょう。
viの起動
viの起動は単純に以下のようにします。
%vi
編集や操作するファイルが決まっている場合は以下のようにします。
%vi ファイル名
編集や表示したい文字列が決まっている場合は以下のようにして起動することも出来ます。
このようにした場合、指定された文字列が存在する一番初めの行から表示することが出来ます。
%vi +/文字列 ファイル名
viのコマンド
コマンドモードでは以下のようなコマンドを使用することが出来ます。
ただし、いきなり多くのコマンドを覚えるのは難しいので、最低限必要なコマンドとして「入力モードへの切り替え」、「保存」、「終了」を覚えて、それ以外は必要に応じて覚えておきましょう。
入力モードへの切り替え
| コマンド |
動作 |
| a |
現在のカーソルの後ろにテキストを挿入 |
| i |
現在のカーソルの前にテキストを挿入 |
| A |
現在のカーソル行の右端にテキストを挿入 |
| I |
現在のカーソル行の先頭にテキストを挿入 |
| o |
現在のカーソル行の下に空行を作りそこにテキストを挿入 |
| O |
現在のカーソル行の上に空行を作りそこにテキストを挿入 |
|
カーソル移動
| コマンド |
動作 |
| h(←) |
左 |
| j(↓) |
下 |
| k(↑) |
上 |
| l(→) |
右 |
| 0 |
行の先頭 |
| $ |
行の末尾 |
| [Enter] |
次行の先頭 |
| w |
次の単語 |
| b |
前の単語 |
| H |
画面の先頭行 |
| M |
画面の中央行 |
| L |
画面の末行 |
| [ctrl] + f |
次の画面 |
| [ctrl] + b |
前の画面 |
| 1G |
文章の先頭 |
| G |
文章の末尾 |
| nG |
n行へ |
|
保存/終了
| コマンド |
動作 |
| :w |
ファイルの上書き保存 |
| :w ファイル名 |
指定ファイルへの保存 |
| :q |
保存せずに終了する |
| :q! |
修正を破棄して終了する |
| :wq |
保存して終了する |
|
コピー/カット/ペースト
| コマンド |
動作 |
| yy |
一行コピー |
| nyy |
n行コピー |
| dd |
一行カット |
| p |
ペースト |
|
削除
| コマンド |
動作 |
| x |
一文字削除 |
| X |
カーソルの左一文字を削除 |
| dd |
一行削除(カット) |
|
アンドゥ/繰り返し
| コマンド |
動作 |
| u |
最後の修正を取り消す |
| . (ドット) |
直前の変更操作の繰り返し |
|
検索
| コマンド |
動作 |
| /正規表現 |
前方検索 カーソルが所望の文字列に移動 |
| ?正規表現 |
後方検索 カーソルが所望の文字列に移動 |
| n |
nを押すとページ下方を検索 |
| N |
Nを押すとページ上方を検索 |
|
置き換え
| コマンド |
動作 |
| :s/文字列A/文字列B/ |
現在の行で文字列1を文字列2に置換(最初に合致するパターンのみ) |
| :s/文字列A/文字列B/g |
現在の行で文字列1を文字列2に置換 |
| :s/文字列A/文字列B/gc |
現在の行で文字列1を文字列2に置換(確認あり) |
| :%s/文字列1/文字列2/g |
すべての文字列1を文字列2に置換 |
| :%s/文字列1/文字列2/gc |
すべての文字列1を文字列2に置換(確認あり) |
|
|