vim の便利な機能をマスターしよう

vim はコンソール上で操作するテキストエディタです。自分のPCで何かのファイルを閲覧したり編集したりする時は、GUIが提供されているアプリケーションを使うことが多いと思いますが、サーバに SSH する時はコンソールで操作するしかないので、vim などのコンソールでテキストを操作するコマンドを使用することになります。

vim のモード

vim はモードによって挙動が変わります。最初にファイルを開いた時はノーマルモードになっており、ファイル内を移動・検索したり、他の3つのモードに切り替えることができます。

ノーマルモードの状態で、
i を押すと挿入モードになり、入力した文字をそのままテキストに書き込めるようになります
v を押すとビジュアルモードになり、現在のカーソル位置から範囲選択ができるようになります
: を押すとコマンドモードになり、vim の設定やファイルの保存などができるようになります

挿入モード、ビジュアルモード、コマンドモードからノーマルモードに戻る場合は、escを押します。vim を使う時はこのようにモードを切り替えながら作業を行い、最後はコマンドモードでファイルを閉じる、というのが主な流れになります。

以下、各モードでよく使う動作をまとめました。リファレンスとしてご利用ください。

挿入モード

移動
コマンド 説明
^ 現在行の先頭に移動
$ 現在行の末尾に移動
ctrl + f 次の画面に移動
ctrl + b 前の画面に移動
gg ファイルの先頭行に移動
G ファイルの最後の行に移動
w 次の単語の先頭に移動
b 前の単語の先頭に移動
e 次の単語の末尾に移動
Shift + w スペース区切りで次の単語の先頭に移動
Shift + b スペース区切りで前の単語の先頭に移動
Shift + e スペース区切りで次の単語の末尾に移動
f文字 現在行の中の指定した文字に移動。; を押すと次に移動
編集・削除
コマンド 説明
x カーソル上にある文字を削除
dd 1行削除(カットと同じなので、ペーストできる)
ndd n行削除
D カーソル位置から行末までを削除
cw 選択中の単語を削除し、挿入モードに変更/td>
コピー&ペースト
コマンド 説明
yl 1文字コピー
nyl n文字コピー
yy 現在行をコピー
nyy n行をコピー
p ペースト
検索
コマンド 説明
/文字 Enterで検索開始。n: 下方向に検索 N: 上方向に検索
/[ctrl + p] コピーした文字の貼り付け
取り消し
コマンド 説明
u 前の操作を取り消す
ctrl + r 取り消したものを再度元に戻す
保存・終了
コマンド 説明
ZZ 保存して終了

ビジュアルモード

コマンド 説明
→↓←↑ 選択範囲を指定
y 選択した範囲をコピーしてビジュアルモード終了
x 選択した範囲を削除してビジュアルモード終了
shift + $ 行選択

コマンドモード

コマンド 説明
w 保存
w ファイル名 名前をつけて保存
q 終了
q! 変更を保存せずに終了
set number 行数表示。set nonumber で元に戻る
syntax on シンタックスハイライトをONにする
set ignorecase 検索時に大文字、小文字を区別しない。元に戻すには set noignorecase とする
置換
コマンド 説明
s/変更対象の文字/置換する文字/ 現在行の対象文字列を1カ所のみ置換
s/変更対象の文字/置換する文字/g 現在行の対象文字列をすべて置換
%s/変更対象の文字/置換する文字/g ファイル内の対象文字列をすべて置換(1回ごとに確認)

補足

挿入モードへの切り替えは他にも2つあります。違いはどの位置から挿入を開始するかです。

コマンド 説明
i 現在のカーソル位置から
A 現在行の末尾から
o 現在行の1行下から