Vim(ヴィム)は、軽量で高速、かつカスタマイズ性の高いテキストエディタとして、エンジニアや開発者から長年支持されています。
しかし、初めて触れる人にとっては「キー操作が難しい」「どうやって終了するの?」と戸惑うことも多いのが正直なところです。
実際に、Vimの終了方法がわからずに困った経験を持つ人は数多くいます。
今回はVim初心者向けに、最初に覚えておきたい基本操作をていねいに解説します。
これさえ押さえれば、Vimが怖くなくなります!
プログラミングやサーバー管理の現場では、Vimが標準で使われることが多いため、基本操作を覚えておくことは大変重要です。一歩ずつ、確実にマスターしていきましょう。
Vimとは何か?

Vimの特徴と歴史
Vim(Vi IMproved)は、1976年に開発された「vi」エディタを改良したテキストエディタです。
Vimの主な特徴
- 軽量で高速:メモリ使用量が少なく、大きなファイルでもサクサク動作
- 多様な環境で利用可能:Linux、macOS、Windows、Unixなどほぼすべてのプラットフォームで動作
- マウス不要:キーボードだけで全ての操作が可能
- 高いカスタマイズ性:設定ファイルで自分好みにカスタマイズ可能
- 豊富なプラグイン:機能拡張により様々な用途に対応
Vimの基本モードを理解しよう

3つの主要モード
Vimには3つの主要なモードがあり、これがVimの最大の特徴です。
ノーマルモード(Normal Mode)
役割:通常の操作を行う基本状態
できること
- カーソルの移動
- テキストの削除、コピー、貼り付け
- 検索や置換
- ファイル間の移動
見分け方:画面下部に何も表示されていない状態
挿入モード(Insert Mode)
役割:文字入力ができる状態
できること
- 文字の入力
- テキストの追加や修正
- 通常のテキストエディタのような操作
見分け方:画面下部に「– INSERT –」と表示される
コマンドモード(Command Mode)
役割:保存・終了などの操作を実行する状態
できること
- ファイルの保存
- ファイルの終了
- 検索と置換
- 設定の変更
見分け方:画面下部に「:」が表示され、コマンドを入力できる状態
モードの切り替え方法
基本的な切り替えパターン
ノーマルモード → 挿入モード
i # カーソルの前に挿入
a # カーソルの後に挿入
o # 下に新しい行を作成して挿入
挿入モード → ノーマルモード
Esc # エスケープキーを押す
ノーマルモード → コマンドモード
: # コロンを入力
コマンドモード → ノーマルモード
Esc # エスケープキーを押す
Enter # コマンドを実行後、自動的にノーマルモードに戻る
実践例:モード切り替えの流れ
例:新しいファイルを作成して「Hello World」と入力し、保存する
1. Vimを起動(ノーマルモード)
$ vim hello.txt
2. 挿入モードに切り替え
i
3. テキストを入力(挿入モード)
Hello World
4. ノーマルモードに戻る
Esc
5. コマンドモードで保存
:w
6. Vimを終了
:q
ノーマルモードでの基本操作

カーソル移動
ノーマルモードでは、方向キーの代わりにアルファベットキーでカーソルを移動します。これにより、ホームポジションから手を離さずに操作できます。
基本的なカーソル移動
h # 左に移動(←キーと同じ)
j # 下に移動(↓キーと同じ)
k # 上に移動(↑キーと同じ)
l # 右に移動(→キーと同じ)
覚え方のコツ
- h:left の l の左隣
- l:right の r の左隣
- j:下向きの形
- k:上向きの形
高速移動コマンド
w # 次の単語の先頭に移動
b # 前の単語の先頭に移動
e # 単語の末尾に移動
0 # 行の先頭に移動
$ # 行の末尾に移動
gg # ファイルの先頭に移動
G # ファイルの末尾に移動
数字との組み合わせ
5j # 5行下に移動
10k # 10行上に移動
3w # 3つ先の単語に移動
15G # 15行目に移動
テキストの編集
削除操作
x # カーソル位置の1文字を削除
dd # 現在の行を1行削除
dw # カーソル位置から単語の末尾まで削除
d$ # カーソル位置から行末まで削除
d0 # カーソル位置から行頭まで削除
数字との組み合わせ例
5x # 5文字削除
3dd # 3行削除
2dw # 2つの単語を削除
コピーと貼り付け
yy # 現在の行をコピー(ヤンク)
yw # カーソル位置から単語の末尾までコピー
y$ # カーソル位置から行末までコピー
p # カーソルの後に貼り付け
P # カーソルの前に貼り付け
実践例:行のコピーと貼り付け
1. コピーしたい行にカーソルを移動
2. yy でその行をコピー
3. 貼り付けたい位置にカーソルを移動
4. p で貼り付け
元に戻す・やり直し
u # 元に戻す(Undo)
Ctrl+r # やり直し(Redo)
U # 行全体の変更を元に戻す
検索機能
文字列検索
/文字列 # 前方検索
?文字列 # 後方検索
n # 次の検索結果に移動
N # 前の検索結果に移動
検索例
/hello # "hello"を前方検索
?world # "world"を後方検索
行内検索
f文字 # 行内で指定文字を前方検索
F文字 # 行内で指定文字を後方検索
t文字 # 指定文字の直前に移動
T文字 # 指定文字の直後に移動
挿入モードでの文字入力

挿入モードへの切り替え方法
基本的な挿入コマンド
i # カーソルの前に挿入
I # 行の先頭に挿入
a # カーソルの後に挿入
A # 行の末尾に挿入
o # 下に新しい行を作成して挿入
O # 上に新しい行を作成して挿入
各挿入コマンドの使い分け
具体的な使用場面
i(insert)を使う場面
# 既存の文字の間に挿入したい場合
Hello_World # _の位置で i を押して文字挿入
A(Append)を使う場面
# 行末に文字を追加したい場合
console.log("Hello") # この行の末尾に ; を追加
o(open line below)を使う場面
# 現在の行の下に新しい行を追加したい場合
function hello() { # この行の下に新しい処理を追加
O(open line above)を使う場面
# 現在の行の上に新しい行を追加したい場合
return result; # この行の上にコメントを追加
挿入モードでの基本操作
通常の文字入力
挿入モードでは、一般的なテキストエディタと同様に文字を入力できます。
# アルファベット、数字、記号の入力
# 日本語の入力(IMEを使用)
# スペース、タブの入力
挿入モード中の移動
Ctrl+h # 1文字戻る(Backspaceと同じ)
Ctrl+w # 1単語削除
Ctrl+u # 行頭まで削除
挿入モードから抜ける
Esc # ノーマルモードに戻る(最も基本)
Ctrl+[ # Escの代替(一部のキーボードで便利)
Ctrl+c # Escの代替(ただし一部機能が制限される)
コマンドモードでの保存・終了操作

ファイル操作の基本
保存コマンド
:w # 現在のファイルを保存
:w filename # 指定したファイル名で保存
:w! # 強制的に保存(読み取り専用ファイルでも)
:wa # 開いているすべてのファイルを保存
終了コマンド
:q # Vimを終了(未保存の変更があると失敗)
:q! # 強制終了(変更を破棄)
:wq # 保存して終了
:x # 変更があれば保存して終了
ZZ # :wq と同じ(コマンドモードに入らずに実行)
ZQ # :q! と同じ(保存せずに強制終了)
実践的な終了パターン
安全な終了手順
パターン1:保存して終了
1. Esc でノーマルモードに戻る
2. :wq でファイルを保存して終了
パターン2:保存せずに終了
1. Esc でノーマルモードに戻る
2. :q! で変更を破棄して終了
パターン3:保存するかどうか確認
1. Esc でノーマルモードに戻る
2. :q で終了を試行
3. 「未保存の変更があります」というメッセージが出た場合
- :w で保存してから :q で終了
- または :q! で破棄して終了
ファイル管理コマンド
ファイルを開く
:e filename # 新しいファイルを開く
:e! # 現在のファイルを再読み込み(変更を破棄)
:sp filename # 水平分割でファイルを開く
:vsp filename # 垂直分割でファイルを開く
バッファ操作
:ls # 開いているファイル一覧を表示
:b番号 # 指定番号のバッファに切り替え
:bn # 次のバッファに移動
:bp # 前のバッファに移動
エラーメッセージと対処法
よくあるエラーと解決方法
「E37: No write since last change」
# 原因:未保存の変更がある状態で終了しようとした
# 解決::w で保存してから :q、または :q! で強制終了
「E45: ‘readonly’ option is set」
# 原因:読み取り専用ファイルを編集しようとした
# 解決::w! で強制保存、または :q! で終了
「E212: Can’t open file for writing」
# 原因:ファイルの書き込み権限がない
# 解決:sudo権限で起動するか、別名で保存 :w 新しいファイル名
効率的なVim操作テクニック

組み合わせコマンド
Vimでは、複数のコマンドを組み合わせることで、より効率的な編集が可能になります。
削除と挿入の組み合わせ
cw # 単語を削除して挿入モードへ(change word)
cc # 行を削除して挿入モードへ(change line)
c$ # カーソル位置から行末まで削除して挿入モードへ
s # 1文字削除して挿入モードへ(substitute)
S # 行全体を削除して挿入モードへ
数字との組み合わせ
3cw # 3つの単語を削除して挿入モードへ
5dd # 5行削除
10yy # 10行コピー
2p # 2回貼り付け
範囲指定操作
ビジュアルモード
v # 文字単位で範囲選択開始
V # 行単位で範囲選択開始
Ctrl+v # 矩形選択開始
ビジュアルモードでの操作例
1. v でビジュアルモード開始
2. hjkl でカーソルを移動して範囲選択
3. y でコピー、d で削除、c で削除して挿入モード
コマンドラインでの範囲指定
:1,5d # 1行目から5行目まで削除
:3,8y # 3行目から8行目までコピー
:%s/old/new/g # ファイル全体で old を new に置換
:.,+3d # 現在行から3行下まで削除
マクロ機能
マクロの記録と再生
qa # aレジスタにマクロ記録開始
(操作を実行)
q # マクロ記録終了
@a # aレジスタのマクロを実行
@@ # 最後に実行したマクロを再実行
5@a # aレジスタのマクロを5回実行
マクロの実践例
# 各行の先頭に "- " を追加するマクロ
qa # マクロ記録開始
I- <Esc>j # 行頭に "- " を挿入して次の行へ
q # マクロ記録終了
10@a # 10行に対してマクロを実行
よくある困った状況と対処法

初心者が陥りがちな問題
「Vimから抜け出せない」
症状:Vimを起動したが、終了方法がわからない
解決手順
1. Esc を何度か押してノーマルモードに戻る
2. :q! と入力してEnterを押す(強制終了)
「文字が入力できない」
症状:キーを押しても文字が入力されない
原因:ノーマルモードになっている
解決方法
1. i を押して挿入モードに切り替える
2. 画面下部に "-- INSERT --" が表示されることを確認
3. 文字を入力する
「変な文字が表示される」
症状:ノーマルモードで文字キーを押すと、予期しない動作が起こる
解決方法
1. u を押して元に戻す
2. 必要に応じて :q! で強制終了
3. 落ち着いてから再度やり直す
「保存できない」
症状::w で保存しようとするとエラーが出る
考えられる原因と対処法
# ファイル名を指定していない場合
:w filename # ファイル名を指定して保存
# 権限がない場合
:w! # 強制保存を試行
:w ~/filename # ホームディレクトリに保存
# 読み取り専用ファイルの場合
:w newfilename # 別名で保存
設定とカスタマイズ
基本的な設定(.vimrc)
# ~/.vimrc ファイルに記述する基本設定
" 行番号を表示
set number
" 相対行番号を表示(現在行からの相対位置)
set relativenumber
" シンタックスハイライトを有効化
syntax on
" インデントを自動設定
set autoindent
set smartindent
" タブ設定
set tabstop=4 " タブの表示幅
set shiftwidth=4 " 自動インデントの幅
set expandtab " タブをスペースに変換
" 検索設定
set ignorecase " 大文字小文字を区別しない
set smartcase " 大文字が含まれている場合は区別する
set hlsearch " 検索結果をハイライト
set incsearch " 入力中にリアルタイム検索
" 見た目の設定
set cursorline " 現在行をハイライト
set showmatch " 括弧の対応を表示
set laststatus=2 " ステータスラインを常に表示
" バックアップファイルを作成しない
set nobackup
set noswapfile
トラブルシューティング

パフォーマンス問題
動作が重い場合
原因と対処法
# 大きなファイルを開いている場合
:set nohlsearch # 検索ハイライトを無効化
:syntax off # シンタックスハイライトを無効化
# プラグインが原因の場合
:set noloadplugins # プラグイン読み込みを停止
# 行番号表示が原因の場合
:set nonumber # 行番号表示を無効化
メモリ使用量が多い場合
# Vim設定の見直し
set nobackup # バックアップファイル作成を停止
set noswapfile # スワップファイル作成を停止
set noundofile # アンドゥファイル作成を停止
文字化け問題
ファイルエンコーディング
# エンコーディングの確認
:set fileencoding?
# エンコーディングの変更
:set fileencoding=utf-8
:set fileencoding=sjis
# ファイルを再読み込み
:e ++enc=utf-8
キーマッピングの問題
カスタムキーマッピング
# 現在のキーマッピングを確認
:map
# 特定のキーのマッピングを確認
:map <key>
# キーマッピングを削除
:unmap <key>
まとめ
Vimは最初こそ戸惑いますが、基本操作に慣れれば作業スピードが格段に向上するエディタです。
重要なポイントのおさらい
- 3つのモード:ノーマル、挿入、コマンドの使い分けが基本
- キーボード中心:マウスに頼らない効率的な操作
- 組み合わせコマンド:単純なコマンドを組み合わせて複雑な操作を実現
- 継続的な学習:少しずつでも毎日触ることが上達の秘訣
コメント