Vim入門|Linuxで必須のテキストエディタの基本操作と実践テクニック

kento_morota 13分で読めます
社内のAI・IT活用、技術がわかる相手に無料相談。 相談 →
目次

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

%ファイル全体を対象にする
ssubstitute(置換)
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リモート接続ガイドを参照してください。

複数行の一括編集

設定ファイルで複数行をまとめてコメントアウトしたい場合、ビジュアルモードが役立ちます。

手順:

  1. Ctrl+v で矩形ビジュアルモードに入る
  2. j キーで下方向に対象行を選択する
  3. I(大文字のI)を押してインサートモードに入る
  4. # を入力する
  5. Escキーを押すと、選択したすべての行の先頭に # が追加される

この操作は、設定ファイルの一部を一時的に無効化する際に非常に便利です。

分割ウィンドウで複数ファイルを同時編集

設定ファイルを参照しながら別のファイルを編集したい場面があります。Vimは画面分割に対応しています。

:split filename(または:sp filename):水平分割で別のファイルを開く
:vsplit filename(または:vsp filename):垂直分割で別のファイルを開く
Ctrl+w の後に w分割ウィンドウ間の移動
Ctrl+w の後に q現在のウィンドウを閉じる

シェルコマンドとの連携

Vimからシェルコマンドを直接実行できます。

:!commandVimを開いたまま外部コマンドを実行。例えば :!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日)

  • テキストの削除(dddwx
  • コピー&ペースト(yyp
  • アンドゥ(u
  • 文字列検索(/検索語

ステップ3:実践的な操作を習得する(所要時間:1-2週間)

  • 検索と置換(:%s/old/new/g
  • ビジュアルモードでの範囲選択
  • 分割ウィンドウの活用
  • .vimrcのカスタマイズ

最も効果的な学習方法は、日常の作業でVimを使い続けることです。ファイルパーミッションの設定cronの設定ファイル編集など、サーバー管理の各場面でVimを使う機会は豊富にあります。

WSL2を使っている方はWSL環境構築ガイドの環境でもVimを練習できます。サーバー管理全般のスキルを高めたい方は、ユーザー・グループ管理ファイアウォール設定の際にもVimを活用し、実践的にスキルを磨いていきましょう。

#Vim#Linux#エディタ
ManageAI 先行モニター企業 募集中|先着5社・2026年11月末まで

生成AIの利用費、「誰が・何のために・いくら」まで見えていますか?

株式会社カイダンと共同開発したAI利用ガバナンスSaaS「ManageAI」は、OpenAI・Azure OpenAI・Claude・AWS Bedrock・Google Vertex AIの費用と利用状況を、部署・利用者・プロジェクト別に可視化します。導入は読み取り専用キーの登録だけ。初期費用0円・月額5万円(税別)で先行モニター企業を募集しています。

ニュースリリースを読む
共有:
無料メルマガ

週1回、最新の技術記事をお届け

AI・クラウド・開発の最新記事を毎週月曜にメールでお届けします。登録は無料、いつでも解除できます。

プライバシーポリシーに基づき管理します

関連記事

Related / 9 articles

  1. プログラミング

    DDoS攻撃の仕組みと対策入門|レイヤー別の防御とCDN・クラウドの活用

    DDoS攻撃をボリューム型・プロトコル型・アプリ層に分けて仕組みを解説し、自前サーバーで防げない理由、CloudflareやAWS Shieldの標準防御、オリジンIPの隠し方、レートリミットとBot対策、攻撃を受けたときの初動、費用が跳ね上がるDenial of Walletへの備えまでわかります。

  2. プログラミング

    WAFとは?仕組み・導入パターン・誤検知対策|Webアプリを攻撃から守る実践ガイド

    WAFがファイアウォールやIDSと何が違うのか、シグネチャとマネージドルールの仕組み、Cloudflare WAF・AWS WAF・ModSecurityの比較、フォーム送信がブロックされる誤検知の調査と例外設定、ログ監視、WAFが代替できないことまで実践的に解説します。

  3. プログラミング

    セキュリティヘッダー入門|CSP・HSTS・X-Frame-Optionsの設定と効果を実践解説

    CSP・HSTS・X-Frame-Options・X-Content-Type-Optionsなど主要セキュリティヘッダーが防ぐ攻撃と、CSPのReport-Onlyからの段階導入、nonce/hash、HSTS preloadの不可逆リスク、Nginx・Next.js・Astroでの設定例、確認方法を解説します。

  4. プログラミング

    クラウドの通信費(Egress)入門|データ転送量課金の仕組みと転送コストを抑える設計

    クラウドの「受信無料・送信有料」の原則、AZ間・リージョン間・インターネット向けの単価差、NATゲートウェイ処理料の罠、CDNで転送量を減らす方法、バックアップやログ転送の見落とし、請求書で転送料を特定する手順を解説。想定外の請求を防げます。

  5. プログラミング

    秘密情報をGitに入れない仕組み|.gitignore・git-secrets・履歴から漏れた鍵の削除

    APIキーや.envをGitにコミットしてしまう典型経路と、.gitignore・.env.exampleの運用、pre-commitでのgitleaks検知、GitHub secret scanningの活用、漏れた鍵の無効化と履歴書き換え(git filter-repo)の手順を解説。仕組みで再発を防げます。

  6. プログラミング

    開発・ステージング・本番環境の分離設計|環境差分をなくす構成とアクセス制御

    開発・ステージング・本番それぞれの目的と、構成をコードで揃える方法、環境別の設定注入、本番データを使わないテストデータ戦略、ステージングの保護(Basic認証・IP制限・noindex)、コストを抑える運用までを解説。環境差分による本番障害を防げます。

  7. プログラミング

    ngrok・Cloudflare Tunnelでローカルを公開|Webhook開発とデモ環境の作り方

    NAT内のローカル環境にStripeやLINEのWebhookを届けるトンネリングの仕組みを解説。ngrok・Cloudflare Tunnel・localtunnelの比較、固定ドメインと認証、リクエスト検査、公開時のセキュリティ、自宅サーバー公開への応用までわかります。

  8. プログラミング

    ローカル開発環境のHTTPS化|mkcert・hostsファイル・自己署名証明書の正しい使い方

    ローカル開発をHTTPS前提にすべき理由(Secure Cookie・Service Worker・OAuth)と、mkcertでローカルCAを作りhostsで独自ドメインを割り当ててVite・Next.js・Dockerで使う手順を解説。証明書警告を無視する癖の危険も理解できます。

  9. プログラミング

    localhost・0.0.0.0・127.0.0.1の違い|ポートとUnixソケットを理解して「つながらない」を解決

    localhost・127.0.0.1・0.0.0.0の意味の違い、Dockerで外から接続できない原因、host.docker.internal、ポート競合の調べ方、Unixソケットの利点と権限、1024未満ポートの制約を解説。「つながらない」を仕組みから解決できます。

ManageAI

先行モニター企業 募集中

生成AIのコストを「部署別」に、請求書より先に。

先着5社限定・2026年11月末まで。初期費用0円・月額5万円(税別)で、正式版と同等の機能に加え、開発者と伴走者による導入支援を追加費用なしで提供します。プロンプト原文は一切取得しません。

株式会社カイダン × Harmonic Society株式会社の共同事業|読み取り専用キーの登録だけで導入できます