Я пытался следовать следующему:
Как удалить выделенный текст в редакторе VI
но
5dd
дает
E492: Команда не редактора: 5dd
Затем я попробовал:
5d
Что удаляет только одну строку. Как удалить несколько строк?
Я пытался следовать следующему:
Как удалить выделенный текст в редакторе VI
но
5dd
дает
E492: Команда не редактора: 5dd
Затем я попробовал:
5d
Что удаляет только одну строку. Как удалить несколько строк?
Ответы:
Похоже, вы вводите команды в командном режиме (он же «Ex-режим»). В этом контексте :5d
удалил бы строку номер 5, ничего больше. Чтобы 5dd
работать по назначению, то есть удалить пять следующих друг за другом строк, начинающихся с курсора, введите его в обычном режиме и не используйте перед командами префикс :
.
Мне это легче
/superuser/170795/how-can-i-select-and-delete-lines-of-text-in-vi
Вы можете удалить несколько строк (диапазона), если знаете номера строк:
:[start_line_no],[end_line_no]d
Примечание: d означает удаление
где
start_line_no - это начальная строка, которую вы не хотите удалить, а end_line_no - конечная строка, которую вы не хотите удалять. Строки между началом и концом, включая начало и конец, будут удалены.
Например:
:45,101d
Строки между 45 и 101, включая 45 и 101, будут удалены.
$
для обозначения последней строки в файле. Так :45,$d
удалил бы каждую строку от 45 до конца.
/<\/div>/
:.,[end_line_no]d
Команды, перечисленные для использования в обычном режиме (префикс с :для командного режима).
Проверено в Vim.
По сумме строки:
По номерам строк:
Backwards range given, OK to swap (y/n)?
Если вы предпочитаете метод невизуального режима и подтверждаете номера строк, я хотел бы предложить вам другой простой способ.
пример
Я хочу удалить текст со строки 45 по строку 101.
Мой метод предлагает вам ввести следующую команду в командном режиме:
45Gd101G
Он гласит:
Перейдите к строке 45 (
45G
), затем удалите текст (d
) из текущей строки в строку 101 (101G
).
Обратите внимание, что vim
вы можете использовать gg
вместо G
.
Сравните с ответом @Bonnie Varghese:
:45,101d[enter]
Приведенная выше команда из его ответа требует ввода 9 раз, в том числе enter, где мой ответ требует ввода 8–10 раз. Таким образом, скорость моего метода сопоставима.
Лично я сам предпочитаю 45Gd101G
более:45,101d
, потому что я , как приставать к синтаксису команды ВП, в данном случае является:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
Нажмите кнопку, Escчтобы убедиться, что вы не находитесь в режиме редактирования. Установите курсор на первую строку, которую нужно удалить. Войдите :5dd
. Текущая строка и следующие четыре строки должны быть удалены.
Либо, если у вас включена нумерация строк ...
Нажмите кнопку, Escчтобы убедиться, что вы не находитесь в режиме редактирования. Введите, :#,#d
где '#' означает номера начальной и конечной строки, которую необходимо удалить.
Если вы хотите удалить диапазон ПОСЛЕ запуска определенной строки, вы можете использовать что-то вроде этого
:g/^TMPDIR/ :.,+11d
Это удаляет 11 строк (включительно) после каждой встречи с ^TMPDIR
.
Чтобы удалить все строки, используйте - ESC gg dG Чтобы удалить несколько строк, скажем, 5, затем используйте ESC 5dd
Это можно было сделать следующим образом ..