Linuxサーバーを管理する上で避けて通れないのが、テキストエディタ「Vim」です。設定ファイルの変更、ログの確認、スクリプトの作成——サーバー上でのあらゆるテキスト編集にVimが求められます。
しかし、Vimは独特な操作体系を持つため、「起動したけど文字が入力できない」「終了の仕方が分からない」という初心者の声が後を絶ちません。実際に「how to exit vim(Vimの終了方法)」はStack Overflowで最も閲覧されたページの一つです。
本記事では、Vimの基本操作を段階的に解説し、サーバー管理に必要な実践的テクニックまで体系的に学べる内容を提供します。Linuxの基礎知識と基本コマンドを理解した上で読み進めてください。
なぜVimを学ぶ必要があるのか
GUI環境が当たり前の現在、なぜわざわざCLIベースのテキストエディタを学ぶ必要があるのでしょうか。その理由を明確にしておきましょう。
Linuxサーバーにはほぼ確実にインストールされている
VimまたはViは、ほぼすべてのLinuxディストリビューションに標準でインストールされています。Ubuntu、Rocky Linux、Debianなど、どのディストリビューションでもVimは利用可能です。サーバーにSSH接続した際に、追加のソフトウェアをインストールすることなくファイル編集が行えるのは大きな利点です。
nanoやmicroといった他のCLIエディタも存在しますが、最小構成のサーバーではViまたはVimしか入っていないケースが珍しくありません。Vimを使えることは、サーバー管理者にとっての必須スキルです。
効率的なテキスト編集が可能
Vimの操作に慣れると、マウスを一切使わずに高速なテキスト編集が可能になります。キーボードから手を離す必要がないため、一度習得すれば他のどのエディタよりも速くファイルを編集できるようになります。
特にサーバー管理では、設定ファイルの特定の行を変更する、ログファイルから特定のパターンを検索する、複数行をまとめて編集するといった作業が頻繁に発生します。Vimはこうした作業を効率化するための強力なコマンドを豊富に備えています。
緊急時の対応に必須
サーバー障害が発生した際、GUIが使えない環境で設定ファイルを素早く修正する必要があることがあります。そのような緊急時にVimが使えなければ、復旧に余計な時間がかかってしまいます。平時からVimに慣れておくことは、運用リスクの軽減にもつながります。
Vimの起動と終了|最初に覚える3つの操作
Vimを使い始めるにあたり、まず確実に覚えるべき操作が3つあります。
Vimの起動
ターミナルで以下のコマンドを実行すると、Vimが起動します。
vim filename.txt
指定したファイルが存在すればそのファイルが開かれ、存在しなければ新規ファイルとして作成されます。ファイル名を指定せずに vim だけで起動することも可能です。
Vimの終了
Vimを終了するには、まずEscキーを押してノーマルモードに戻り、以下のコマンドを入力します。
保存して終了::wq と入力してEnterキーを押します。「w」はwrite(書き込み)、「q」はquit(終了)の略です。
保存せずに終了::q! と入力してEnterキーを押します。「!」は強制を意味し、変更内容を破棄して終了します。
保存のみ::w と入力してEnterキーを押します。ファイルを保存しますが、Vimは起動したままです。
最も重要なのは、「困ったらEscキーを押して :q!」というルールを覚えることです。これだけ知っていれば、Vimから確実に脱出できます。
vimtutor:Vim公式チュートリアル
Vimにはインタラクティブな公式チュートリアルが付属しています。ターミナルで以下のコマンドを実行してください。
vimtutor
約30分で基本操作をひととおり学べます。本記事を読みながら、実際にvimtutorを進めることで定着が早まります。
Vimのモード概念|最も重要な基礎知識
Vimが他のエディタと根本的に異なるのは「モード」の概念です。一般的なテキストエディタではキーを押すとそのまま文字が入力されますが、Vimではモードによってキーの動作が変わります。
ノーマルモード(Normal Mode)
Vimを起動した直後のモードです。このモードでは文字の入力はできず、カーソルの移動、テキストの削除、コピー・ペーストなどの操作を行います。
他のモードからノーマルモードに戻るには、Escキーを押します。「今何のモードにいるか分からなくなったら、とにかくEscキー」と覚えてください。
インサートモード(Insert Mode)
テキストを入力するモードです。ノーマルモードから以下のキーを押すとインサートモードに切り替わります。
i:カーソルの前に挿入(insert)
a:カーソルの後に挿入(append)
I:行の先頭に挿入
A:行の末尾に挿入
o:カーソルの下に新しい行を追加して挿入
O:カーソルの上に新しい行を追加して挿入
インサートモード中は、画面の左下に -- INSERT -- と表示されます。テキスト入力が終わったらEscキーでノーマルモードに戻ります。
コマンドラインモード(Command-line Mode)
ノーマルモードで : を押すと、画面下部にコマンド入力行が表示されます。ファイルの保存(:w)、終了(:q)、検索と置換などの操作を行います。
ビジュアルモード(Visual Mode)
テキストを選択するモードです。ノーマルモードで v を押すと文字単位の選択、V を押すと行単位の選択、Ctrl+v を押すと矩形(ブロック)選択が可能です。選択した範囲に対してコピーや削除などの操作を適用できます。
カーソル移動と基本編集操作
ノーマルモードでの効率的なカーソル移動は、Vimを使いこなすための基本です。
基本のカーソル移動
Vimでは矢印キーの代わりに、ホームポジションのキーでカーソルを移動します。
h:左に移動
j:下に移動
k:上に移動
l:右に移動
矢印キーでも移動できますが、hjklに慣れるとホームポジションから手を離す必要がなくなり、編集速度が大幅に向上します。
効率的な移動コマンド
一文字ずつの移動だけでなく、より大きな単位での移動コマンドを覚えるとさらに効率が上がります。
単語単位:w(次の単語の先頭へ)、b(前の単語の先頭へ)、e(現在の単語の末尾へ)
行内移動:0(行頭へ)、$(行末へ)、^(行の最初の非空白文字へ)
画面内移動:H(画面の最上行へ)、M(画面の中央行へ)、L(画面の最下行へ)
ファイル内移動:gg(ファイルの先頭へ)、G(ファイルの末尾へ)、:42(42行目へ)
テキストの削除
x:カーソル位置の1文字を削除
dd:カーソルのある行を1行削除
dw:カーソルから次の単語の先頭までを削除
d$(またはD):カーソルから行末までを削除
d0:カーソルから行頭までを削除
数字を前に付けると、その回数分繰り返します。例えば 5dd はカーソル位置から5行を削除します。
コピー(ヤンク)とペースト
Vimではコピーを「ヤンク(yank)」と呼びます。
yy:カーソルのある行を1行コピー
yw:カーソルから次の単語の先頭までをコピー
y$:カーソルから行末までをコピー
p:カーソルの後にペースト
P:カーソルの前にペースト
削除操作(d系のコマンド)で削除されたテキストも自動的にバッファに保存されるため、dd で行を削除した後に p で別の場所にペーストする「カット&ペースト」が簡単にできます。
アンドゥとリドゥ
u:直前の操作を元に戻す(アンドゥ)
Ctrl+r:アンドゥを取り消す(リドゥ)
何か間違えた操作をしてしまった場合、u を押すだけで元に戻せます。何度も u を押せば、さらに前の状態に遡れます。
検索と置換|サーバー管理で頻出の操作
設定ファイルの特定のパラメータを探したり、一括で値を変更したりする操作は、サーバー管理で日常的に発生します。
文字列の検索
ノーマルモードで / を押すと、画面下部に検索プロンプトが表示されます。
前方検索:/検索文字列 と入力してEnter
後方検索:?検索文字列 と入力してEnter
検索後、n で次のマッチ箇所、N で前のマッチ箇所にジャンプできます。
検索のハイライトを消すには :noh(nohlsearchの略)を実行します。
文字列の置換
置換はコマンドラインモードで行います。基本構文は以下の通りです。
:%s/検索文字列/置換文字列/g
%:ファイル全体を対象にする
s:substitute(置換)
g:行内のすべてのマッチを置換(省略すると行内の最初のマッチのみ)
置換前に確認したい場合は、末尾に c フラグを追加します。
:%s/検索文字列/置換文字列/gc
これにより、各マッチ箇所で置換するかどうかを一つずつ確認できます。
実用的な例
設定ファイルでポート番号を変更する場合::%s/Port 22/Port 2222/g
コメントアウトされた行を有効にする場合::%s/^#ServerName/ServerName/g
テキスト処理全般については、Linuxのテキスト処理コマンドも参考になります。grepやsedなどのコマンドラインツールとVimを使い分けることで、効率的なテキスト操作が実現できます。
実践編|サーバー管理で使うVim操作
ここからは、実際のサーバー管理で頻繁に行う操作をVimで実践する方法を解説します。
設定ファイルの編集
Linuxサーバーの設定変更は、テキストファイルの編集がほとんどです。例えば、SSH設定ファイルを編集する場合を考えましょう。
sudo vim /etc/ssh/sshd_config
ファイルが開いたら、変更したい項目を検索します。例えば、rootログインの設定を探すには /PermitRootLogin と入力します。該当行が見つかったら、i でインサートモードに切り替えて値を変更し、Escキーでノーマルモードに戻り、:wq で保存・終了します。
SSH設定の詳細についてはSSHリモート接続ガイドを参照してください。
複数行の一括編集
設定ファイルで複数行をまとめてコメントアウトしたい場合、ビジュアルモードが役立ちます。
手順:
Ctrl+vで矩形ビジュアルモードに入るjキーで下方向に対象行を選択するI(大文字のI)を押してインサートモードに入る#を入力する- Escキーを押すと、選択したすべての行の先頭に
#が追加される
この操作は、設定ファイルの一部を一時的に無効化する際に非常に便利です。
分割ウィンドウで複数ファイルを同時編集
設定ファイルを参照しながら別のファイルを編集したい場面があります。Vimは画面分割に対応しています。
:split filename(または:sp filename):水平分割で別のファイルを開く
:vsplit filename(または:vsp filename):垂直分割で別のファイルを開く
Ctrl+w の後に w:分割ウィンドウ間の移動
Ctrl+w の後に q:現在のウィンドウを閉じる
シェルコマンドとの連携
Vimからシェルコマンドを直接実行できます。
:!command:Vimを開いたまま外部コマンドを実行。例えば :!ls -la でディレクトリの内容を確認できます。
:r !command:コマンドの出力をカーソル位置に挿入。例えば :r !date で現在の日時を挿入します。
この機能は、設定ファイルを編集中にディレクトリ内のファイル一覧を確認したい場合や、現在の設定値をコマンドで確認したい場合に重宝します。
Vimの設定カスタマイズ(.vimrc)
Vimの動作はホームディレクトリの .vimrc ファイルでカスタマイズできます。サーバー管理に役立つ設定をいくつか紹介します。
推奨する基本設定
vim ~/.vimrc で設定ファイルを作成・編集します。
以下は、サーバー管理者に推奨する基本設定です。
行番号の表示:set number を追加すると、各行に行番号が表示されます。設定ファイルのエラー箇所を特定する際に不可欠です。
シンタックスハイライト:syntax on を追加すると、ファイルの種類に応じたカラーハイライトが有効になります。設定ファイルの構造が視覚的に分かりやすくなります。
検索のハイライト:set hlsearch を追加すると、検索結果がハイライト表示されます。set incsearch と合わせて設定すると、入力中にリアルタイムで検索結果が反映されます。
インデント設定:set autoindent で自動インデント、set tabstop=4 でタブ幅を4スペースに設定します。シェルスクリプトや設定ファイルの編集時にインデントが整います。シェルスクリプト入門の際にも役立つ設定です。
エンコーディング:set encoding=utf-8 でUTF-8を明示的に設定しておくと、日本語を含むファイルの文字化けを防げます。
設定の即時反映
.vimrc を編集した後、Vimを再起動しなくても以下のコマンドで設定を即時反映できます。
:source ~/.vimrc
また、一時的に設定を変更したい場合は、コマンドラインモードで直接設定できます。例えば :set number と入力すると、現在のセッションだけ行番号が表示されます。
まとめ|Vimは「慣れ」が最大の武器
Vimの操作は最初こそ戸惑いますが、基本を覚えてしまえば、他のどのエディタよりも効率的にテキスト編集が行えるようになります。
本記事で解説した内容の習得ステップをまとめます。
ステップ1:最低限の操作を覚える(所要時間:30分)
- Vimの起動と終了(
vim、:wq、:q!) - モードの切り替え(
iでインサート、Escでノーマル) - 基本的なカーソル移動(hjklまたは矢印キー)
ステップ2:基本操作を身につける(所要時間:1-2日)
- テキストの削除(
dd、dw、x) - コピー&ペースト(
yy、p) - アンドゥ(
u) - 文字列検索(
/検索語)
ステップ3:実践的な操作を習得する(所要時間:1-2週間)
- 検索と置換(
:%s/old/new/g) - ビジュアルモードでの範囲選択
- 分割ウィンドウの活用
- .vimrcのカスタマイズ
最も効果的な学習方法は、日常の作業でVimを使い続けることです。ファイルパーミッションの設定やcronの設定ファイル編集など、サーバー管理の各場面でVimを使う機会は豊富にあります。
WSL2を使っている方はWSL環境構築ガイドの環境でもVimを練習できます。サーバー管理全般のスキルを高めたい方は、ユーザー・グループ管理やファイアウォール設定の際にもVimを活用し、実践的にスキルを磨いていきましょう。
関連記事
AWS CloudFrontでサイト高速化|CDN設定からキャッシュ戦略まで実践解説
AWS CloudWatchで監視・アラート設定|運用担当者のための実践ガイド
AWS CodePipelineでCI/CD構築|コード変更から本番デプロイまでの自動化
AWS Cost Explorerでコスト可視化|ムダを見つけて月額費用を削減する実践術
AWS ECS/Fargateでコンテナ運用|Docker→本番デプロイの実践ガイド
AWS IAMのベストプラクティス|最小権限の原則を実務で実装する方法
AWS RDSの実務ガイド|データベース構築・バックアップ・パフォーマンスチューニング
AWS S3の実務活用ガイド|バケット設計・アクセス制御・コスト最適化の実践