私は強迫観念で、ファイルに空白を入れないようにするので、vimで私にとってかなり一般的な操作は、行自体ではなく行全体の内容を削除することです(つまり、改行ではありません)。
これを行うための組み込みのvim方法はありますか?おそらくd<movement command>手術?
これまでのところ、私が持っている最高のものは(問題の行で)0d$です。もっと速い方法はありますか?
:%s/\s*$//
私は強迫観念で、ファイルに空白を入れないようにするので、vimで私にとってかなり一般的な操作は、行自体ではなく行全体の内容を削除することです(つまり、改行ではありません)。
これを行うための組み込みのvim方法はありますか?おそらくd<movement command>手術?
これまでのところ、私が持っている最高のものは(問題の行で)0d$です。もっと速い方法はありますか?
:%s/\s*$//
回答:
0Dこれを使用して、行の最初の文字に移動し、行の最後まで削除できます。^D先行する空白をそのまま残したい場合に使用できることに注意してください。また、を使用してこれらの操作を繰り返すことはできません.。.コマンドで繰り返すことができる操作が必要な場合は、David Lordの答えを参照してください。
ヘルプトピックス:
:help 0:help D:help ^.コマンドを使用して再現することはできません。そのため、私は考えるcc<Esc>か、S<Esc>あなたが繰り返し心配している場合、より魅力的です。
.ます。
.。それらは、それらのキーストロークがインタラクティブに入力されたかのように機能するため、個々のコマンドは個別に扱われます。を使用.すると、マクロの最後のコマンドのみが繰り返されます。
@{reg}繰り返します.。
D。0D操作後、カーソルは列0に残ります。カーソルがすでに行の先頭にある場合(別の行に移動した後)、マクロが適切に繰り返されたように見えます。カーソルを行内で前方に移動して入力してみてください.-繰り返しだけが表示されますD。
cc <Esc>あなたが求めるようになりますが、のキーストロークよりも多くなり0Dます。後でその行に何かを入れたい場合は、それccが最善かもしれません。
.コマンドで繰り返し実行できます。対照的に、0D(選択した回答で提案されているように)2つのアクションがあります:0モーションとDコマンド
0D私よりも簡単です。したがって、私の手はホームの列を離れる必要さえありません。jk<Esc>
S「の同義語として文書化されているcc」
通常はを使用しますddO。dd現在の行を削除し、O(大文字のo)新しい行を追加します。
これも3回のキーストロークですがdd、1回半しかカウントされず、Oを入力する方が簡単です$。
0Dソリューションとは異なります。たとえば、次のコード(!···タブはあり、カーソルは█ です)で自動インデントを行います。
def asd():
!···if foo:
!···!···foo()█
!···!···foobar()
0D あなたを残します:
def asd():
!···if foo:
█
!···!···foobar()
そしてddOあなたを残します:
def asd():
!···if foo:
!···!···█
!···!···foobar()
<Esc>この直後にを押すと、Vimは自動インデントを削除するので、と同じになり0Dます。
「正しい」方法はありません。正確に何をしたいかに依存します。私はddOそれがより柔軟であるため、それが「私の指の中」にあるので好む:-)
^D空白はそのままにします。
O、挿入モードでの葉、あなたを、これはと等価であるcc、あなたの行がすでに自動インデントしない限り....自動インデントなし除き、。