Vimの基本操作まとめ(少しずつ更新)

最近はIntelliJやVS Codeなどの高機能エディタの使い勝手が良いです。

なのでVimを開発用のエディターとして使う人は少ないようですが、ターミナルで操作するあの独特な感覚は中毒性があり、ギークな魅力があります。

それにサーバーでの作業など、特定の環境下ではVim以外の選択肢が選べない状況もあるかと思います。

この記事ではVimのカーソル移動やテキストオブジェクトなどの基本的な操作をまとめていきます。

モードの切り替え

esc … ノーマルモード

i, a, o など… インサートモード

esc の後に : … コマンドモード

ctrl + v … ビジュアルモード

esc の後に :terminal…ターミナルモード

基本の操作・テキストオブジェクト

カーソルの移動

h j k l を使う。

h … 左

j … 下

k … 上

l … 右

もっと大雑把なカーソル移動

数字の 0 … カーソル行の行頭へ移動

$ … カーソル行の行末へ移動

w … 次の単語の先頭へ移動

b … 前の単語の先頭へ移動

e…単語の末尾へ移動

ge…前の単語の末尾へ移動

gg … ファイル先頭へ移動

G … ファイル末尾へ移動

{count}G…{count}行へ移動…例→ 3G で3行目へ

対応する括弧に移動

()や{}、[]などの対応する括弧へ移動できる。

Shift + %…対応する括弧に移動

fコマンドでの移動

f を入力した後に任意の文字を入力すると、カーソル位置から前方一致検索をしてくれる。さらに ; を打つと、fコマンドを繰り返し実行してくれる。 , を押せばfコマンドを逆方向に繰り返す。

コピー・貼り付け・削除・切り取り

vimではコピーを ヤンク、貼り付けを プット と言う。

単語・範囲を選択してコピー

yw … 単語をヤンク

ctrl + v して範囲を選択後に y … 範囲を選択してヤンク

文字・単語を削除

x … カーソル位置の文字を1文字削除

s … カーソル位置の文字を1文字削除してインサートモードに入る

dw … カーソル位置から右側の文字を単語単位で削除

daw…カーソル位置の単語を削除(delete a wordの語呂合わせで覚えると良い)

cw … カーソル位置の単語を削除しつつインサートモードに入る

カーソル位置から右 or 左側削除

d$…カーソル位置から右側を削除

d# or d^…カーソル位置から左側を削除

括弧やダブルクォーテーション(")内の単語を削除

di" … ダブルコーテーションの中身を削除

di( … 括弧の中身を削除

da" … ダブルクオーテーションも含めて削除

da( … 括弧も含めて削除

行ごと削除・コピー

dd … カーソル行を行ごと削除

yy … カーソル行をヤンク

複数行の削除・コピー

複数行の削除・ヤンクをしたい時は先頭に数字をつける。

例えば下記で、カーソル行から数えて3行分をまとめて削除

3dd

3ddj … カーソル行と下3行を削除

3ddk … カーソル行つ上3行を削除

yy も同上

全ての行の削除・コピー

dd や yy の前に 10000 とかめちゃくちゃでかい数字を入力する。

10000dd … カーソル行から10000行を削除

貼り付け(プット)

p … カーソル行の下に空白行を挿入し、貼り付け(プット)。

P … カーソル行の上に空白行を挿入し、貼り付け(プット)。

切り取り

dd や dw などで削除した行や単語は自動的にヤンクされるので、そのまま p or P で貼り付ければOK。

検索

/hoge … 単語「hoge」をカーソルより後方へ向かって検索

?hoge …単語「hoge」をカーソルより前方へ向かって検索

n または N を押下すると次の単語を続けて検索できる。

置換

:%s/置換前/置換後/ … ファイル全体を対象に全て置換する

%はファイル全体を、 s はsubstitution(置換)を表す。

:%s/置換前/置換後/g … ファイル全体を対象に、カーソル行の文字列の置換を行う

:%s/置換前/置換後/c … ファイル全体を対象に、確認しながら置換する

確認が表示された時の操作は次のようなものがある。

y … 置換する

n … 置換しない

a … 全て置換する

q … 置換終了

ファイルの上書き保存・終了

:w … 上書き保存

:q… 保存せずに終了

:wq … 上書き保存して終了

:q! … 変更分があったとしても保存せずに強制終了

指定の行番号へジャンプ

:n … n行目へジャンプ

例えば :10 とすると10行目へジャンプする。

行頭に行番号をつける/表示する

:set number … 全ての行頭に行番号を表示する

行番号をデフォルトで表示する設定

ホームディレクトリに .vimrc ファイルを作成し、

vi ~/.vimrc

set number を記入して保存

その後 source コマンドで.vimrcを実行する

source ~/.vimrc

インデントの操作

>>…カーソル行のインデントを右へ

<<…カーソル行のインデントを左へ

gg=G…全ての行のインデントを整える

インクリメント・ディクリメント

下記のショートカットで数字のインクリメント・ディクリメントができます。

ctrl + a…インクリメント

ctrl + x…ディクリメント

大文字・小文字の切替

下記で選択されている文字列の大文字・小文字の入れ替えができます。

ctrl + ^…大文字・小文字の入れ替え

タブ・スプリット機能

複数のファイルをタブとして開いたり、画面を分割して表示したりできます。

:tabe hogehoge…hogehogeファイルを別タブで開く

:tabnew hogehoge…hogehogeファイルを新規作成し、別タブで開く

:vs…開いているファイルを垂直方向に分割して開く

:sp…開いているファイルを水平方向に分割して開く

:vs hogehoge…hogehogeファイルを垂直方向に分割して開く

タブの移動は gt or gT

スプリットした画面の移動は↓

ctrl + w + h…左

ctrl + w + j…下

ctrl + w + k…上

ctrl + w + l…右

バッファー

vimのメモリ上に編集対象のファイルを展開できる、見えないメモ帳のような機能。一度閉じたファイルを再度開き直したりできます。

:b hogehoge…バッファーにある対象のファイルを開く。ファイル名はtabで補完可能。

:ls…バッファーの一覧を確認

:bd hogehoge…対象のファイルのバッファーを取り除く(ファイルの実態は残る)。

その他小技

r x… r を押した後に何か文字を一つ入力すると、カーソル位置の文字を置き換えることができる。

vim -u NONE -N…vimが終了している状態でこのコマンドを実行すると、vimrcを読み込まずにvimを起動することができる。