Vim
必須
操作 x 中身だけか全体か x 範囲
- 操作
c
: changey
: yankd
: delete
- 中身だけか全体か
a
: all objecti
: inner object
- 範囲
w
: words
: sentencep
: paragraphgn
: 直前に検索した単語やパターンの次の出現箇所(カーソルがすでに単語上にあればその単語全体)- 各種囲み記号
- parenthesis
- bracket
- brace
- tag(
t
の一文字で表される。React で多用しそう) - ほか多数
番外編(vim-surround)
ds <消したい囲み記号>
cs <消したい囲み記号> <新しい囲み記号>
- ビジュアルモードで
S
を押して囲み記号の追加
ファイルを開く
:e {file name or directory}
: ファイルを開く
移動
hjkl
: 左、下、上、右 (g
をつければスクリーン上)w,b,e,ge
: 単語の先頭、末尾、単語の先頭へ$
: 行末へ0
: 行頭へ^
: 行頭の非空白文字へ%
: 対応する括弧へShift + {}
: ブロック移動G, gg
: ファイルの最後、最初へVisual Mode + o
: 選択範囲の先頭、末尾へ
ページ送り
Ctrl + fbudey
: スクロールzz, zt, zb
: カーソル位置を中央、上、下に
挿入
aA
: カーソルの後ろ、行末へiI
: カーソルの前、行頭へoO
: 下、上に行を挿入
検索置き換え
/? + nN
: 検索*# + nN
: 単語検索fFtT + ;,
: 行内検索:%s/old/new/g
: 置換%
なしだと現在行または選択範囲のみを処理対象とする。ありだと文書全体を処理対象とする。g
なしだと行内の最初の一つだけ置き換える。つけると行内の全てを置き換える。*
したあとだと、置き換え前の文字をわざわざ入れなくていいので便利。
レジスタ
:di
: レジスタの内容を見る""
: 無名レジスタ。デフォルトレジスタ。なにもしなければこれがデフォルトで使われる。"0
ヤンクレジスタ。最後にヤンクしたものが入り、dcx
しても上書きされない。"1-9
: 削除変更レジスタ。cc
やdd
など行単位の削除変更履歴が順に入る。"a-z
: 名前付きレジスタ。ユーザーが自由に使えるレジスタ。
編集
(g)J
: 行を結合>>, <<
: インデントCtrl + t, d
: インデント
ジャンプ
g; g,
: 変更履歴をたどるCtrl + o
戻るm a-z
: マーク' a-z
: マークの行へ移動backtick a-z
: マークへ移動
支援
gd
: goto definitiongh
: goto help
画面分割
Ctrl-w s
: 縦分割Ctrl-w v
: 横分割Ctrl-w hjkl
: 移動
マクロ
q a-z
: マクロの記録q
: マクロの記録終了@ a-z
: マクロの実行
コマンド実行
:!{cmd}
: シェルコマンドの実行- 範囲選択した状態で実行すると、範囲を標準入力としてコマンドに渡し、出力を受け取って範囲を書き換える。jqなどすると便利。
:r!{cmd}
: コマンドの出力を現在位置に挿入する:w!{cmd}
: ファイルを標準入力としてコマンドに渡す
キーマップ
:nnoremap {押すボタン} {実行したいキー}
: ノーマルモードのキーマップ- 先頭がnならノーマル、vならビジュアル、iならインサート、のモード設定
- アドホックに使うこともできるし、
.vimrc
などに設定すれば永続化して使うこともできる。
バッファ
:ls
: バッファ一覧:b {buffer number}
: バッファ切り替え