#vim
#vim
Вопрос:
В VIM я хочу удалить все строки, которые не состоят из 2 или 3 символов.
:g/^..$/d
:g/^...$/d
Они удаляют 2 или 3 символьные строки. Как объединить два в один и отменить его, а именно «не удалять 2 или 3 строки символов»
Ответ №1:
Вы можете использовать :v
для выполнения команды в строках, которые не соответствуют шаблону.
Однако для этого требуется, чтобы вы использовали один шаблон… Что в вашем случае вы можете легко сделать, используя =
модификатор, чтобы при необходимости сопоставить последний элемент.
Итак, чтобы удалить все строки, содержащие 2 или 3 символа, вы можете использовать:
:g/^...=$/d
И удалить все строки, кроме тех, которые содержат 2 или 3 символа:
:v/^...=$/d
Комментарии:
1. Приятно, я не знал об
=
. Но это не регулярное выражение, не так ли? Эквивалентом регулярного выражения было бы?
?2. @LievenKeersmaekers Смотрите ссылку на справку Vim по регулярным выражениям Vim. Vim также принимает
?
значение необязательного. В разделе «очень волшебно» вы также можете опустить обратную косую черту.3. Я просмотрел ссылку, но сомневаюсь, что когда-либо смогу освоить смешивание модификаторов regex и vim (не говоря уже о том, чтобы понять, когда это использовать).
Ответ №2:
Следующее было бы моим регулярным выражением выбора
:v/v^.{2,3}$/d
Параметры: Без учета регистра
Ответ №3:
Как насчет «удалить все строки, содержащие менее двух или более трех символов»?
:g/^.{,1}$|^.{4,}/d