vimコマンド一覧・基本編で開いて直して保存できるようになったら、次はこのあたり。ここから先は「覚えると楽になる」もので、知らなくても作業は進む。
検索と置換
ファイルの中を探すのはvimの得意分野。grepがファイルをまたいで探すのに対し、こちらは開いているファイルの中を探す。
| コマンド | やること |
|---|---|
/文字列 |
下方向に検索する(Enterで実行) |
?文字列 |
上方向に検索する |
n / N |
次の一致へ/前の一致へ |
* |
カーソル位置にある単語をそのまま検索する |
:noh |
検索結果のハイライトを消す |
:%s/前/後/g |
ファイル全体を置換する |
:%s/前/後/gc |
1件ずつ確認しながら置換する(yで置換、nで飛ばす) |
:%s/前/後/gの%はファイル全体、gは各行のすべての一致を意味する。置換は一気に実行されるので、不安なときはcを付けて確認しながら進めるのが安全。やり直しはuで戻せる。
行番号とジャンプ
| コマンド | やること |
|---|---|
:set number |
行番号を表示する(:set nonumberで消す) |
:42 |
42行目へ飛ぶ(42Gでも同じ) |
Ctrl+f / Ctrl+b |
1画面分、下へ/上へ |
Ctrl+d / Ctrl+u |
半画面分、下へ/上へ |
% |
対応する括弧へ飛ぶ((と)、{と}など) |
エラーメッセージに「32行目」と出たときは:32が最短。
回数を指定する・繰り返す
vimが速いと言われる理由がこのあたり。数字を先に打つと「その回数だけ」実行される。
| コマンド | やること |
|---|---|
3dd |
3行まとめて削除する |
5j |
5行下へ移動する |
10yy |
10行コピーする |
. |
直前にやった変更を、もう一度繰り返す |
.(ドット)は地味だが繰り返しが速い。1か所直したあと、次の場所にカーソルを移して.を押せば同じ修正が入る。
ビジュアルモード(範囲選択)
マウスでドラッグする代わりに、キーボードで範囲を選ぶモード。
| コマンド | やること |
|---|---|
v |
文字単位で選択を開始する |
V |
行単位で選択を開始する |
Ctrl+v |
矩形(長方形)で選択を開始する |
選択した状態で、yでコピー、dで削除、>または<でインデントの増減。抜けるのはEsc。
コピペとクリップボード
vimのyy/pはvim内部の控えを使うので、そのままでは他のアプリと行き来できない。パソコン全体のクリップボードを使うには、"+(プラスレジスタ)を頭に付ける。
| コマンド | やること |
|---|---|
"+yy |
1行をパソコンのクリップボードにコピーする |
"+p |
パソコンのクリップボードから貼り付ける |
:set paste |
貼り付けが階段状にずれるときの対処(終わったら:set nopaste) |
"+が使えるかどうかはvimのビルドによる。vim --versionと打って+clipboardと出ていれば使える(-clipboardなら非対応)。macOSに最初から入っているvimは対応している(管理人のMac、macOS 26.2での実測)。
複数ファイルと画面分割
| コマンド | やること |
|---|---|
:e ファイル名 |
別のファイルを開く |
:sp ファイル名 |
画面を上下に分割して開く |
:vs ファイル名 |
画面を左右に分割して開く |
Ctrl+w → h j k l |
分割した画面の間を移動する |
Ctrl+w → q |
今いる画面を閉じる |
:tabnew ファイル名 |
タブで開く |
gt / gT |
次のタブへ/前のタブへ |
Ctrl+wは「ウィンドウ操作の合図」で、押したあとに続けてもう1キー打つ。
よくあるトラブル
「ATTENTION / Found a swap file」と出た
vimを開いたら英語の警告が出て止まった、というやつ。前回vimが正常に終了しなかったか、同じファイルを別の場所で開いているときに出る。vimが作業用の控え(スワップファイル)を見つけて確認してきている。
選択肢が並ぶので、目的に応じて頭文字のキーを押す。
O(Open Read-Only):とりあえず読むだけ。中身を確認したいならこれが無難E(Edit anyway):そのまま編集する。同じファイルを二重に開いているときは、片方の編集が消えることがあるR(Recover):前回の編集途中の内容を復元するQ(Quit):やめる。迷ったらこれで一度出て、状況を確認する
同じファイルを別のターミナルやセッションで開いていないか(tmuxを使っているとやりがち)を、まず疑うとよい。
保存できない
:wが拒否されるパターンは主に2つ。
- 読み取り専用として開いている(
:q!で出たあとOで開き直した場合など)。:w!で上書きできる - そもそもファイルの権限が無い。この場合は
:w!でも保存できない。いったん:q!で出て、chmodや置き場所を確認する
画面が固まった
Ctrl+s(保存のつもり)を押すと、ターミナルの表示が止まることがある。これはvimではなくターミナル側の機能で、Ctrl+qを押せば復帰する。
設定ファイル(.vimrc)
毎回:set numberと打つのが面倒になったら、ホームディレクトリの~/.vimrcに書いておくと、次からは最初からその状態で開く。
set number " 行番号を表示する
syntax on " 色分けする
set tabstop=2 " タブの幅を2にする
set expandtab " タブをスペースに置き換える
set ignorecase " 検索で大文字小文字を区別しない
"から行末までがコメント(vimの設定ファイルでは#ではなく")。ファイルが無ければ新規に作ればよい。
シェルの設定を~/.zshrcに書き溜めていくのと同じ発想で、「毎回打っているな」と思ったら設定ファイルに移すのが定石(→aliasという救世主)。
ヘルプの引き方
| コマンド | やること |
|---|---|
:help |
ヘルプを開く |
:help :w |
特定のコマンドのヘルプを開く |
ヘルプも1つの画面として開くので、閉じるのは:q。ここでも「開いたものからは:qで出る」の原則は同じ。