- 本記事の内容を知っていれば、基本的な操作やVimらしい事ができるようになると思います。
-
例えば... カーソルの高速移動や削除したい範囲の直感的な削除等
-
UdemyのVim Masterclassで学んだ内容です。
-
-
「コマンドモード、Insertモードの切り替え方法は知っているけれど、その他はよくわからない」という方に適していると思います。
- 「なんだそれは」という方は、上記のVim Masterclassやこのあたりの動画などをどうぞ。VimMasterclassはかなりおすすめです。
#目次
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. 範囲指定
- :%sのように別のコマンドと組み合わせて使用
キー | やりたい事 |
---|---|
: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を挿入