viでテキスト編集をする時に、モードで悩みませんか?
UnixやLinux、Macの標準にインストールされているテキストエディタ。多少とっつきにくい面がありますが、慣れると高速でテキストの編集処理を行うことが出来ます。
この記事では、viやvimの初心者を対象にして、よく使うコマンドについてまとめました。
モード一覧
viでは、以下のモードが存在し、それぞれ操作可能な機能が存在します。
| モード | 機能 |
|---|---|
| ノーマルモード | カーソル移動、ヤンクとプット、削除など |
| インサート(入力)モード | 文字入力など |
| ビジュアルモード | 範囲選択、選択範囲のヤンク、削除など |
| ビジュアルラインモード | 矩形選択 |
| コマンドモード | 変更の保存、vim終了、文字列置換など |
ノーマルモード
viが起動されると、まずノーマルモードになります。
また、インサートモードなどから、「Esc」を押すとノーマルモードに戻ります。
インサートモード
テキストファイルを編集することができるモードです。
ノーマルモードの状態から「i」、「I」、「a」、「A」のいずれかを入力するとインサートモードに切り替わります。
ビジュアルモード
複数の文字列を選択できるモードです。
ノーマルモードの状態から「v」を入力するとビジュアルモードに切り替わります。
ビジュアルラインモード
矩形選択ができるモードです。
ノーマルモードの状態から「V」を入力するとビジュアルラインモードに切り替わります。
コマンドモード
ノーマルモードの状態から「:」を入力するとコマンドモードに切り替わります。
モードを図にしてみた
モードの種類と切り替えと戻り方法を図にしてみました。

viの起動
シェルプロンプトで、viコマンドを入力します。
例えば、test.txtというファイルを編集したい場合、下記のように入力をします。
vi test.txtviの終了
コマンドモードで、「:q」を入力することで、viを終了できます。終了方法には以下があります。
| :q | viの終了 |
|---|---|
| :q! | 編集結果を書き込まず、強制終了 |
| :wq | 編集結果を保存して終了 |
カーソル移動(コマンドモードで実行)
主要なカーソル移動のコマンドを列挙します。これだけ知っていれば、ドヤ顔出来るかも知れません(笑)
カーソル移動(上下左右)
viは矢印キーでもカーソルの移動はできます。でも「vi使い」になりたければ、コマンドキーを使ってカーソル移動が出来るようになりましょう。
| h | 左に移動 |
|---|---|
| i | 右に移動 |
| k | 上に移動 |
| j | 下に移動 |
| 0 | カーソルを行頭へ |
| $ | カーソルを行末へ |
カーソル移動(行移動)
| gg | 最初の行に移動 |
|---|---|
| G | 最後の行に移動 |
| [n]G | 数値[n]で指定した行に移動 5行目に移動したい場合は5Gと入力 :5と入れても移動できます |
文字の挿入
| i | カーソル位置の前に文字を挿入 |
|---|---|
| a | カーソル位置の後ろに文字を挿入 |
| I | 行の先頭に文字を挿入 |
| A | 行の終わりに文字を挿入 |
| o | 現在の行の後ろに文字を挿入 |
| O | 現在の行の前に文字を挿入 |
| R | カーソル位置の文字を上書き |
文字の削除(コマンドモードで実行)
文字の削除は、普通のエディタで使用する「Del」「BS」キーは使用しません。
1文字削除
| x | カーソル上の文字を削除 |
|---|---|
| [n]x | 数値[n]で指定した文字だけ、カーソル上の文字から右側を削除 カーソル上の文字を含み5文字削除したい場合は「5x」と入力 |
| X | カーソルの左側の文字を削除 (カーソル上の文字は削除されない) |
| [n]X | 数値[n]で指定した数だけ、カーソルから左側を削除 カーソルから5文字削除したい場合は「5X」と入力 |
行削除
文字の削除方法にもいくつか種類があります。
| dd | 一行削除 |
|---|---|
| [n]dd | 数値[n]で指定した行数削除 5行削除したい場合は「5dd」と入力 |
コピー・ペースト(コマンドモードで実行)
| yl | 一文字コピー |
|---|---|
| [n]yl | [n]で指定した文字数をコピー 5文字コピーしたい場合は「5yl」と入力 |
| yw | 一単語コピー |
| yy | 一行コピー |
| Y | yyと同じ |
| [n]yy | [n]で指定した行数をコピー 5行コピーしたい場合は「5yy」と入力 |
| p | 文字・単語のペースト時はカーソルの右側にペースト 行のペーストはカーソルの下の行にペースト |
| P | 文字・単語のペースト時はカーソルの左側にペースト カーソルの上の行にペースト |
操作の取り消しと繰り返し(コマンドモードで実行)
操作の取り消しや取り消し操作の取り消し、繰り返しのコマンドです。
| u | 直前の変更を取り消す(undo) |
|---|---|
| U | 行全体への変更を取り消す |
| Ctrl + r | redo(リドゥ)。アンドゥで戻した操作を、元に戻す |
| . | 直前のコマンドを繰り返す |
| [n]. | 数値[n]回、直前のコマンドを繰り返す 5.で直前に実行したコマンドを5回繰り返します。 |
その他
その他のコマンドです。
| :noh | ハイライトを無効にする :nohlsearch の略 |
|---|---|
| :set number | 番号を表示する |

