#043
posted on 2021.05.28 (Fri) 2023.01.09 (Mon)

Vimの基本的な操作のチートシート。

CUI(Character User Interface)エディターのVimの基本的な操作方法のチートシート。

ノーマルモード(Normal mode)、インサートモード(Insert mode) 、コマンドラインモード(Command-line mode)での基本操作。

 

※ Vimの基礎知識は前の記事を参照。

 

 

Vimの操作では、オペレーターとモーションを組み合わせて、複数の操作をまとめて一つの操作にすることもできる。

削除コマンド「d」(オペレーター)と、単語を指定する「w」(モーション)を組み合わせた、「dw」で単語単位で文字を削除したり、さらに数値による回数指定「d2w」で単語を2つ削除したりなど。

 

VIM – Vi IMproved 8.0 で確認。

 

ノーマルモード

カーソル移動やコピー・貼付けなど、基本操作を行うモード。

 

Vimの終了

キー入力 動作内容
ZZ 開いているファイルを保存して終了
ZQ 開いているファイルを保存せず終了

 

履歴関係

キー入力 動作内容
u アンドゥ
数字u n回アンドゥ
U 1行全体のアンドゥ
ctrl + r リドゥ
数字ctrl + r n回リドゥ
. 最後の変更を繰り返す
ctrl + o 前のカーソル位置(履歴)に移動(backfward)
ctrl + i 次のカーソル位置(履歴)に移動(forfward)
g + ; 前の編集位置(履歴)に移動(backfward)
g + , 次の編集位置(履歴)に移動(forfward)

 

カーソル移動

キー入力 動作内容
h 左へ移動
j 下へ移動
k 上へ移動
l 右へ移動
gg ファイルの先頭に移動
G ファイルの最終行に移動
H 画面の最上行へ移動
M 画面の真ん中の行へ移動
L 画面の最下行へ移動
ctrl + u 半画面上へ移動
ctrl + d 半画面下へ移動
ctrl + b 1画面上へ移動
ctrl + f 1画面下へ移動
zz カーソル現在位置が中心行になるように画面が移動(ファイルの上下端では不可)
w 空白文字を含む単語の末まで移動
e 空白文字を含まない単語の末まで移動
b 空白文字を含まない単語の頭まで移動
0 空白文字を含む行頭まで移動
^ 空白文字以外の行頭まで移動
$ 空白文字を含む行末まで移動
g_ 空白文字以外の行末まで移動
1行上の空白文字以外の行頭に移動
enter 1行下の空白文字以外の行頭に移動
数字G n行目の空白文字以外の行頭に移動
数字gg 「数字G」と同じ
数字go nバイト目に移動
% 対応する括弧 ( ) [ ] { } に移動

 

削除 (切り取り)

キー入力 動作内容
x カーソル位置の文字を削除
数字x カーソル位置の文字からn文字分を削除
X カーソルの前の文字を削除
d 選択状態のときに選択範囲を削除
D カーソル位置の文字から行末までを削除
dw 空白文字を含む単語単位で文字を削除
de 空白文字を含まない単語単位で文字を削除
d^ 空白文字でない行頭まで文字を削除
d$ 空白文字を含む行末まで文字を削除
dd 1行すべてを削除

 

コピー・ペースト (Vimでは「yank」、「put」と表現)

キー入力 動作内容
y 選択状態のときに選択範囲をコピー(yank)
yl 1文字をコピー(yank)
yw 1単語をコピー(yank)
yy 1行すべてをコピー(yank)
y^ 空白文字でない行頭までをコピー(yank)
y$ 空白文字を含む行末までをコピー(yank)
p カーソル位置の後ろに貼付け(put)
P カーソル位置の前に貼付け(put)

 

置き換え

キー入力 動作内容
r カーソル位置で1文字だけ上書き入力
R カーソル位置の文字を上書き入力する置換モード(Replace mode)に移行
~ カーソル位置の1文字を「大文字/小文字」変換して右にカーソル移動
u 選択状態のときに選択範囲を小文字に変換
U 選択状態のときに選択範囲を大文字に変換
ctrl + a カーソル位置の文字が数字の場合にインクリメント
ctrl + x カーソル位置の文字が数字の場合にデクリメント

 

インデント

キー入力 動作内容
>> 1インデント増やす
<< 1インデント減らす

 

折りたたみ

キー入力 動作内容
zf 選択状態で選択範囲を折りたたむ
za 折りたたみを開く
zn すべての折りたたみを開く

 

インサートモードに移行

キー入力 動作内容
i カーソルの位置でインサートモードに移行
I 空白文字以外の行頭に移動してインサートモードに移行
a 1文字右に移動してインサートモードに移行
A 行末に移動してインサートモードに移行
o 下に行を挿入して挿入行でインサートモードに移行
O 上に行を挿入して挿入行でインサートモードに移行
S カーソルのある行の文字をすべて削除してインサートモードに移行
c 選択状態のときに選択範囲を削除してインサートモードに移行
cw カーソル位置の1単語を削除してインサートモードに移行
c^ カーソル位置から行頭までを削除してインサートモードに移行
c$ カーソル位置から行末までを削除してインサートモードに移行

 

ビジュアルモードに移行

キー入力 動作内容
v 文字単位で範囲を選択するビジュアルモードに移行
V 行単位で範囲を選択するビジュアルモードに移行
ctrl + v 矩形で範囲を選択するビジュアルモードに移行

 

分割表示されているウィンドウの操作

「ctrl + w」を一度押してから、続けて下記のキー入力をする。

キー入力 動作内容
s ウィンドウを上下に分割
v ウィンドウを左右に分割
w 分割ウィンドウを順次移動(「ctrl + w」の二度押しでも同じ)
h 左のウィンドウに移動
j 下のウィンドウに移動
k 上のウィンドウに移動
l 右のウィンドウに移動
+ ウィンドウの高さを拡大
ウィンドウの高さを縮小
_ ウィンドウの高さを最大まで拡げる
> ウィンドウの幅を拡大
< ウィンドウの幅を縮小
| ウィンドウの幅を最大まで拡げる
q 現在のウィンドウを閉じる(分割状態でない場合はVimを終了)
c 現在のウィンドウを閉じる(分割状態でない場合は何もしない)
o 現在のウィンドウ以外を閉じる

 

その他

キー入力 動作内容
ctrl + g ファイルパス、現在の行番号などが画面一番下に表示される
ctrl + z Vimを一時停止 (ターミナルで「fg ジョブ番号」コマンドで復帰)

 

 

インサートモード

テキスト入力するときのモード。

「esc」キーまたは「ctrl + [」でノーマルモードに戻る。

 

補完

キー入力 動作内容
ctrl + p 単語補完(前方一致)
ctrl + n 補完候補の選択時に下に移動
ctrl + p 補完候補の選択時に上に移動
ctrl + y 補完候補の選択を決定
ctrl + x ctrl + o オムニ補完(ソースコードの補完)候補を表示(omnifuncの設定が必要)
ctrl + x ctrl + f ディレクトリの候補補完
ctrl + e 補完候補表示中に補完をキャンセル

 

削除

キー入力 動作内容
ctrl + w 入力したテキストを単語単位で削除
ctrl + u 入力したテキストを行頭までを削除

 

その他

キー入力 動作内容
ctrl + t 1インデント増やす
ctrl + d 1インデント減らす

 

 

コマンドラインモード

Vimのコマンドの機能を使うモード。

「esc」キーまたは「ctrl + [」でノーマルモードに戻る。(入力が途中のコマンドは取り消される。)

 

ヘルプ (「:q」で閉じる)

キー入力 動作内容
:h ヘルプを開く(「:help」の短縮形)
:h user-manual ユーザーマニュアル
:h 任意のコマンド 指定したコマンドに関するヘルプ

 

補完

キー入力 動作内容
ctrl + d Exコマンド入力途中に前方一致の候補一覧を表示
tab Exコマンド入力途中に前方一致で候補の自動補完

 

ファイル編集

キー入力 動作内容
:e ファイルパス 指定したファイルを開く(「:edit」の短縮形)
:e! ファイルパス 指定したファイルを強制的に開く
:q

編集内容を保存せずファイルを閉じる(「:quit」の短縮形)

(他にファイルを開いていない場合はVimも終了)

:q! 編集内容を保存せずファイルを強制的に閉じる
:bd

バッファをメモリとバッファリストから削除する(「:bdelete」の短縮形)

(編集内容を保存せずファイルを閉じる)

(他にファイルを開いていない場合でもVimを終了しない)

:buffers バッファ(非表示も含めたメモリに展開しているファイル)一覧
:ls 「:buffers」と同じ
:w 編集内容を保存(「:write」の短縮形)
:w! 読み取り専用でも強制的に編集内容を保存
:w ファイルパス 指定したファイルを上書き保存(無ければ新規作成)
:wq 保存して終了(上書き保存して終了)
:wq! 読み取り専用でも強制的に保存して終了(上書き保存して終了)
:r ファイルパス 指定したファイルの内容を読み込んでカーソル位置に挿入(「:read」の短縮形)
:r !外部シェルコマンド 外部シェルコマンドの出力結果をカーソル位置に挿入

 

移動

キー入力 動作内容
:数字 n行目の空白文字以外の行頭に移動

 

ウィンドウを分割

※ オプションにファイル指定で、任意のファイルを開いてウィンドウを分割。

キー入力 動作内容
:new 上下に分割して空ウィンドウを開く
:vnew 左右に分割して空ウィンドウを開く
:sp ウインドウを上下に分割してカレントファイルを開く(「:split」の短縮形)
:vs ウインドウを左右に分割してカレントファイルを開く(「:vsplit」の短縮形)
:tabe 新しいタブでカレントファイルを開く(「:tabedit」の短縮形)
:close 現在のウインドウを閉じる(分割表示されている場合のみ)
+ (オプション) 最後の行にカーソルを移動した状態でウィンドウを開く
+数字 (オプション) n行目にカーソルを移動した状態でウィンドウを開く
:res +数字 ウィンドウの高さをn行拡大(「:resize」の短縮形)
:res -数字 ウィンドウの高さをn行縮小
:res ウィンドウの高さを最大まで拡げる
:res 数字 ウィンドウの高さをn行分に変更
:vert res +数字 ウィンドウの幅をn文字分拡大(「:vertical」の短縮形)
:vert res -数字 ウィンドウの幅をn文字分縮小
:vert res ウィンドウの幅を最大まで拡げる
:vert res 数字 ウィンドウの幅をn文字分に変更

 

置換

キー入力 動作内容
:s/文字列1/文字列2/g 1行の全ての文字列1を文字列2で一括置換
:数字,数字s/文字列1/文字列2/g 数字で指定した行間の全ての文字列1を文字列2で一括置換
:%s/文字列1/文字列2/g ファイル内の全ての文字列1を文字列2で一括置換
:%s/文字列1/文字列2/gc ファイル内の全ての文字列1を文字列2で置換(アラート確認しながら)

 

検索

キー入力 動作内容
/検索ワード カーソル位置より前方向に検索(forfward)
?検索ワード カーソル位置より後方向に検索(backfward)
/検索ワード\c 検索ワードの大文字と小文字を区別しない
n (検索中) 次の該当ワードに移動(forfward)
N (検索中) 前の該当ワードに移動(backfward)

 

色設定の確認

キー入力 動作内容
:so $VIMRUNTIME/syntax/colortest.vim Vimの設定で使用できる色の一覧
:so $VIMRUNTIME/syntax/hitest.vim シンタックスが色設定するときの項目グループの内訳の一覧(現在の設定色で表示されるが色コードは出ない)
:highlight シンタックスで現在設定されている項目グループとその色コードの一覧
:syn list 現在のバッファのファイル構文でのシンタックス色割り当てグループ分けの一覧(グループに振り分けられるパーツの具体的な説明)

 

その他

キー入力 動作内容
:!コマンド 外部のシェルコマンドを実行(外部コマンド実行時に「enter」キーでVimに戻る)
:source ファイルパス 指定したファイルに書かれている内容(Vim script)を実行
:changes 編集(カーソル位置)履歴のリストを表示
:vert diffsplit ファイルパス ウィンドウを左右分割して現在のファイルと指定ファイルを表示し、その差分を比較(diff mode)

 

設定の変更

※ Vimを終了するとデフォルト設定に戻るので、起動時から反映したい設定は「.vimrc」ファイルに記述しておく。

※ 「:set noオプション名」で指定したオプションをオフ。

※ 「:set オプション名!」でオン・オフ設定をトグル。

※ 「:set オプション名?」で現在の設定を確認。

※ 「:h options」で設定変更のオプションに関するヘルプ。

キー入力 動作内容
:set all すべての設定を確認
:syntax on シンタックスハイライトオン
:syntax off シンタックスハイライトオフ
:set nu 行番号表示オン(「:set number」の短縮形)
:set nonu 行番号表示オフ
:set nu? 行番号表示設定の確認

 

 

この記事のURL

https://memo.ag2works.tokyo/post-1817/

Copyコピー
この記事のタイトル

Vimの基本的な操作のチートシート。 | memo メモ [AG2WORKS]

Copyコピー
この記事のリンクタグ

<a href="https://memo.ag2works.tokyo/post-1817/" target="_blank" rel="noopener">Vimの基本的な操作のチートシート。 | memo メモ [AG2WORKS]</a>

Copyコピー
※ フィールドをクリックでコピーするテキストの編集ができます。

この記事へのコメント

コメントの書き込みはまだありません。

  • コメント内のタグはエスケープ処理され、文字列として出力されます。
  • セキュリティーのため、投稿者のIPアドレスは取得されます。
  • 管理者が内容を不適切と判断したコメントは削除されます。
  • このフォームにはスパム対策として、Googleの提供するreCAPTCHAシステムが導入されています。
    (Google Privacy Policy and Terms of Service.)