vi を使用してファイル内のすべての行を削除するにはどうすればよいですか?

vi を使用してファイル内のすべての行を削除するにはどうすればよいですか?

vi を使用してファイル内のすべての行を削除するにはどうすればよいですか?

現時点では、ファイル内のすべての行を削除するために次のような方法を使用しています。

echo > test.txt

を使用してすべての行を削除するにはどうすればよいですかvi?

注記: 使用するのはdd良い選択肢ではありません。行が多数存在する可能性があります。

答え1

行うvi

:1,$d

すべての行を削除します。

:コマンドを開始します (カーソルを一番下に移動します)。
は、1,$後続のコマンド ( d) がどの行に作用するかを示します。この場合、 は 1 行目から最後の行までの範囲です ( で示される$ため、ドキュメント内の行数を知る必要はありません)。
最後の は、d指定された行を削除することを意味します。

より短い形式 ( :%d) もありますが、私はこれを使用したことがありません。 は:1,$d、たとえば最初の 3 行と最後の 2 行だけを残して残りを削除するなど、より簡単に「適応」でき:4,$-2dます。

答え2

viでは

:%d

どこ

  • :viにコマンドモードに入るように指示する
  • %すべての行を意味します
  • d: 消去

コマンドラインでは、

> test.txt

も行います。

dd の問題は何ですか?

dd if=/dev/null of=test.txt

どこ

  • /dev/null特別な0バイトのファイルです
  • if入力ファイル
  • of出力ファイル

答え3

次のようにすることをお勧めします (POSIX 準拠のシェルであればどれでも動作するはずです)。

> test.txt

本当に vi で実行したい場合は、次のようにします。

  • 1G(最初の行へ移動)
  • dG (最後の行まで削除)

答え4

カーソルが最初の行にある場合 (そうでない場合は、ggまたは と入力してください1G)、 を使用できますdG。これにより、現在の行からファイルの末尾までのすべての行が削除されます。したがって、ファイルからすべての行を確実に削除するには、両方を組み合わせて次のようにします (ggdGコマンド モードの場合)。

または、%dEx モードでは、コマンドラインの例: vim +%d foo.bar.

関連している:VIM で現在の行からファイルの最後までのすべてのテキストを削除するにはどうすればよいですか?

関連情報