最初viの使いにくさとカスタマイズの弱さが嫌で長らくemacserだったのですが、NeoBundleとかを知ってからvimに乗り換えています。
.vimrcをいろいろいじると簡易なIDEとしても十分使え...ることもありますし(go言語の場合はかなりよい)、colorschemeがイイカンジですから。
改めていろいろ使ってみると「こんなのあったらいいなあ」→「実はありました!」みたいなのが多くて驚きます。
今回はdeleteについてメモ代わりにまとめてみました。
基本的なお話(おさらい)
vimの場合、delete(削除)は消したい位置にカーソルを持って行ってコマンドモードで
d<enter>
もしくはdd
(1行削除)
みたいにします。つまりdがdeleteコマンドです。念のため。
今回のお題
こういう行があったとします。
hello, xdelete!!!
- 左側の空白を削除したい
あっちこっちで編集してるとうっかりハードタブとソフトタブ(スペース)が入り混じったりしてインデントがぐちゃぐちゃになるケースって結構あると思います。そのときは左側の空白を一回消してタブ打ち直すか!となりませんか?(goだとgo fmtがあるから無敵か...)
こういう場合は行頭にカーソルを移動してから
d/h<enter>
(文字'h'より手前を削除)
または正規表現を使って
d/\S<enter>
('\S'(空白以外の文字)より手前を削除)でOK。
文字数がわかってれば10x
でもいいんですが上記のようにハードタブと混じってるとアウトですし。
結果はもちろん
hello, xdelete!!!
になります。
- 特定の文字まで含めて削除したい
xdeleteのxがイヤンな感じなので消します。
この場合はdfx
(文字'x'を含めて削除)。
結果は
delete!!!
になります。
- カーソルがどこにいてもその単語をまるまる消したい
例えばカーソルがhelloの最初のlの前にいた場合、単純にdw
ってすると
he, xdelete!!!
になりますが、daw
とすると単語がまるまる消えて
, xdelete!!!
になり、daW
とすると続くカンマと空白まで消えて
xdelete!!!
となります。
補足
他のコマンド、c, y, tなどでも同じように使えます。