はじめに
Vimが本当に便利だ!と言われて触り始めたのですが、覚えることがとても多く何度も挫折しそうになりました。今でこそかなり使いこなせるようになりましたが、現在に至るまでにはとても長い道のりが、、、
Vimコマンドに慣れるコツ
- とにかく使ってみる
- 1つ1つ使えるコマンドを増やしていく
この2つがコツだと思いますが、特に2番がキツイです。どのサイトを見てもコマンドが大量に並んでいて「こんなに覚えるのかあああ」となってしまいます。このページでは、レベル別にコマンドを小出しにすることで、ちょっとずつ慣れていき、気がついたらかなり使いこなせるようになったという状況を作り出したいと思います。
レベル0(大前提)
vimには4つのモードがある(カッコ内はそのモードへ行くためのコマンド)
- ノーマルモード(esc)
- 入力モード(i)
- 選択モード(v)
- コマンドモード(:)
レベル1(これを知らないとそもそも何もできない)
h 左へ移動
j 下へ移動
k 上へ移動
l 右へ移動
x (カーソル下の文字を)削除
i (カーソル左に)挿入
:w 保存
:q 終了
:wq 保存して終了
:q! 保存せずに終了
レベル2(ここまで知ってやっと普通に作業ができる)
v 選択(選択モード)
y (カーソル上の文字を)コピー (選択モード時)
p (右or下に)ペースト
u 直前の作業の取り消し
レベル3(移動スピードを上げる その1)
w 1単語左へ移動
b 1単語右へ移動
gg 先頭行へ移動
G 最終行へ移動
^ 行頭へ移動
$ 行末へ移動
レベル4(挿入スピードを上げる)
i (カーソル左に)挿入 ←レベル1でやった基本
a (カーソル右に)挿入
o (下の行に)挿入 ←小文字の「オー」
O (上の行に)挿入 ←大文字の「オー」
I (行頭に)挿入
A (行末に)挿入
レベル5(選択モード)
v (カーソル上の文字を)選択→その後上下左右で選択範囲を広げられる
V (1行)選択
ctrl + v (縦に)選択
レベル6(移動スピードを上げる その2)
e 単語末へ移動
E 直前の単語末へ移動
% 対応する括弧へ移動
レベル7(削除スピードを上げる)
x (カーソル下の文字を)削除 ←レベル1でやった基本
X (カーソル左の文字を)削除
dd (1行)削除
ndd (n行)削除
dw (カーソル位置から単語末尾までを)削除
d$ (カーソル位置から行末までを)削除
d% (カッコを中身ごと)削除
レベル8(コピー&ペースト)
yl 1文字コピー
nyl n文字コピー
yw 1単語コピー
nyw n単語コピー
yy 1行コピー
nyy n行コピー
y$ 行末までコピー
y% 対応する括弧までコピー
P (左or上に)ペースト
ペーストに関して
- コピーが文字単位だったら右or左にペーストされて、行単位だったら上or下にペーストされる
- xまたはdで削除した後にpコマンドを打つと削除した分がペーストされる(つまり削除=カット)
レベル9(変更=削除+挿入)
r (カーソル下の)文字の置き換え(「r+置換したい文字」で使用する)
s (カーソル下の文字を)削除+挿入モードに
ns (n文字)削除+挿入モードに
ciw(選択中の文字を)削除+挿入モードに
cw(カーソルから単語末まで)削除+挿入モードに
c$(カーソルから行末まで)削除+挿入モードに
c%(カッコを中身ごと)削除+挿入モードに
レベル10(移動スピードを上げる その2)
w 次の単語の先頭へ移動(行中を早く進みたい時に使用)
b 前の単語の先頭へ移動
e 次の単語末へ移動
ctrl + f 次のページへ移動(ファイル内を早く進みたい時に使用)
ctrl + b 前のページへ移動
nG n行目へ移動
% 対になる()or{}or[]へ移動
とりあえずこれくらいにします。僕自身もまだまだ勉強途中なので、新しいコマンドを覚えたら追加します。「ここ間違ってるよ!」とか「こんなコマンドあるよ!」とかあったらコメントください!
ちなみに、普段はrubyMineのキーバインドをvimにして開発をしているので変な部分もあると思います。ご了承ください。