忘備録として vim の簡単ガイドをまとめました。
キーボードマクロ
操作 | 意味 |
---|
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 | ビジュアルモードで選択されている部分をコピー |
yw | カーソル位置の単語をコピー |
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を押してから"を押すと
コマンドラインにペースト