Linux vim エディタを学ぼう
vim(ヴィム)とは
Linuxでは、色々な設定をテキストファイルに記述して行う事があります。
この為、Linuxを使用しているとテキストファイルを編集する機会が出てきます。
ここで必要になってくるのがテキストディタです。
テキストファイルとは、文字や記号などのテキストで保存されているファイルです。
そして、テキストエディタとは、このテキストファイルを編集する為のソフトです。
Windowsの標準のテキストエディタは「メモ帳」です。
vim(ヴィム)とは、Linuxで標準的に使われて高機能テキストエディタです。
私たちが知っているメモ帳などのテキストエディタとは違い、独特な操作が必要で、
少しとっつきにくさを感じますが、
どのディストリビューションでもほぼ標準でインストールされていますので、
この機会に慣れておきましょう。
ディストリビューションについては、こちらの記事を参照して下さい。


モードについて
Vimには、以下のモードがあり、各モードへ切り替えて操作を行います。
| モード | 説明 |
|---|---|
| インサートモード | 通常の編集操作を行うモードです。 |
| ノーマルモード | カーソルの移動、テキストのコピーやペースト、削除をなどを行うモードです。 |
| コマンドモード | ファイルの保存、vimの終了など行うモードです。 |
モードの切り替えにつて
| モード | 操作方法 |
|---|---|
| インサートモードへ切り替える | i キー または a キーを押下します。 |
| ノーマルモードへ切り替える | Esc キーを押下します。 |
| コマンドモードへ切り替える | : キーを押下します。 |

vimの起動
| コマンド | 説明 |
|---|---|
| vi | テキストファイルを編集する。 |
| 書式 | vi [オプション] [ファイル名] |
| オプション | -R 読み取り専用でファイルを開く |
| 実行例1 | textfile.txt ファイルを開きます。(ファイルが無ければ新規作成します) $ vi textfile.txt |

vimの 各種コマンド
インサートモードへの移動(インサートモード)
| コマンド | 説明 |
|---|---|
| i | カーソルの前に文字を入力する |
| a | カーソルの後の文字を入力する |
| I | 行頭の最初の文字にカーソルを移動し、その直前に文字を入力する |
| A | 行末にカーソルを移動し、その直後に文字を入力する |
カーソルの移動(ノーマルモード)
| コマンド | 説明 |
|---|---|
| h | 1文字左へ移動する(←) |
| j | 1文字したへ移動する (↓) |
| k | 1文字上に移動する (↑) |
| l | 1文字右へ移動する (→) |
| |
| gg | ファイルの先頭行へ移動する |
| G | ファイルに最終行へ移動する |
| ○G | ファイルの○行目へ移動する(○は数値) |
編集操作(ノーマルモード)
| コマンド | 説明 |
|---|---|
| x | カーソル位置の文字を削除する(Delete) |
| X | カーソル位置の前の文字を削除する(Backspace) |
| dd | カレント行を削除する |
| yy | カレント行をバッファへコピーする |
| p | カレント行の下へバッファ内容を貼り付ける |
| P | カレント行の上へバッファ内容を貼り付ける |
| u | 直前の処理を取り消す(アンドゥ) |
| . | 直前の処理を繰り返す(リドゥ) |
検索 (ノーマルモード)
| コマンド | 説明 |
|---|---|
| /文字列 | カーソル位置から後方に向かって指定した文字列を検索する |
| ?文字列 | カーソル位置から前方に向かって指定した文字列を検索する |
| n | 次を検索する |
| N | 次を検索する (逆方向) |
置換 (コマンドモード)
| コマンド | 説明 |
|---|---|
| :%s/A/B/ | 最初に見つかった文字列Aを文字列Bに置換する |
| :%s/A/B/g | すべての文字列Aを文字列Bに置換する |
保存・終了(コマンドモード)
| コマンド | 説明 |
|---|---|
| :q | 保存せずに終了する(編集した場合は保存するか確認される) |
| :q! | 編集中の内容を保存せずに終了する |
| :wq or ZZ | 編集中の内容を保存して終了する |
| :e! | 最後に保存した内容に復帰する |
その他 (コマンドモード)
| コマンド | 説明 |
|---|---|
| :set number :set nu | 行場号を表示する |
| :set nonumber :set nonu | 行場号を非表示にする |


