Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@HirofumiTamori

vimでdeleteいろいろ

More than 5 years have passed since last update.

最初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などでも同じように使えます。

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
HirofumiTamori
黒猫の錬金術師と呼ばれたいおっさん

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?