Как удалить все строки в файле с помощью 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 весь текст от текущей строки до конца файла?