Vim初心者の私がVimを数週間使った上で最低限必要だと感じたVim操作(入力、移動 etc.)に関して簡単にまとめます。備忘録投稿です。
#vimの5つのモード
実際には他にもモードがあるかもしれないが、とりあえず、この5つを押さえておけば問題ないです。
モード | 意味 | 代表的なkey |
---|---|---|
NORMAL | ノーマルモード | esc, Ctrl + c, Ctrl + [ |
INSERT | 入力モード | i |
VISUAL | ビジュアルモード | v |
REPLACE | 上書きモード | R |
COMMAND | コマンドラインモード | :(コロン) |
#移動
移動はノーマルモードで行います。
key | 意味 |
---|---|
h | ←(左に移動) |
j | ↓(下に移動) |
k | ↑(上に移動) |
l | →(右に移動) |
e | 単語の最後へ移動 |
w | 次の単語の先頭へ移動 |
b | 前の単語の先頭へ移動 |
^ | 行の先頭文字へ移動 |
0 | 行頭へ移動 |
$ | 行末へ移動 |
gg | ファイルの先頭へ移動 |
G | ファイルの末尾へ移動 |
% | 対応する括弧に移動([],{},()など) |
{ | 段落の先頭に移動 |
} | 段落の末尾に移動 |
zz | カーソル行が画面中央に来るようにスクロール |
Ctrl + f | ページアップ |
Ctrl + b | ページダウン |
Ctrl + u | 半ページアップ |
Ctrl + d | 半ページダウン |
Shift + m | カーソルを画面の中心へ移動 |
###3つのTips
-
4j
、3w
などのように数字
を先頭につけると、その数字
回数分移動できる。とても便利。 - コマンドラインモードで、行番号を入力し[Enter]を押すと、目的行に移動できる(つまり、ノーマルモードから**:行番号[Enter]**を押す)。
- 行内では、
f[目的の文字]
で、ジャンプすることができる。いくぶん移動が楽になる。
#入力1 (モードに移行前)
key | 意味 |
---|---|
i | 入力モードへ |
I | 行頭に移動して入力モードへ |
a | カーソルの後ろに移動して入力モードへ |
A | 行末に移動して入力モードへ |
o | 行の下に空行を作り、行頭から入力モードへ |
O | 行の上に空行を作り、行頭から入力モードへ |
C | カーソルから後ろをすべて削除して入力モードへ |
#入力2 (モードに移行後)
key | 意味 |
---|---|
Ctrl + y | 真上の文字と同じものが入力される |
Ctrl + e | 真下の文字と同じものが入力される |
Ctrl + h | バックスペース |
Ctrl + w | 単語ごとにバックスペース |
#基本操作
key | 意味 |
---|---|
y | ヤンク(コピー) |
Y | 行をヤンク |
p | カーソル後にペースト |
P | カーソル前にペースト |
x | カーソル下の一文字を削除 |
X | カーソル前の一文字を削除 |
d | 削除 |
D | 行内のカーソル以降を削除 |
dd | カーソルがある行を削除 |
u | 元に戻す(undo) |
Ctrl + r | 操作を進める |
r | 一文字変更 |
>> | 右へインデント |
<< | 左へインデント |
.(ピリオド) | 直前の操作を実行 |
q: | 履歴を確認 |
###6つのTips
- 移動の時と同様に、
数字
を基本操作の前につけることにより、操作を指定回数回繰り返すことができる。 -
q:
で履歴を確認すれば、過去のコマンドを実行することも可能。 - コピーはヴィジュアルモードで使うことが多い。
-
diw
(delete inner word)で、単語を切り取れる。 -
ya"
(yank all)でダブルクォーテーションで囲まれた文字列を囲みダブルクォーテーションごとコピー。 -
yi"
(yank inner)でダブルクォーテーションで囲まれた文字列をコピー(ダブルクォーテーションは除く)。
#検索
key | 意味 |
---|---|
* | カーソル下の単語を検索 |
# | カーソル下の単語を検索(上方向に検索) |
/[word] | wordを検索。n, Nでそれぞれ次と前の検索へ移動することができる |
?[word] | 同上(上方向に検索) |
###1つのTips
- 【キーワード検索】 同じキーワードで引き続き検索したいときは、キーワードを指定せずに**/か?**を入力してEnterキーを押せばよい。
#置換
key | 意味 |
---|---|
:%s/hoge/fuga/g | ファイル内で全てのhogeをfugaに置換 |
:%s/hoge/fuga/gc | 同上 + マッチした文字列を一つずつ確認しながら置換 |
:10,20s/hoge/fuga/g | 行間(10~20行)内でマッチした文字列のみ置換 |
#変更
行う内容は、削除 + インサートだが、要は変更(change)。
key | 意味 |
---|---|
ce | 単語の終わりまで削除し、インサートモードへ |
c$ | カーソルから行末まで削除し、インサートモードへ |
ciw | 単語を削除し、インサートモードへ |
ci( | 括弧( で囲まれた文字列を削除し、インサートモードへ |
#ウィンドウ
コマンドラインモード(:
タイプ後)で行う
key | 意味 |
---|---|
sp | ウィンドウを上下に分割 (split) |
vsp | ウィンドウを左右に分割 (vertically split) |
new | 新規ウィンドウとして上下に開く |
vnew | 新規ウィンドウとして左右に開く |
###1つのTips
-
[Ctrl-w]``[Ctrl-w]
で順番に移動できる。
#タブ
コマンドラインモード(:
タイプ後)で行う
key | 意味 |
---|---|
tabnew | 新規タブを開く |
gt | 次のタブに切り替え |
gT | 前のタブに切り替え |
#外部コマンドの実行
コマンドラインモード(:
タイプ後)では!
を先頭につけることで、外部コマンド(lsコマンドなど)を実行することができる。
#補足(ビジュアルモードについて少し)
Vimには3つのビジュアルモードがあります。
- エディタやワープロのように文字単位で選択するビジュアルモード
- 行単位で選択するビジュアルラインモード
- 矩形で選択するビジュアルブロックモード
の3種類だ。v
、V
、Ctrl + v
でそれぞれのビジュアルモードへ移行します。
visualモード中にshift + >
を入力することで、選択範囲のインデントもできます。複数回インデントさせたい場合には数字>
のように数字を加えて実行します。
#参考
#終わりに
Vimを数週間使った程度の私でさえ、Vimの恩恵を感じられました。移動の高速化、基本機能の充実、モード分けすることにより(keyを記憶したのち)、keyの組み合わせだけで痒い所に手が届く、等、まだまだ可能性を感じることができるテキストエディタです。
「できるエンジニアはVimを使っている」
そんなことを耳にはしていましたが、やんわりとその理由が理解できた気がします。他のエディタと比べて最初の学習コストは比較的高いですが、長いエンジニア人生、できるだけ早めに慣れておくことでますますVimの恩恵を享受することができるでしょう。
ここであげたのはVim初心者の私が、数週間という短い期間で必要としたものですので、とりあえずこれだけはマストのキー操作となると思います。