- 本記事の内容を知っていれば、基本的な操作やVimらしい事ができるようになると思います。
-
「コマンドモード、Insertモードの切り替え方法は知っているけれど、その他はよくわからない」という方に適していると思います。
目次
1. カーソル移動(コマンドモード)
2. 削除・上書き
3. 表示の調整
4. 編集(コマンドモード・Insertモード・マクロ)
5. 置換・検索
6. 保存・終了
7. 範囲指定
8. VISUALモード
1. カーソル移動
1文字/行移動
キー |
やりたい事 |
j |
下の行へ |
|
2jとすると2行下へ移動する(khlも同様) |
k |
上の行へ |
h |
左へ |
l |
右へ |
まとまった単位の移動
キー |
やりたい事 |
w |
次の単語へ |
b |
前の単語へ |
|
|
$ |
行末へ |
0 |
行頭へ |
|
|
G, :$<enter> |
文末へ移動 |
gg, :1<enter> |
文頭へ移動 |
50G, 50gg, :50<enter> |
50行目へ移動 |
|
|
ctrl + f |
次のページへ(forward) |
ctrl + b |
前のページへ(back) |
- ":hogehoge"のコマンドの場合、入力後<enter>の入力が必要
2. 削除と上書き
1文字ずつ削除/置換したい場合: Xコマンド/Rコマンド
キー |
やりたい事 |
x |
カーソル上の文字を削除 |
X (shift + x) |
カーソルの左隣りを削除 |
|
現在のカーソル位置と右隣の文字との入れ替えはxpで可能(pはpaste) |
r "c" |
現在のカーソルの文字を "c" (任意の一文字)に置換 |
|
ex) make->takeへの修正の場合、mまでカーソルを動かしてrt |
まとまった単位で削除したい場合: Dコマンド
キー |
やりたい事 |
dw |
1単語を削除 |
3dw |
3単語を削除 |
D (shift + d) |
現在の位置から行末まで削除 |
|
d$ と同じ意味 |
d0 |
現在の位置から行始めまでを削除 |
dj |
現在の行とその下の行を削除 |
dk |
現在の行とその上の行を削除 |
|
j,kはカーソル移動の項目と同じ意味 |
|
|
dd |
現在の行を削除(改行含む) |
10dd |
現在の行から10行削除 |
:10,20d<enter> |
10行目から20行目を削除 |
|
|
d/"hoge" |
現在のカーソルから"hoge"の手前までを削除 |
|
"/"は検索を意味する。hogeは |
dt. |
現在のカーソル位置から次の.までを削除 (.は好きな一文字でOK) |
|
tが現在の行の次の "." の1つ手前のカーソル位置を指す |
|
|
das |
現在カーソルが置かれている1文を削除 |
|
sがsentenseを表す aがallみたいな意味。つまりdelete all sentence->1文を削除 |
dap |
1パラグラフを削除 |
|
pがparagraphを表す |
|
|
di] (or[) |
[...]の中を削除(カーソルは括弧の中に置いておく) |
ci] (or[) |
[...]の中を削除後insert modeへ |
削除後にInesrt modeにしたい場合: Cコマンド
キー |
やりたい事 |
c |
削除後にinsert modeに入る。 dと同じようにコマンドを使用することができる |
|
例えばci[なら、[]内の文字を削除してその後insert modeに |
C |
現在の位置から行末までを削除してInsert mode (D が現在の位置から行末まで削除するのと対応) |
cc |
現在の行を削除してInsert modeへ (dd が現在の行を削除するのと対応) |
cw |
現在のカーソル上の単語を削除してInsertmodeへ |
cD, c$ |
現在のカーソルより後ろの文字を削除してInsert mode |
上書きモード
キー |
やりたい事 |
R(shift + r) |
文字を打つと、現在のカーソルの位置の文字が、タイプした文字と置換される |
|
<esc>でコマンドモードへ戻る |
3. 表示の調整
キー |
やりたい事 |
z<enter> |
カーソルが画面上部になるように移動 |
zz |
カーソルが画面中心になるよう移動 |
4. 編集
基本動作 [コマンドモード]
キー |
やりたい事 |
. |
直前の編集を繰り返す |
u |
直前の編集の取り消し(WindowsのCtrl+z) |
Ctrl + r |
ReDo (WindowsのCtrl+y) |
|
|
p |
現在のカーソルから右側にペースト |
P (shift + p) |
現在のカーソルから左側にペースト |
Insert modeへの色々な入り方 (Cコマンドも参照)
キー |
やりたい事 |
i |
現在の文字の位置でInsert modeへ |
I |
現在の行の先頭に移動してInsert modeへ |
a |
一文字進んでInsert modeへ |
|
ex) $で移動した後に文末にInsertしたい時にはこれを使う |
A |
現在の行末に移動してInsert modeへ |
|
|
o |
現在の1行下に改行してInsert modeに変更 |
5o "hoge" <esc> |
現在の行から下に "hoge" を5行追加 |
O (shift + o) |
1行上に改行してInsert mode |
|
|
J (shift + j) |
現在の行末の改行を削除して1つspaceを挿入。 |
|
つまり現在の行と次の行をspace1つ追加して合体させる。 |
gJ |
spaceの挿入なしで改行を削除 |
マクロ(複雑な作業の記録&再生)
キー |
やりたい事 |
qa |
aレジスタにマクロを記録の開始 (aの部分はb,c,d,...とレジスタ名なら何でもOK) |
q |
マクロの記録を停止 |
@a |
aレジスタのマクロを再生 |
:10,30 normal @a <enter> |
aレジスタのマクロを10-30行目に適用 |
|
":10,30"は10-30行目を意味する |
5. 検索と置換
行内の文字を検索して移動
キー |
やりたい事 |
f + c (1文字) |
現在の行の次cまで移動 |
|
;で同行の次の文字, ","で前の文字へ |
t + c (1文字) |
現在の行の次cの手前まで移動 |
* |
現在のカーソル上の単語が次に現れる位置まで移動(単語の完全一致で検索) |
文章全体を検索して置換(検索範囲は絞ることも可能)
キー |
やりたい事 |
:%s/hoge/fuga/g |
文章全体のhogeをfugaに変換。 1行で複数回hogeが出てきても置換 (/gがないと行の最初のhogeだけが置換) |
:1,5s/hoge/fuga/ |
1-5行目までのhogeを置換で。なお、%は1,$を表す |
|
|
:/cat/,/dog/s/hoge/fuga/g |
catとdogの間の行のhogeをfugaに置換 |
:/cat/,$s/hoge/fuga/g |
cat以降のhogeをfugaに置換 |
- 特殊文字(/ & ! . ^ * $ \ ?)のエスケープにはバックスラッシュ(\)を使用する。
- 例えば、"INCL\hoge.txt"をfuga.mdに置換したい場合、:%s/INCL\\hoge/fuga\.md/g と入力してenter
- [補足] \は¥と同じ
- 選択範囲については、範囲指定(@Link in Page)を参照ください。
6. 保存と終了
キー |
やりたい事 |
:wq |
保存してvimを終了 |
:q! |
保存せず終了。変更は無視。 |
:w |
保存(vimは終了しない) |
7. 範囲指定
キー |
やりたい事 |
:10,20 |
10-20行目まで |
:% |
文章全体 |
:.,$ |
現在の位置から文末まで |
|
.が現在のカーソル位置の行、$が文末を意味する |
8. VISUALモード
基本操作
キー |
やりたい事 |
v |
Visualモード(文字単位で選択) |
Shift + v |
Visual Lineモード(行単位で選択) |
ctrl + v |
Visual Blockモード(矩形で選択) |
gv |
前回の選択範囲を再現 |
複数行にコメントアウトを追加 (文頭に文字を挿入)
- shift+v(もしくはctrl+v)でコメントアウトしたい範囲を選択
- I$<esc>で先頭に$を追加 (I: shift + i)
複数の行末に文章を追加
- ctrl+vで文章を追加したい範囲の文頭を選択
- $で選択した複数行の文末まで移動
- A(shift+a) hogehoge で文末にhogehogeを挿入