初心者必見!Vimの基本操作まとめ|最初に覚えるべきキー&使い方ガイド

その他

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つのモード:ノーマル、挿入、コマンドの使い分けが基本
  • キーボード中心:マウスに頼らない効率的な操作
  • 組み合わせコマンド:単純なコマンドを組み合わせて複雑な操作を実現
  • 継続的な学習:少しずつでも毎日触ることが上達の秘訣

コメント

タイトルとURLをコピーしました