Vim
https://gyazo.com/37ddb540153f946decc961571dcf92f1
theme
:rと:w
HTMLタグに対するsurround.vim ref wordを<head></head>で囲む
yswthead>
code:html
<head>word</head>
ブロックを<head></head>で囲む
vで選択してS<head>
例えば以下の場合
code:tsx
<Button
title="hoge"
onClick={()=>console.log("hoge")}
/>
vapS<head>とすると
code:tsx
<head>
<Button
title="hoge"
onClick={()=>console.log("hoge")}
/>
</head>
となる
同様にして、挟んでるタグを消したいときはdstで消える
changeもcs'<b>とかで''が<b></b>に変わる
gc
1行
gccで1行コメントアウト
gc2jとかで2行コメントアウト
gC
ブロックのコメントアウト
gCi)とかで()の中をコメントアウト
覚えたら消す
H,M,L
カーソルをウインドウ内の上/中/下に移動させる
ctrl-f,ctrl-b
1画面分、上、下にスクロールする
2>>
2行に渡ってインデントを1つ増やします。
gn
前回の検索結果にジャンプしてから(gn)対象を削除してインサートモードに入る(c)といった動作
g系のやつ
知らんかったやつも多いけど、いつ使うねんみたいなのも多いmrsekut.icon
g*
*と同じ
ただし単語区切りしない
例えば、「app」上で実行した場合、「application」とかもヒットする
gJ
Jと同じだが、空白文字を挿入せずに行を連結
これは便利かもねmrsekut.icon
gu
guiwとかでカーソル下の単語を小文字にする
これとか、viwuの方が覚えること少なくて良くない?と思うmrsekut.icon
gq
選択している部分のテキストを整形する
整形されているのはわかるが、どういうロジックで整形しているのかわからないmrsekut.icon
コードリーディングしているときに、コメントが数行に渡っている時に使うと便利?
コメント開始の--とか//とかは良い感じに無視してくれるっぽい
g-, g+
undo, redo
u, <C-r>より高機能らしいがどう違うのかわからない
vscode-vimは対応してないっぽい
gi
iと同様だが、前回挿入モードを抜けた箇所から挿入モードに入る
良さそう、これを頭に入れて動けばちょっと効率良くなりそうmrsekut.icon
gv
前回の選択範囲を再選択する
インサートモード
ctrl-t,ctrl-d
インデント、インデントの削除
ctrl-w
位置単語削除
ctrl-u
カーソルより前をすべて削除
ctrl-o
ノーマルモードに移って、コマンドを実行した後インターとモードに戻る
込められる弾丸は一発のやつ
レジスタ
普通にyiwなどでコピーしたものは無名レジスタに入る。
viwpとかでペーストすると無名レジスタの内容が変わる
このときはviw"0pとすると耐えたりする
レジスタ0
直前にヤンクしたテキストが格納される
ノーマルモード
"<名前:a-z><操作>
例えば"ayyでaというレジスタに一行コピーして登録する
"addなら一行削除してをれをaレジスタに登録
"apでaレジスタに登録していたものをペースト
インサートモード(vscodeでは使えない?)
ctrl-rとすると、"が出てくるのでそこでレジスタ名(例えばa)を打つとそこのレジスタに保存されていたものが表示される
コマンドモード
:registersでレジスタ一覧の中身を確認できる
参考
vim本体のコード
Vimを学ぶ