удалить строку в vi

170

Как я могу удалить строку в VI?

Вот что я сейчас делаю:

  1. Откройте терминал alt+ ctrl+t
  2. vi a.txt
  3. Я перемещаю курсор на строку, которую хочу удалить, и какую комбинацию клавиш следует использовать для удаления строки в редакторе vi ?
IM-JM
источник
5
Я предлагаю вам прочитать washington.edu/computing/unix/vi.html, он дает вам общий обзор использования. Вот чит-лист : tuxfiles.org/linuxhelp/vimcheat.html Всегда полезно взглянуть на подобные страницы, прежде чем задавать тривиальные вопросы ...
polemon
2
есть также S для удаления строки и ввода insert
Ben

Ответы:

291

Нажатие ddудалит эту строку (на самом деле это отрежет ее). Таким образом, вы можете вставить его через p.

Герт
источник
22

Как уже говорили другие, это ddесли вы находитесь в обычном режиме (нажмите ESC), чтобы убедиться, что вы находитесь в обычном режиме, но по умолчанию вы будете. Возможно, вы обнаружили, что vi действует не так, как вы ожидаете, что редактор будет действовать. Он довольно уникален, и эти уникальные функции делают его чрезвычайно мощным и быстрым в работе. Если вы хотите узнать больше, вы можете запустить vimtutorиз командной строки, и вы получите быстрое (может быть, час чтения / эксперимент) учебник по основам его использования.

Теперь вы можете использовать редактор с более привычным интерфейсом. Большинство систем имеют nano. Вы можете напечатать, nano a.txtчтобы открыть свой файл в nano. Вы даже можете пойти дальше - нет никаких причин использовать редактор на основе терминала. Поскольку вы упомянули об использовании ( Ctrl+ Alt++ T), и это ярлык по умолчанию в Ubuntu и некоторых других дистрибутивах Gnome, поэтому я был бы удивлен, если бы вы не geditустановили. В командной строке попробуйте, gedit a.txtи вы получите графический редактор.

Шон Дж. Гофф
источник
Это нужно нескольким людям. Если вы регулярно редактируете текстовые файлы, стоит изучить vim. Если вы этого не сделаете, и вы просто пытаетесь следовать некоторым инструкциям, чтобы что-то заработало, то, вероятно, оно того не стоит, если вы просто не заинтересованы в том, чтобы попробовать другое программное обеспечение и изучить новые вещи.
Шон Дж. Гофф
Я запустил vimtutor в командной строке, и он открыл vim с временным. файл. Я сделал какую-нибудь ошибку?
IM-JM
@ im-jm Не думаю, что вы допустили ошибку, но ваша система может иметь необычную конфигурацию. Он должен открыть документ, который начинается с «Добро пожаловать в VIM Tutor». Если вы заинтересованы в проработке этого, вы должны опубликовать еще один вопрос.
Шон Дж. Гофф
12

Чтобы удалить строку под курсором, используйте dd.

Команда delete принимает все обычные позиционные модификаторы, поэтому, если вы находитесь в начале строки ниже той, которую хотите удалить, вы можете просто dkперейти в режим удаления и переместиться на одну строку вверх, удаляя все, что прошел курсор.

Вы также можете указать повторение, поэтому 5ddудаляете строку под курсором пять раз, эффективно удаляя текущую и следующие четыре строки.

Калеб
источник
8
Или d5d. Я не знаю почему, но я предпочитаю это. (Забавный факт: NdMdудаляет N × M строк)
Random832
7

Esc dd после перехода на линию, которую вы хотите удалить

Anoop
источник
2
Выход не требуется, если вы можете перейти на строку, которую хотите удалить.
Энтон
3
Выход необходим, если вы используете клавиши со стрелками в режиме вставки, чтобы перейти к правой строке.
Александр
1

В визуальном режиме

Shift + V, выберите линии, затем D

Ctrl + V, выберите столбцы, затем D

Бен
источник