はじめに
数年前にLinux系のお仕事でvimを触ったおかげでvimが好きなった。
ピアノのようにキーを奏でられるところが好き。
しばしば使うコマンドを、しばしば忘れる。
vimのhelpに全て記載されているが、vscodeにてvimのキーバインドを使用しているので、気軽にヘルプがみれない。
だから、メモをQiita上に残して見れるようにしておく。
参考書籍
著者が喜ぶので、書籍を購入することをお勧めする。
Kindleで購入してしまったので、少し後悔。
老眼進行中なので、スマホで読むのがしんどい。
モードの遷移
Vimには4つのモードがある。
- ノーマルモード
- ビジュアルモード
- 挿入モード
- コマンドモード
カーソル移動
コマンド |
作用 |
h j k l |
左上下右に移動 |
enter |
下の行の先頭文字に移動 |
w |
次の単語に移動 |
b |
前の単語に移動 |
e |
単語の末尾に移動 |
$ |
行末に移動 |
0 |
行頭に移動 |
^ |
行の先頭文字に移動 |
% |
対応するカッコに移動 |
H M L |
画面の最上・中央・最下行に移動 |
文字入力
コマンド |
作用 |
i hoge ESC |
カーソル位置にhogeを挿入 |
a hoge ESC |
カーソル位置の後ろにhogeを挿入 |
o hoge ESC |
次行に行を追加してhogeを挿入 |
O hoge ESC |
前行に行を追加してhogeを挿入 |
I hoge ESC |
空白を覗く行頭からhogeを挿入 |
A hoge ESC |
行末からhogeを挿入 |
R hoge ESC |
カーソル位置からhogeを上書き |
スクロール・ジャンプ
コマンド |
作用 |
Ctrl+u |
半画面上スクロール |
Ctrl+d |
半画面下スクロール |
Ctrl+b |
画面上スクロール |
Ctrl+f |
画面下スクロール |
Ctrl+y |
1行上スクロール |
Ctrl+e |
1行下スクロール |
zz |
現在行を画面中央行へスクロール |
z |
現在行を画面最上行へスクロール |
G |
ファイル最終行にジャンプ |
1G |
行番号1にジャンプ |
200G |
行番号200にジャンプ |
gg |
先頭行にジャンプ |
削除・カット・コピー
コマンド |
作用 |
x |
カーソル位置の文字を削除 |
dw |
単語を削除 |
dd |
行を削除 |
d0 |
行から現在位置まで削除 |
d$ |
現在位置から行末まで削除 |
yw |
単語をコピー |
yy |
行をコピー |
y0 |
行頭から現在位置までコピー |
y$ |
現在位置から行末までコピー |
p |
挿入貼り付け |
cw hoge |
現在位置の単語をhogeに書き換え |
rA |
カーソル位置の文字をAに置き換え |
その他編集操作
コマンド |
作用 |
J |
現在行と次行を連結 |
~ |
カーソル位置の文字をUpper⇔Lowerに変換 |
u |
UNDO |
ctrl+r |
REDO |
. |
直前のコマンドを再実行 |
>> |
カーソル行を右にインデント |
<< |
カーソル行を左にインデント |
選択範囲の操作
コマンド |
作用 |
v |
ビジュアルモードに変更 |
d |
選択範囲をカット |
x |
選択範囲をカット |
y |
選択範囲をコピー |
> |
選択範囲を右インデント |
< |
選択範囲を右インデント |
Ctrl+v |
矩形範囲の選択 |
Shift+v |
行単位の選択 |
検索・置換
コマンド |
作用 |
/hoge |
文字列hogeを前方向に検索 |
/ |
同じ文字列を検索 |
?hoge |
文字列を後方向に検索 |
? |
同じ文字列を後方向に検索 |
* |
カーソル位置の単語を前方向に検索 |
# |
カーソル位置の単語を後方向に検索 |
:%s/hoge/abec/g |
文字列hogeをabecに一括置換 |
:%s/hoge/abec/gc |
文字列hogeをabecに確認しながら置換 |
4,9s/hoge/abec/g |
4~9行目のhogeをabecに一括置換 |
.,$s/hoge/abec/g |
現在行~最終行目のhogeをabecに一括置換 |
g/hoge/d |
hogeを含む行を削除 |
g!/hoge/d |
hogeを含む行を削除 |
:noh |
検索結果のハイライト表示を消す |
分割画面
コマンド |
作用 |
:sp enter |
画面を上下に分割 |
ctrl + w j |
分割画面の下に移動 |
ctrl + w k |
分割画面を移動 |
ctrl + w 10+ |
現在分割画面の範囲を10行増やす |
ctrl + w 10- |
現在分割画面の範囲を10行減らす |
:new filename enter |
画面分割して「filename」を開く |
マーク・マクロ
コマンド |
作用 |
mA |
現在行をマークAに記録する |
`A |
マークAに記憶した行にジャンプする |
qA 任意の操作 q |
マクロAにキー操作を記録する |
@A |
マクロAを再現する |
ファイル
コマンド |
作用 |
:w filename enter |
指定したfilenameでファイル保存 |
:w |
上書き保存 |
:wq |
上書き保存&終了 |
:q |
終了 |
:q! |
強制的に終了 |
:n |
次のファイルに進む |
:N |
前のファイルに進む |
:e filename enter |
現在のファイルを終了し、別のファイルを編集 |
ctrl + g |
編集中のファイル名と行位置を表示 |
:pwd |
現在のディレクトリパスを表示 |
設定 ※vim用の設定なのでvscodeで同じように動作するか未検証
コマンド |
作用 |
:set number |
行番号を表示 |
:set nonumber |
行番号を非表示 |
:set autoindent |
オートインデント |
:set ts=4 |
タブの空白数を4に設定 |
:set sw=4 |
インデントの空白数を4に設定 |
:set nolist |
タブ文字・行末を可視化 |
:set tw=80 |
折り返し行数を80文字に設定 |
:set enc=utf-8 |
文字コードをUTF-8に設定 |
:set ff=unix |
文字コードをUNIX式に設定 |
:syntax on |
文字解釈し色分け表示 |
:set hlsearch |
検索一致箇所をハイライト表示 |