vim チートシート(よく使うものだけ)

個人的によく使うコマンドのメモ

設定

設定ファイルの場所

  • 自分用 : ~/.vimrc
  • ユーザー共通 : /usr/share/vim/vimrc など

オススメ設定

" tab幅
set tabstop=4
set shiftwidth=4

" 行番号表示
set number

" 行頭, 行末を越えて移動
set whichwrap=b,s,[,],<,>

" バッグスペースで改行削除
set backspace=indent,eol,start

" 全角文字の設定
set ambiwidth=double

コマンド

ファイル操作系

コマンド意味
:q
:q!
ファイルを閉じる
!をつけると、変更を破棄して強制的に閉じる
:w
:w!
保存する
!をつけると、読み込み専用ファイルでも強制的に保存してしまう
(root権限で書き込める?)
:wq
:wq!
保存してファイルを閉じる
!をつけると、強制的に保存して閉じられる

モード変更系

コマンド意味
i, I編集モードににする
iはカーソルの前に挿入
Iは行頭に挿入
a, A編集モードにする
aはカーソルのあとに挿入
Aは行末に挿入
o, O編集モードにする
行を追加して挿入
oは次の行に追加する
Oは現在行に追加する
ESC編集モードから抜ける
vビジュアルモード。
任意の範囲をコピーしたいときなど。
→ビジュアルモード中の操作は別項目にまとめる
<CTRL+v>矩形選択のビジュアルモード
→矩形選択は別項目にまとめる

編集系

コマンド意味
uやり直し(undo)
<CTRL+r>やり直しを戻す(redo)
xカーソル位置を一文字切り取り
Dカーソル位置から後ろを切り取り
yy, Yカーソル行をコピー(ヤンク)
ddカーソル行を切り取り
p
P
張り付け。ペースト
pはカーソルの後ろに張り付け
Pはカーソル位置に張り付け
r(文字)カーソル位置にある文字を指定した文字で上書きする
設定ファイルのパラメーターを変える時などに便利

ビジュアルモード

コマンド意味
vビジュアルモードに入る
カーソルで範囲選択できるようになる
y文字列選択した範囲をコピー(ヤンク)する
u, Uuは選択範囲を小文字にする
Uは選択範囲を大文字にする
ESCビジュアルモードから抜ける

矩形選択

コマンド意味
<CTRL+v>矩形選択モードに入る
d削除
I選択範囲の先頭に挿入モード
A選択範囲の後に挿入モード
s, c矩形選択範囲を削除して挿入モードに入る

カーソル移動系

コマンド意味
←, h
↓, j
↑, k
→, l
一文字(一行)だけ移動
数字↑
数字↓
数字→
数字←
数式分だけ移動
0 (ゼロ)
^
行頭に移動
^は空白, tabが行頭にある場合は文字の先頭に移動
$行末に移動
+次の行の先頭に移動
-上の行の先頭に移動
ggファイルの先頭に移動
Gファイルの末尾に移動
:数字
数字G
指定した行に移動
w
W
次の単語に移動
大文字(W)にすると"."を単語 の区切りとして扱わない
e
E
次の単語に移動(単語の最後)
大文字(E)にすると"."を単語 の区切りとして扱わない
b
B
次の単語に移動(単語の先頭)
大文字(B)にすると"."を単語 の区切りとして扱わない
ge前の単語に移動
%対応する括弧に移動
<CTRL+b>1画面上へ移動
<CTRL+f>1画面下へ移動
<CTRL+u>半画面上へ移動
<CTRL+d>半画面下へ移動

検索系

文字列検索

コマンド意味
/文字列順方向に文字列検索
?文字列逆方向に文字列検索
n順方向に繰り返し
N逆方向に繰り返し
#カーソル位置の単語を順方向に検索
/\v(正規表現)正規表現で順方向に検索

一文字検索

コマンド意味
f(文字)カーソルより後ろの指定文字に移動。検索範囲はカーソル行のみ
F(文字)カーソルより前の指定文字に移動。検索範囲はカーソル行のみ
;次の検索文字
,前の検索文字

置換

基本コマンド

:(検索対象)s/検索文字列/置換文字列/(オプション)

検索対象意味
(指定なし)検索対象はカーソル行のみ
%検索対象はファイル全体
,$検索対象はカーソル行以降
(数字1),(数字2)検索対象は(数字1)行から(数字2)行まで

オプション意味
gヒット文字列をすべて置換する
cヒット文字列ごとに確認しながら置換する

タブ

コマンド意味
:tabe
:tabedit
新しいタブを開く
:tabe ファイル名
:tabedit ファイル名
指定したファイルを新規タブで開く
:tabc
:tabclose
現在のタブを閉じる
:tabn
:tabnext
gt
次(右)のタブに移動
:tabp
:tabprevious
gT
前(左)のタブに移動
:tabn数字数字で指定したタブに移動
左のタブから順に1,2,3,…となる。

画面分割

コマンド意味
:vs縦に分割する。
新しい分割ウインドウには現在のファイルを表示する
:vs ファイル名縦に分割する。
新しい分割ウインドウには指定したファイルを表示する
:sp横に分割する。
新しい分割ウインドウには現在のファイルを表示する。
:sp ファイル名横に分割する。
新しい分割ウインドウには指定したファイルを表示する。
<CTRL+w> c現在のウインドウを閉じる
<CTRL+w> w次のウインドウへ移動
<CTRL+w> >現在のウインドウの幅を1広げる
<CTRL+w> <現在のウインドウの幅を1狭める

整形

コマンド意味
>右へインデント
<左へインデント

マクロ

コマンド意味
q[任意の文字]マクロ記録開始
記録したマクロは[任意の文字]に関連付けられる
qマクロ記録終了
@[任意の文字]
[数字]@[任意の文字]
記録したマクロを実行する
@の前に数字をつけると指定した数字の分だけ繰り返す
@@
[数字]@@
直前に実行したマクロを実行する
@の前に数字をつけると指定した数字の分だけ繰り返す
:reg
:reg [任意の文字]
登録したマクロを表示する
regの後に[任意の文字]をつけるとその文字に対応するマクロだけを表示する

その他

コマンド意味
!(コマンド)unixコマンドを実行する
!!(コマンド)unixコマンドを実行し、出力を挿入する