LoginSignup
3
5

More than 3 years have passed since last update.

Vimコマンド覚書き ~初心者がやりたいことをスラスラできるようになる!~

Last updated at Posted at 2021-01-02

目次

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 文章全体のhogefugaに変換。
1行で複数回hogeが出てきても置換
(/gがないと行の最初のhogeだけが置換)
:1,5s/hoge/fuga/ 1-5行目までのhogeを置換で。なお、%は1,$を表す
:/cat/,/dog/s/hoge/fuga/g catdogの間の行のhogefugaに置換
:/cat/,$s/hoge/fuga/g cat以降のhogefugaに置換
  • 特殊文字(/ & ! . ^ * $ \ ?)のエスケープにはバックスラッシュ(\)を使用する。
    • 例えば、"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 前回の選択範囲を再現

複数行にコメントアウトを追加 (文頭に文字を挿入)

  1. shift+v(もしくはctrl+v)でコメントアウトしたい範囲を選択
  2. I\$<esc>で先頭に$を追加 (I: shift + i)

複数の行末に文章を追加

  1. ctrl+vで文章を追加したい範囲の文頭を選択
  2. \$で選択した複数行の文末まで移動
  3. A(shift+a) hogehoge で文末にhogehogeを挿入
3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5