vim 簡単ガイド


忘備録として vim の簡単ガイドをまとめました。

ETC

操作 意味
コマンドラインにペースト :を押してコマンドラインに入った状態でCtrl-Rを押してから"を押すとコマンドラインにペースト
エンコーディング エンコードを指定して開き直す
:e ++enc=encoding
(encoding: euc-jp, shift_jis, utf-8, etc)
vimのエンコーディング確認 :set enc?
ファイルのエンコーディング確認 :set fenc?
ファイルのエンコーディング変更 :set fenc=encoding
(encoding: euc-jp, shift_jis, utf-8, etc)
検索、ジャンプ
(quickfix リスト)
:vimgrep, :grep など 実行後
:copen

キーボードマクロ

操作 意味
q[key] [key]で記録開始
q 記録中に押すことで記録終了
@[key] 記録したマクロを実行
(ex)
qa -> 操作 -> q -> @a
qc -> 操作 -> q -> @C

マーク

操作 意味
:marks mark一覧を表示する
m[a-zA-Z] カーソル位置をmarkする
`` 直前のマークへ移動
C-o 古いマークへ移動
C-i 新しいマークへ移動
`[a-zA-Z] 指定のマークに移動
'[a-zA-Z] 指定のマークの行頭に移動
:delmarks [a-zA-Z] マークの削除
:delmarks! マークの一括削除

検索

操作 意味
/ 続けて文字を打ち, Enterで文字列を確定し, 後方検索をかける
? 続けて文字を打ち, Enterで文字列を確定し, 前方検索をかける
* カーソル下の単語を, 後方検索する
# カーソル下の単語を, 前方検索する
g* カーソル下の単語を含む文字列を, 後方検索する
g# カーソル下の単語を含む文字列を, 前方検索する
n 次の単語に移る
N 前の単語に移る

UNDO / REDO

操作 意味
u undo(アンドゥ)一動作分、前の状態に戻す。
Ctrl + r redo(リドゥ)。アンドゥで戻した操作を、元に戻す。

バッファ操作

操作 意味
:ls, :buffers, :files 開いているバッファ一覧(バッファリスト)を表示する
:bfirst, :bf 先頭のバッファに移動する
:blast, :bl 最後のバッファに移動する
:bnext, :bn 次のバッファに移動する
:bprev, :bp 前のバッファに移動する
:b NUM NUM番目のバッファに移動する
:badd バッファにファイルをロードする (badd filename)
(別ファイルを新バッファに読み込み)
:bun[load] バッファメモリ開放 (バッファリストには残る)
:bd[elete] バッファをアンロードする
(現在のバッファを削除) :ls! では表示される
:bw[ipeout] バッファを完全に削除 :ls! でも表示されない
:enew :new :vnew 新規バッファを開く
:new filename 新規バッファでファイルを開く

モード移行

操作 意味
ESC コマンドモードへ移行
i カーソルの左隣へ挿入
a カーソルの右隣へ挿入
I カーソル行の先頭に挿入
A カーソル行の末尾に挿入
O カーソル行の上に1行空けて挿入
o カーソル行の下に1行空けて挿入

カーソル操作

操作 意味
h, j, k, l 左, 下, 上, 右
gj, gk 下, 上に1行移動
(エディタで表示されている行上で移動)
(つまり, エディタの横幅の制約によって行が折り返されている場合でも, 移動可能)
w 1単語分進む
W 1単語分進む(記号では区切られないので, 次のスペースや, 改行文字まで飛ぶ)
b 1単語分戻る
B 1単語分戻る(記号では区切られないので, 前のスペースや, 改行文字まで飛ぶ)
f[文字] 次の[文字]まで飛ぶ
F[文字] 前の[文字]まで飛ぶ
t[文字] 次の[文字]の手前まで飛ぶ
T[文字] 前の[文字]の次まで飛ぶ
; f, F, t, Tで検索した文字を同方向に繰り返し検索する
, f, F, t, Tで検索した文字を逆方向に繰り返し検索する
g; 直前に変更した位置にカーソルを移動(繰り返し入力することで, 変更リストを遡る)
g, g#を使用して遡った変更リストを逆順に進め, カーソルを移動する.
gg ファイルの先頭に移動
G ファイルの最後に移動
[数値]gg, [数値]G, :[数値] [数値]行に移動
H, M, L 画面に表示されている行について,
最初の行(H), 真ん中の行(M), 最後の行(L)に移動
0 行の先頭に移動
^ 行のテキスト部分の先頭に移動
$ 行の最後に移動
% 対応する括弧に移動
( 文単位での移動. 前の文の先頭に移動
) 文単位での移動. 後ろの文の先頭に移動
{ 段落単位での移動. 前の段落の先頭に移動
} 段落単位での移動. 後ろの段落の先頭に移動
Ctrl-u 半画面分戻る
Ctrl-d 半画面分進む
Ctrl-b 1画面分戻る
Ctrl-f 1画面分進む
Ctrl-o ジャンプリストを遡ってカーソルを移動する
(検索や行数指定移動などがジャンプリストに保存されている)
Ctrl-i ジャンプリストを進めてカーソルを移動する
(検索や行数指定移動などがジャンプリストに保存されている)
- 1行上の左端へ
RETURN 1行下の左端へ
e 単語の末尾へ
(カーソル位置が単語の途中の場合はその単語の末尾)
(カーソルが単語末尾なら次の単語の末尾)
(カーソルが行末なら次行先頭の単語の末尾)
nG ファイルの先頭からn行目の左端へ

削除, コピー

操作 意味
x カーソル上の文字を消す
X カーソル左一文字削除
s カーソル上の文字を消して, インサートモードに入る
dd カーソルがある行を消す
dw カーソル位置から1単語分削除する
diw カーソル位置にある単語を1つ削除する
dt( カーソル位置から, 次に最初に出現する(までを削除する
df<文字> カーソル位置から<文字>の位置まで削除
d^ カーソル位置から左削除
d$ カーソル位置から右削除
cc カーソルがある行を消して, インサートモードに入る
cw カーソル位置から1単語分削除して, インサートモードに入る
ciw カーソル位置にある単語を1つ削除して, インサートモードに入る
ct( カーソル位置から, 次に最初に出現する(までを削除して, インサートモードに入る
D カーソル位置から行末まで削除
C カーソル位置から行末まで削除して, インサートモードに入る
yy カーソルがある行をコピー ([Y]と同じ)
y ビジュアルモードで選択されている部分をコピー (ビジュアルモード中)
yw カーソル位置の単語をコピー
y<移動コマンド> 現在位置から移動先までをコピー (y`<マークキャラ> など)
P カーソル行の上の行にペースト
(xやddで削除したものもペーストできる)
p カーソル行の下の行にペースト
(xやddで削除したものもペーストできる)
Ctrl-r 0(ゼロ)(インサートモード中に)
レジスタ0に保存されている文字列を貼り付ける
通常, yを使用してコピーした文字列は, レジスタ0に保存される

置換

操作 意味
r[文字] カーソル上の文字を[文字]に置換
R カーソル位置から複数文字置換
s カーソル上一文字を複数文字に置換
r カーソル行全体を置換
cc カーソル行全体を置換
cw カーソル位置から現単語置換
cf<文字> カーソル位置から<文字>の位置まで置換
:%s/before/after/g ファイル上の全ての"before"を"after"に置換
:s/before/after/g カーソルの行の全ての"before"を"after"に置換
:10,20s/before/after/g 10~20行目の全ての"before"を"after"に置換
:'<,'>s/before/after/g ビジュアルモードで選択中の範囲の全ての"before"を"after"に置換
" '<,'> "の部分は, 範囲を選択中に":"を押すと自動的に出ます

編集, 保存, 終了

操作 意味
:e <ファイル名> <ファイル名>を読込む
:r <ファイル名> カーソル行の下に<ファイル名>の内容を挿入
:w 上書保存
:w <ファイル名> 編集中のデータを<ファイル名>のファイルに保存
:q 終了
:wq 保存して終了
:q! 保存せず終了
ZZ 保存して終了
ZQ 保存せずに終了

ウィンドウ操作

操作 意味
:sp [file] ウィンドウを横に分割し, fileを開く(file名はなくても良い)
:vs [file] ウィンドウを縦に分割し, fileを開く(file名はなくても良い)
Ctrl-w s ウィンドウを横に分割する
Ctrl-w v ウィンドウを縦に分割する
:only カーソルのあるウィンドウ以外閉じる
Ctrl-w o カーソルのあるウィンドウ以外閉じる
Ctrl-w w 次のウィンドウに移動
Ctrl-w p 前のウィンドウに移動
Ctrl-w h, j, k, l 左, 下, 上, 右のウィンドウに移動する
Ctrl-w H, J, K, L カーソルがあるウィンドウを左, 下, 上, 右方向に移動する
Ctrl-w _ 縦に最大化
Ctrl-w
Ctrl-w = 大きさを揃える
Ctrl-w > 幅を増やす
Ctrl-w < 幅を減らす
Ctrl-w + 高さを増やす
Ctrl-w - 高さを減らす

画面操作

操作 意味
Ctrl-f 1ページ分下に画面を移動
Ctrl-b 1ページ分上に画面を移動
Ctrl-d 半ページ分下に画面を移動
Ctrl-u 半ページ分上に画面を移動
Ctrl-l 画面を再描画
Ctrl-g 行番号を表示

モード変更

操作 意味
ESC ノーマルモードに戻る
Ctrl-[ ノーマルモードに戻る
i カーソル位置からインサートモードに入る
a カーソルの直後からインサートモードに入る
I 行頭からインサートモードに入る
A 行末からインサートモードに入る
Ctrl-o(インサートモード中に) インサートノーマルモードに入る
(インサートモード中に1コマンドのみノーマルモードのコマンドを使用できる)
v ビジュアルモードに入る
V 行単位の選択をするビジュアルモードに入る
Ctrl-v 矩形選択をするビジュアルモードに入る
gv 前回選択した範囲が再選択された状態でビジュアルモードに入る
: コマンドラインモードに入る(続けてコマンドを打ち, Enterで実行)

起動

操作 意味
% vi フォアグラウンド起動
% vi <ファイル名> <ファイル名>のファイルを読み込んで起動

その他

操作 意味
Ctrl-a カーソル行上で, カーソル以降の最初に出現した数字をインクリメント
Ctrl-x カーソル行上で, カーソル以降の最初に出現した数字をデクリメント
= カーソルがある行をインデント. ビジュアルモードで範囲を選択していれば, その範囲をインデント
>> インデントを追加
<< インデントを削除
. 直前のコマンド繰返し
u 直前に実行したコマンドの取り消し
U カーソル行に対して行った変更を全部取消す
:!cmd シェルコマンドの実行
:r!cmd コマンドを実行し,その結果を挿入
:shell シェルを呼び出す。exitなどでシェルを抜ければviに戻る
:set number 行番号を表示 (set nu)
:set nonumber 行番号表示を止める (set nonu)
:h ヘルプ表示
:viusage [<コマンド>] viコマンドモードのコマンド一覧表示。
<コマンド>を付加するとそのコマンドの説明を表示。
:exusage [<コマンド>] exコマンドモードのコマンド一覧表示。
<コマンド>を付加するとそのコマンドの説明を表示。
:set readonly リードオンリーモードにする (set ro)
:set noreadonly リードオンリーモードを解除する (set noro)

TIPS

多くのコマンドは, 直前に数字などを組み合わせて使うことができます
例えば, 3ddとすれば3行削除できます. 10iでインサートモードに入って,
文字を入力した後にノーマルモードにもどれは, 入力した文字が10個分入力されます

<コマンドラインにペースト>
:を押してコマンドラインに入った状態でCtrl-Rを押してから"を押すと
コマンドラインにペースト