この記事について
Vimを使用して普段開発しているのですが、先輩に勧められたテキストを読んでvimコマンドの考え方が今までと変わったので考え方について書いていきます。
その他テキストから知って便利だったプラグインを紹介します。
考え方
コマンドの実行は主に暗記に頼っていました。例えば、dwがwで「word(単語)」を表すため、単語を削除するコマンドだという程度の理解でした。特に、dibやci"のようなコマンドは完全に暗記して使用していました。
しかし、本来はそんな覚える必要はなくものすごく直感的なコマンドでした。
https://vimdoc.sourceforge.net/htmldoc/motion.html
"dl" delete character (alias: "x") |dl|
"diw" delete inner word *diw*
"daw" delete a word *daw*
"diW" delete inner WORD (see |WORD|) *diW*
"daW" delete a WORD (see |WORD|) *daW*
"dd" delete one line |dd|
"dis" delete inner sentence *dis*
"das" delete a sentence *das*
"dib" delete inner '(' ')' block *dib*
"dab" delete a '(' ')' block *dab*
"dip" delete inner paragraph *dip*
"dap" delete a paragraph *dap*
"diB" delete inner '{' '}' block *diB*
"daB" delete a '{' '}' block *daB*
例えば、dib(delete inner block)は括弧()内のテキストを削除し、da"(delete around quotes)は引用符""とその中身を削除します。
これらのコマンドはd{motion}形式で表され、y{motion}でテキストをコピーし、c{motion}でテキストを削除してから挿入モードに入る、という操作が可能です。
また、df{char}(delete find character)を使えば、指定した文字xを含む箇所まで削除でき、dt{char}(delete till character)では、指定した文字xの直前までを削除できます。
プラグイン
tpope/vim-surround
S"コマンドは、ビジュアルモードで選択したテキストを引用符"で囲みます。
cs'"コマンドは、すでに'で囲まれたテキストを見つけ、その'を"に置換します。
vim-commentary
gc{motion}コマンドは、指定した範囲をコメントアウトします。
gccコマンドはカーソルが位置する1行をコメントアウトします。
最後に
普段JetBrainsを使用してvimを使用しています。
便利なコマンド、プラグインがあればコメントで教えてください。