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

Установка и использование sudo. Это - то и самый нормальный способ сделать эти вещи. dhclient действительно полномочия пользователя root потребностей, нет никакого пути вокруг этого.

Позвольте определенным пользователям выполнять единственную команду с полномочиями пользователя root. Это может быть настроено в a /etc/sudoers файл как это (использование редактирования visudo):

Cmnd_Alias     DHCP = /usr/sbin/dhclient
User_Alias     DCHPUSERS = millert, mikef, dowdy

DCHPUSERS      ALL = NOPASSWD: DHCP

Выше всего один способ настроить sudo. Если у Вас есть много пользователей для администрирования как это, я предлагаю использовать группу локального пользователя вместо того, чтобы указать отдельных пользователей.

279
16.10.2014, 12:39
14 ответов

в VI DO

:1,$d

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

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

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

485
27.01.2020, 19:26

Я бы порекомендовал, чтобы вы только что сделали это (должны работать в любой SCIX-совместимой оболочке):

> test.txt

Если вы действительно хотите сделать это с VI, вы можете сделать:

  • 1G (перейти к первой строке)
  • DG (удаление к последней строке)
53
27.01.2020, 19:26

Перейти к началу файла и нажмите D g .

12
27.01.2020, 19:26

Я всегда использую ggVG

  • gg прыжки к началу текущего файла редактирования
  • V (с заглавной буквы v) выберет текущую строку. В этом случае первая строка текущего файла редактирования
  • G (заглавная g) перепрыгнет в конец файла. В этом случае, так как я выбрал первую строку, G выберет весь текст в этом файле.

Затем можно просто нажать d или x, чтобы удалить все строки.

5
27.01.2020, 19:26

Если ваш курсор находится на первой строке (если нет, введите: GG или 1G ), то вы можете просто использовать DG . Он удалит все строки из текущей строки до конца файла. Итак, чтобы убедиться, что вы удалите все строки из файла, вы можете смешивать оба вместе, что было бы: GGDG (в то время как в командном режиме).

ИЛИ % D в режиме EX, пример командной строки: VIM +% D Foo.bar .

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

29
27.01.2020, 19:26

Я ленивый чувак, и мне нравится держать это просто. GGDG - пять клавишных конструкций, в том числе Shift

GG идет к первой строке в файле, D - это начало D Элете глагол и G - это движение, чтобы перейти к нижней части файла. Вербозливо, он идет к началу файла и удалить все до конца плитки.

27
27.01.2020, 19:26

В VI I использую

:%d

, где

  • : говорит VI в командный режим
  • % означает все линии
  • D : Удалить

в командной строке,

> test.txt

также будет делать.

В чем проблема с DD?

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

, где

  • / dev / null - это специальный файл байта
  • , если является входным файлом
  • Опутский файл
180
27.01.2020, 19:26

обратите внимание, что в вашем вопросе echo > test.txt создает файл с разрывом в одну строку, а не пустой файл.

Из оболочки, рассмотрите возможность использования echo -n > test.txt или : > test.txt.

Хотя я обычно использую команду редактирования vi (я использую ggdG), вы также можете вызвать оболочку со ссылкой на текущий файл так:

:!:>%

Он почти такой же лаконичный, как ggdG, но более трудный для ввода, и вы также должны подтвердить, что хотите перезагрузить измененный файл, поэтому я не особо рекомендую это делать в данном случае, но знать, как использовать команды оболочки от vi вроде этой, очень полезно.

:

  • : инициирует команду vi
  • ! инициализируйте команду оболочки
  • : это команда сборки оболочки с пустым выводом
  • > перенаправить вывод
  • % vi заменяет это на имя текущего файла

Предлагаемая : 1,$d тоже неплохо, и пока я этим занимаюсь, есть еще 1GdG

3
27.01.2020, 19:26

Другое решение:

truncate -s 0 file
3
27.01.2020, 19:26

Вы можете использовать трюк, чтобы удалить большое количество строк. Убедитесь, что вы не находитесь в режиме вставки (, нажмите ESC ), затем введите 1000dd.

-1
27.01.2020, 19:26

Я набираю gg, чтобы добраться до верхней части строк, а затем делаю 100 dd. Это переводит указатель на верхнюю строку редактора и очищает оттуда 100 строк. Возможно, вам придется изменить число, чтобы добавить больше строк, если файл длиннее.

-1
27.01.2020, 19:26
> file.txt

Вам даже не нужно открывать vi, если вы действительно этого не хотите.

-1
27.01.2020, 19:26

Тип :и%d

(Не в режиме вставки. Если это так, сначала нажмите escape)

1
27.01.2020, 19:26

Я делаю dgg, который удаляет все строки из курсора (, который обычно является EOF, когда вы открываете файл )вверху, что является самым быстрым.

0
01.06.2021, 20:36

Теги

Похожие вопросы