vi コマンドとは?
vi は UNIX系OSにおける標準的なテキストエディタであり、ターミナル上で強力な編集機能を提供します。
「Vim」は vi の改良版として広く利用されており、多くの環境では vi を実行すると Vim が起動されます。
基本構文
vi ファイル名
ファイルが存在すればその内容を開き、存在しなければ新規作成モードで開きます。
vi の基本モード構成
| モード | 説明 |
|---|
| ノーマルモード | 初期状態。コマンド入力や移動を行う |
| 挿入モード | テキストを入力できるモード |
| コマンドラインモード | : から始まるコマンドを使って保存・終了などを行う |
モードの切り替え
| 操作 | 結果 |
|---|
i | カーソルの位置から挿入モード |
I | 行頭から挿入モード |
a | カーソルの次の位置から挿入モード |
A | 行末に移動して挿入モード |
o | 下に新しい行を開き挿入モード |
O | 上に新しい行を開き挿入モード |
| R | カーソル位置から入力文字で上書き |
Esc | ノーマルモードに戻る |
基本操作(ノーマルモード)
| コマンド | 説明 |
|---|
h, j, k, l | 左・下・上・右 に移動 |
dd | 行を削除 |
yy | 行をコピー |
p | 貼り付け(コピー/削除直後) |
x | カーソル位置の1文字削除 |
| r | カーソル位置の1文字を置換 |
u | 元に戻す(Undo) |
Ctrl + r | Undo の取り消し(Redo) |
. | 最後の操作を繰り返す |
検索と置換
検索(コマンドラインモード)
/pattern # 下方向に検索
?pattern # 上方向に検索
n # 同じ方向に次を検索
N # 反対方向に検索
置換
:%s/old/new/g # 全文で置換
:%s/old/new/gc # 1つずつ確認して置換
:10,20s/foo/bar/g # 10〜20行目だけ置換
保存・終了(コマンドラインモード)
| コマンド | 説明 |
|---|
:w | ファイル保存 |
:q | 終了(未保存なら警告) |
:wq または ZZ | 保存して終了 |
:q! | 保存せず強制終了 |
:e filename | 他ファイルを開く |
:r filename | 別ファイルの内容を読み込み挿入 |
複数ウィンドウ・ファイル操作
| コマンド | 説明 |
|---|
:split または :sp | 横分割 |
:vsplit または :vsp | 縦分割 |
Ctrl-w + h/j/k/l | ウィンドウ移動 |
:bn / :bp | 次/前のバッファを表示 |
:ls | 開いているバッファの一覧 |
ビジュアルモード(範囲選択)
| コマンド | 説明 |
|---|
v | 文字単位で選択開始 |
V | 行単位で選択 |
Ctrl-v | 矩形選択(ブロック) |
y | 選択部分をコピー |
d | 選択部分を削除 |
p | 選択部分を貼り付け |
よくあるエラーと対処法
| エラー | 原因 | 解決策 |
|---|
| E37: No write since last change | 保存していないのに :q | :wq または :q! を使用 |
| ファイルが開かない | 権限がない | sudo vi を使用 |
| ^Mが表示される | 改行コードが CRLF | :set fileformat=unix で変換 |
実用Tips
:set number → 行番号を表示
:syntax on → シンタックスハイライト有効(vim)
.vimrc に設定を記述して常用環境を整備
- 編集後はこまめに「Esc」で挿入モードを抜けておく
- 誤入力・誤操作が疑われた場合は「:q!」で抜けてやり直す
まとめ
vi(または vim)は多機能・高速なテキストエディタ
- モードとコマンドを覚えることで作業効率が大幅に向上
- 保存・検索・置換・分割表示など、開発や管理に必須のスキル
参考リンク
- https://vim-jp.org/docs/faq.html
- https://www.linux.com/training-tutorials/vim-101-beginners-guide-vim/
- https://man7.org/linux/man-pages/man1/vi.1.html