Linux viコマンドまとめ | Vimの3つのモードとビジュアルモード

viを開いたのに文字が入力できない、抜け方が分からずウィンドウを閉じてしまう。サーバーを初めて触る人なら一度は経験することです。 Linuxのviコマンドは、ノーマルモードと挿入モードが分かれているため、今どのモードにいるかさえ分かれば、あとはキーをいくつか押すだけです。この記事では3つのモードとモード別のコマンドを表にまとめ、ブラウザ内の仮想サーバーでviを実際に打てるようにしました。
AlmaLinux 9.8ではviもvimもvim 8.2パッケージで、この記事の画面と文言はvimで開いたものです。インストールされていなければ[dnf -y install vim-enhanced]でインストールします。
✅ viの3つのモード
viではモードによって同じキーが違う働きをします。ファイルを開くとノーマルモードで始まり、iで挿入モードに入って文字を打ち、Escで戻り、コロン[:]で最終行モードに入って保存して抜けます。
| モード | 入るキー | 作業 |
|---|---|---|
| ノーマルモード | viを開くとこのモード · 他のモードからEsc | カーソル移動、削除、コピー、貼り付け、取り消し |
| 挿入モード | i a I A o O | 文字を入力。画面下に[-- INSERT --] |
| 最終行モード | : | 保存・終了・置換・行番号の設定。画面下に : が出る |
| ビジュアルモード | v V Ctrl-v | 範囲を選んでから削除・コピー・一括入力 |
コンソールから開く方法は3つです。
| コマンド | 説明 |
|---|---|
| vi ファイル名 | ファイルを開いてノーマルモードで開始。ないファイルなら新しく作り[New]と表示 |
| vi +20 ファイル名 | 20行目にカーソルを置いて開く |
| view ファイル名= vi -R | 読み取り専用で開く。編集すると[W10]警告、保存すると[E45] |
下の仮想サーバーで[vi httpd.conf]と打つとviが開き、左のメニューがvi内のコマンドに変わります。チップを押すとそのキーが画面に入り、キーボードで直接打っても構いません。
✅ Linux viコマンドまとめ
🔲 カーソル移動
| キー | 説明 |
|---|---|
| h j k l← ↓ ↑ → | 1文字ずつ移動。矢印キーも可 |
| 0 · ^ | 行頭(0)・行の空白でない最初の文字(^) |
| $ | 行末 |
| w · b · e | 次の単語の先頭・前の単語の先頭・次の単語の末尾 |
| gg · G | ファイルの最初の行・最後の行 |
| 20G:20 と同じ | 20行目へ。数字を変えれば好きな行へ |
| H · M · L | 画面の一番上・真ん中・一番下の行 |
| Ctrl-f · Ctrl-b | 1画面下・上 |
| Ctrl-d · Ctrl-u | 半画面下・上 |
🔲 挿入モードに入る
どのキーで入っても、入力が終わったらEscを押します。cw・cc・C・sは消しながらすぐ挿入モードに入るので、単語や行を直すときはxとiを別々に押すより速いです。
| キー | 説明 |
|---|---|
| i · a | カーソルの前(i)・後ろ(a)に入力開始 |
| I · A | 行頭(I)・行末(A)に入力開始 |
| o · O | 下(o)・上(O)に空行を作って入力開始 |
| cw | カーソルから単語の末尾まで消して入力開始 |
| cc | 行全体を消して入力開始 |
| C | カーソルから行末まで消して入力開始 |
| s | 1文字消して入力開始 |
| Esc | 入力を終えてノーマルモードへ |
🔲 削除・修正
dの後に移動キーを付けると、その範囲が消えます。dwは単語、ddは行、dGはファイルの末尾までで、前に数字を付けるとその回数だけ繰り返します。
| キー | 説明 |
|---|---|
| x · X | カーソルの文字(x)・カーソルの前の文字(X)を削除。3xは3文字 |
| dw | カーソルから単語の末尾まで削除 |
| dd | 行を削除。3ddは3行 |
| D= d$ | カーソルから行末まで削除 |
| d0 | 行頭からカーソルの前まで削除 |
| dG | 現在の行からファイルの末尾まで削除 |
| :6d · :6,10d | 6行目を削除・6〜10行目を削除 |
| J | 下の行を現在の行の末尾につなげる |
| r | カーソルの文字を次に打つ文字に置き換える |
| ~ | 大文字・小文字を切り替える |
| >> · << | 行をインデント・インデント解除 |
🔲 コピー・貼り付け・取り消し
削除したものもコピーしたものと同じくpで貼り付けられるので、ddとpを続けて押すと行が下に移ります。uは何段階も遡り、Ctrl-rで取り消したものをやり直します。
| キー | 説明 |
|---|---|
| yy | 行をコピー。3yyは3行 |
| yw | カーソルから単語の末尾までコピー |
| p · P | コピーしたものを下(p)・上(P)に貼り付け。文字単位のコピーならカーソルの後ろ・前 |
| :1 co 7:1 t 7 と同じ | 1行目をコピーして7行目の下に |
| :1,7 co 8 | 1〜7行目をコピーして8行目の下に |
| :1 m 8 | 1行目を8行目の下へ移動 |
| u | 取り消し。何度も押すとさらに戻る |
| Ctrl-r | 取り消したものをやり直す |
| . | 最後の変更を繰り返す |
🔲 検索・置換
置換は最終行モードで行います。範囲を指定しなければ現在の行だけ、[%]を付けるとファイル全体で、末尾にgがなければ各行の最初の1つだけが置き換わります。
| キー | 説明 |
|---|---|
| /文字列 | カーソルから下へ検索。末尾に達すると先頭から続けて[search hit BOTTOM, continuing at TOP] |
| ?文字列 | カーソルから上へ検索 |
| n · N | 同じ方向の次の結果(n)・逆方向(N) |
| * | カーソルのある単語を下へ検索 |
| :s/old/new/ | 現在の行の最初のoldをnewに |
| :s/old/new/g | 現在の行のすべてのoldをnewに |
| :%s/old/new/g | ファイル全体のすべてのoldをnewに |
| :10,20s/old/new/g | 10〜20行目のすべてのoldをnewに |
| :%s/old/new/gc | 1つずつ確認しながら置換(y 置換・n スキップ・a すべて・q 終了) |
🔲 保存・終了・行番号
| キー | 説明 |
|---|---|
| :w | 保存。終わると[36L, 1094B written] |
| :w ファイル名 | 別名で保存。元のファイルはそのまま |
| :wq= :x = ZZ | 保存して終了 |
| :q | 終了。変更があれば[E37: No write since last change] |
| :q! | 保存せずに終了 |
| :set nu · :set nonu | 行番号の表示・非表示 |
✅ Vimビジュアルブロックモードで列を一括コメントアウト
複数の行の先頭に同じ文字を入れるときは、行ごとにiを押す代わりにビジュアルブロックモードを使います。ノーマルモードでvは文字単位、Shift-vは行単位、Ctrl-vは列単位で範囲を選びます。
設定ファイルの一塊をまとめてコメントアウトする手順です。最初の行の先頭文字にカーソルを置いてCtrl-vを押し、jで下りながら行を選び、Iを押して#を打ってからEscを押します。



コメントを外すときも同じです。最初の行の#の上でCtrl-vで下まで選んでからxを押すと、選んだ列が一度に消えます。上のシミュレーターのvhost.confでそのまま試せます。
ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。