1. ホーム
  2. vim

[解決済み] vimで現在行より下の行を削除するには?

2023-04-22 20:11:46

質問

現在の行の直下にある行(または数行)を削除するコマンドはありますか? 現在、私は次のように行っています。 j dd で、次に . を必要に応じて繰り返しています。 これらすべてを組み合わせるようなコマンドはないのでしょうか?

UPDATE: 私がそのようなコマンドを持ちたいと思う理由は、現在の位置から離れたくないのに、下の行を削除することができることです。

どのように解決するのですか?

delete exコマンドでうまくいきます。

:+,$d

これは、現在の+1から最後($)までのすべての行を削除します。

次の2行を削除するには、次のような範囲を指定します。 +1,+2 または省略記法 +,+2

:+,+2d

ibさんがおっしゃるように :delete または :d コマンドを実行すると、カーソルが削除されたテキストの隣の行の先頭に移動します。(たとえ nostartofline が設定されていても)。これを克服するために `` という通常モードのコマンドを発行します。 `` は、最後のジャンプの前の正確な位置にジャンプして戻りますが、この場合は :d コマンドを実行します。コマンドは次のようになります。

: + , + 2 d 入る ` `

あるいは、ある元コマンドとして

:+,+2d|norm! ``

これを簡単にするために、すべてをコマンドにまとめます。

command! -count=1 -register D :+,+<count>d <reg><bar>norm! ``

次に、次の3行を削除します。

:3D

このコマンドはまた {reg} のように :delete:yank する。そこで、次の4行を削除して、レジスタ a となります。

:4D a

詳しくはこちら

:h :d
:h :command
:h :command-register
:h :command-count
:h ``