はじめに
この記事はVim完全マスターを目指すものではなく、「困ったときにとりあえず使える」レベルを目標にしています。
Vimの基本:「モード」という概念
Vimには複数の「モード」があり、今どのモードにいるかによって、キーの動作が変わります。
| モード | 概要 |
|---|---|
| ノーマルモード | 起動直後のモード。移動や削除などの操作をする |
| インサートモード | 文字を入力するモード |
| ビジュアルモード | テキストを選択するモード |
| コマンドラインモード | 保存・終了などのコマンドを実行するモード |
迷ったらとりあえず Esc を押す。どのモードからでもノーマルモードに戻れます。
起動と終了
# ファイルを開く
vim ファイル名
# 新規作成して開く
vim 新しいファイル名
終了コマンド(コマンドラインモードで入力)
ノーマルモードで : を押すとコマンドラインモードになります。
| コマンド | 動作 |
|---|---|
:w |
保存(上書き) |
:q |
終了(変更がなければ) |
:wq or :x
|
保存して終了 |
:q! |
変更を破棄して強制終了 |
:q! は「保存しなくていいから早く出してくれ!」のときに使います。
モードの切り替え
ノーマルモード → インサートモード
| キー | 動作 |
|---|---|
i |
カーソルの前から入力 |
a |
カーソルの後ろから入力 |
I |
行の先頭から入力 |
A |
行の末尾から入力 |
o |
現在行の下に新しい行を作って入力 |
O |
現在行の上に新しい行を作って入力 |
i と a の違いで最初詰まる人が多い気がします。i がinsert(前)、a がappend(後ろ)と覚えるといいかも。
インサートモード → ノーマルモード
| キー | 動作 |
|---|---|
Esc |
ノーマルモードへ戻る |
Ctrl + [ |
Esc と同じ(こっちのほうが指が楽という人もいる) |
カーソル移動
ノーマルモードでのカーソル移動です。矢印キーでも動きますが、hjklに慣れると手がホームポジションから離れなくて地味に楽。
基本移動
| キー | 動作 |
|---|---|
h |
左 |
j |
下 |
k |
上 |
l |
右 |
行の移動
| キー | 動作 |
|---|---|
0 |
行の先頭へ |
^ |
行の最初の文字(空白を除く)へ |
$ |
行の末尾へ |
gg |
ファイルの先頭へ |
G |
ファイルの末尾へ |
{行番号}G |
指定した行番号へ(例:10G で10行目へ) |
単語単位の移動
| キー | 動作 |
|---|---|
w |
次の単語の先頭へ |
b |
前の単語の先頭へ |
e |
次の単語の末尾へ |
編集操作
削除
| キー | 動作 |
|---|---|
x |
カーソル位置の1文字を削除 |
dd |
現在行を削除 |
dw |
カーソル位置から次の単語の手前まで削除 |
d$ |
カーソル位置から行末まで削除 |
{数字}dd |
指定した行数を削除(例:3dd で3行削除) |
コピー(ヤンク)とペースト
| キー | 動作 |
|---|---|
yy |
現在行をコピー |
yw |
単語をコピー |
y$ |
カーソル位置から行末までコピー |
p |
カーソルの後ろ(または次の行)にペースト |
P |
カーソルの前(または前の行)にペースト |
Vimでの「コピー」はヤンク(yank)と呼びます。y はyankの頭文字。
アンドゥとリドゥ
| キー | 動作 |
|---|---|
u |
アンドゥ(元に戻す) |
Ctrl + r |
リドゥ(やり直し) |
u は連続で押すとどんどん戻れます。
検索と置換
検索
ノーマルモードで以下を入力します。
| コマンド | 動作 |
|---|---|
/検索ワード |
下方向に検索 |
?検索ワード |
上方向に検索 |
n |
次の一致箇所へ |
N |
前の一致箇所へ |
置換
コマンドラインモードで入力します(: を押してから)。
| コマンド | 動作 |
|---|---|
:%s/置換前/置換後/g |
ファイル全体で置換 |
:s/置換前/置換後/g |
現在行のみ置換 |
:%s/置換前/置換後/gc |
一つずつ確認しながら置換 |
/gc の c は confirm(確認)の意味。本番ファイルをいじるときは c をつけておくのがおすすめです。
ビジュアルモード
範囲選択して操作したいときに使います。
| キー | 動作 |
|---|---|
v |
文字単位での選択開始 |
V |
行単位での選択開始 |
Ctrl + v |
矩形(ブロック)選択開始 |
選択後に d で削除、y でコピー、c で削除して入力など。
その他よく使う操作
| キー / コマンド | 動作 |
|---|---|
. |
直前の操作を繰り返す |
>> |
インデントを増やす |
<< |
インデントを減らす |
:set number |
行番号を表示 |
:set nonumber |
行番号を非表示 |
Ctrl + f |
1ページ分下にスクロール |
Ctrl + b |
1ページ分上にスクロール |
. は地味に便利で、例えば dw(単語削除)したあとに . を押すと同じ削除が繰り返せます。