逆方向のトリックを削除するvim


119
  • 左側の単語をどのように削除しますか?つまり、カーソルが単語の最後にあるときに単語を削除します。
  • 行の先頭にある文字をどのように削除しますか?
  • 左側の最初の空白をどのように削除しますか?

  • 単語の削除を含む他のトリックはありますか?

回答:


163

一般に、d <motion>は、現在の位置から<motion>の後の終了位置まで削除します。この意味は:

  1. d <leftArrow>は現在の文字と左の文字を削除します
  2. d $は現在の位置から行末まで削除します
  3. d ^は、現在の後方から最初の空白以外の文字まで削除します
  4. d0は現在の逆方向から行の先頭まで削除します
  5. dwは、現在の単語から現在の単語の終わりまでを削除します(末尾のスペースを含む)
  6. dbは、現在の単語から現在の単語の先頭までを削除します

これを読んで、「d」コマンドと組み合わせることができるすべてのことを学んでください。


1
db覚えにくい場合のもう1つの便利なショートカット: 5. dw or d<ctrl+rightarrow>and 6. db or d<ctrl+leftarrow>
Crisboot

6
代わりに「d<leftArrow>do」と入力するのではdhなく、h左に移動するためのキーです
Dylanthepiguy

4
なぜこれが受け入れられた答えなのですか?d <leftArrow>(およびdwを除く以下のいずれでもない)は、OPが望むようにカーソルの下の文字を削除しません。
listerreg 2017年

73

私はこのシナリオに何度も出会いました。行10のすべてのスペースを削除して、コンマの後に行9と結合するようにします。

ここに画像の説明を入力してください

これは基本的にVIMの単純なライン結合です。

kJ トリックを行います(以下をご覧ください)

Vimの参加ライン


9
私はこれをどこでも探していました!
functionvoid

2
ハハ、私はこれが欲しいのですが、Googleでそれをどのように説明するかわかりません。幸運なことに、私は下にスクロールします=))
Thai Tran

1
手動で何回やったかなんて信じられない。これはまさに私が探していたものです、ありがとう!
tobiasandersen 2017年

1
これはまさに私が探していたものです。Vimは毎日私の心を吹きます
singmotor

4
これについての説明は次のとおりです。k=上、J=下の行を現在の行に結合し、間にスペースを1つ入れます。kgJスペースなしで参加することもできます。gJ=間にスペースを入れずに下の行を結合します。チートシート経由:vim.rtorr.com
KhalilRavanna

31

ポイント3に答えるdiwdaw、優れています。


4
最後の文字に達したときに単語を逆方向に削除する2文字のコマンドがないのは残念です。なぜなら、notepad ++やgeditなどの標準的なエディターでは、CTRL +バックスペースを簡単に使用できるためです... vimは素晴らしいです。
itmuckel 2015

3
@ roggan87単語の最後の文字にいる場合、最後dbの文字の前の文字を削除しますが、最後の文字は残します。
Prashanth Chandra 2016

2
これらのコマンドの途中で何をしiaいるかを説明できますか?先頭dが「削除」であることはわかっていwます。末尾は「単語」であると思います。
カールG

1
@CarlG最良の説明はにあり:help text-objectsます。最初の段落は非常に簡潔であり、非常によく説明していると思います。
ランディモリス

5
<kbd> i </ kbd>は「inner」、<kbd> a </ kbd>は「a」です。前者には囲み空白が含まれませんが、後者には後続の空白があれば含まれ、そうでない場合は先行する空白が含まれます。とても助かります、ありがとう。
カールG


18

コマンドモードでは:

  1. bdw、単語を削除します。
  2. d^(最初の非空白d0文字へ)、(最初の文字へ)
  3. BdW (最初の空白に移動し、次の空白に削除)

(コミュニティーwiki、自由にハッキングしてください。)


14
  1. db (カーソルが単語の後にある場合)または bdw
  2. d0(またはd^最初の非空白文字まで削除したい場合)
  3. dEまたはdtSpace、最初のスペースd/\sEnterまで削除するか、次の空白文字まで削除します。

編集する

質問が変更され、3が左側の最初の空白文字に削除されるようになっているので、私の答えは次のように変更されます。

  1. dBまたはdShiftTSpace、最初のスペースd?\sEnterまで削除するか、前の空白文字まで削除します。

見る:

:help motion.txt
:help WORD

#3をよろしくお願いします。空白文字の処理方法がわかりませんでした。dF <SPACE>は<SPACE>までを削除しますが、dT <SPACE>は<SPACE>をそのままにします。
Mark Biek

のようなものを探してここに来ましたbdw。の残りのキャラクター(元々はカーソルの下にあったキャラクター)がdb私を困らせ続けました。
Deiwin、2015

8

私は答えがどれも完全ではないと感じています:

一般に、削除操作は通常、を使用して開始しd<motion>、まれにを使用して開始しxます。

注:N指定しない場合、あたかも動作しますN=1(単一の文字を削除します)

離散文字:

<N>x -右側のN文字を削除

d<N><left-arrow> -左側のN文字を削除

d<N><right-arrow> -右側のN文字を削除

単語の境界:

注:1番目の前/後の単語はカーソルの下の単語です

d<N>b -直前のN番目の単語の先頭から現在の位置まで削除

d<N>e -現在の位置から次のN番目の単語の終わりまで削除

d<N>w-同じですd<N>e、末尾の空白を含みます

diw -カーソルの下の単語全体を削除

daw-同じですdiw、末尾の空白を含みます

ライン境界:

d0 -行頭から現在位置まで削除

d^ -最初の空白以外の文字から現在の位置まで削除

d$ -現在の位置から行末まで削除


1

/ <CR>x

(前方にスペースを検索し、Enterキーを押してそこに移動し、xで削除します)

それを行うためのより魔法の方法があるかもしれませんが、私はそれを知りません。


左側の最初の空白を削除する場合は、?を押します。私の例では/の代わりに。
brettkelly 2009
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.