VIのカーソルから行末まで削除


301

私が読んだすべてのVIドキュメントでこれを100万回見たことがあると思いますが、カーソルから行末コマンドまでの削除が見つからないようです。


3
ここにタイプミスがあります-タイトルに「行の終わり」とありますが、質問には「単語の終わり」とあります。
カスカベル

回答:


449

このコマンドdwは、現在のカーソル位置から次の単語文字の先頭までを削除します。コマンドd$(注、「S」ではなくドル記号)は、現在のカーソル位置から現在の行の末尾までを削除します。Dはの同義語ですd$


ええdw、知っていますが、「この行の残りを削除する」コマンドがあると思いました。例えば、私のラインを持っているip=|10.1.1.1|カーソル位置であること。すべてを削除するコマンドはあり10.1.1.1ますか?
ファルマーリ

3
@Falmarri-おquestionび申し上げます、あなたの質問を誤解したに違いありません。そのためのコマンドがありますd$
Tok

84
D(Shift + d)はd $の同義語でもあります。
ネット

5
@Andy、仕事はカーソルから行末まで削除することです。それ以上の削除を「仕事をする」と考える場合は、を使用して:!rm -f %からを使用することもできます:q!。ファイル全体が削除されます。
ワイルドカード

2
@Amirはd^( 'd' +キャレット)を使用します...基本的にはd +通常カーソルを移動する任意の文字ですが、私は自分でVimを学習しているので、間違っている可能性があります。
JakeD

41

他の人が言及したように:d$またはDshift- d)を使用して、カーソル位置から行末まで削除できます。

私は一般的に、より便利であることc$Cshift- c)それは行の最後までカーソル位置から削除されますので、 [INSERT]モードであなたを置きます。


2
いいね!!! D私の意見では、これは行末のスペースに戻らないので、ほとんどの人よりもはるかに優れています。
イライジャ・リン

なぜこの答えがここまでずっと隠されているのですか?これは私がここに来たときに本当に探していた機能です。
M_M

@ElijahLynnそれはとにかく問題ではないはずです。Vimにはi、カーソルの前に挿入するカーソルモードと挿入するモードの2つの主な方法がaあります。カーソルが行末にあり、行末に挿入したい場合は、を使用できますa
ライライアン

1
目標は、2回ではなく1回の操作で行うことです。余分なキーストローク=余分な摩擦。
イライジャ・リン

36

viの良い点の1つは、その論理的なコマンド構造です。dモーションコマンドに続くdはその運動のターゲットにeletes。$行の最後に移動します(ニーモニック:正規表現のように)。そのd$ため、行末まで削除します。同様eに移動Eの現在の単語のND、及びw次の先頭に移動W ORD。そのためde、現在の単語の末尾を削除し、dwさらに次の空白を削除します。


1
@gioele <kbd>コマンドシーケンスではなく、実際のキーに使用します。例えば<kbd>Ctrl</kbd>+<kbd>C</kbd>、しかしd$
ジル14

@Gillesあなたは正しい。私はちょうどd ^を試したところ、カーソル位置から行開始までを削除しました。
ka3ak

私はいつも単語を削除するために(d)elete(a)(w)ordを使用しました:)
BłażejMichalik

20

おそらくDを使用する必要があります。削除する最初の文字にカーソルを移動し、Shift-Dを押します。すべてがなくなった。実際には、デフォルトのカットバッファーにあるため、Pまたはpを貼り付けて戻すことができます。

Dp(行の最後まで削除してから元に戻す)を使用し、他の行の最後に移動してから、もう一度pを使用して、この他の行の最後に同じテキストを貼り付けます。複雑なURLを2つ以上の場所に配置する必要がある構成ファイルで動作します。


それはおそらく彼がとにかく使用する最小限のVimです。
ポレモン

0

挿入モードのショートカットが役立つと思います。

挿入モードでは、行末まで変更を開始する方が良いでしょう(これをに置きます~/.vimrc):

inoremap <C-l> <C-o>C

前述のようにD、通常モードで挿入モードでCtrl+ lを使用できます。ご覧のとおりC、行末まで変化し始めています。

<C-o> ......... insert normal keystroke in insert mode

私が選んだCtrl- あなたの指の下にあるlからlです。Ctrl- kすでに二重字を挿入するために使用されます。

私は:h i_Ctrlいくつかの無料のキーバインドを探していましたが、vimでアクションを実行する新しいショートカットを作成することになると、実際には大きな問題です。


0

カーソル位置の後から行の範囲を削除するには、行3Dの最後までカーソルから削除し、次の2行を完全に削除します(つまり、カーソル位置の後の3行を削除します)。

たとえば、次のテキストの場合(カーソルはとして表されます|)、

If there's a cursor |in the line
here
we
go

コマンド3Dを使用すると、出力されます:

If there's a cursor
go
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.