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
コマンド モードの場合)。
または、%d
Ex モードでは、コマンドラインの例: vim +%d foo.bar
.