Как удалить все строки в файле с помощью vi?

Как удалить все строки в файле с помощью vi?

Как удалить все строки в файле с помощью vi?

В данный момент я делаю это, используя что-то вроде этого, чтобы удалить все строки в файле:

echo > test.txt

Как удалить все строки с помощью vi?

Примечание: Использовать ddне лучший вариант. Строк может быть много.

решение1

В viделать

:1,$d

чтобы удалить все строки.

Вводит :команду (и перемещает курсор вниз).
Это 1,$указание на то, на каких строках dдолжна работать следующая команда ( ). В данном случае это диапазон от первой строки до последней (обозначается $, поэтому вам не нужно знать количество строк в документе).
Final dозначает удаление указанных строк.

Есть более короткая форма ( :%d), но я никогда ее не использую. Ее :1,$dможно легче «адаптировать», например, :4,$-2dоставив только первые 3 и последние 2 строки, удалив остальное.

решение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.

Связанный:Как удалить в VIM весь текст от текущей строки до конца файла?

Связанный контент