Замена нескольких строк в редакторе Vi - PullRequest
0 голосов
/ 22 октября 2011

Это несколько строк текста в файле. Мне нужно удалить определенный блок текста с помощью редактора vi.

Полярные сияния (множественное число: полярные сияния или полярные сияния) - это естественное световое проявление в небе, особенно в высоких широтах (Арктика и Антарктика), вызванное столкновением заряженных энергичных частиц с атомами в высокогорной атмосфере (термосфере). ,

Most aurorae occur in a band known as the auroral zone[2][2] which is typically 3° to 6° in latitudinal extent and at all local times or longitudes.

The auroral zone is typically 10° to 20° from the magnetic pole defined by the axis of the Earth's magnetic dipole. During a geomagnetic storm, the auroral zone will expand to lower latitudes. The diffuse aurora is a featureless glow in the sky which may not be visible to the naked eye even on a dark night and defines the extent of the auroral zone.

У меня есть входной файл, как указано выше. В этом файле я должен удалить некоторые вхождения блока текста, как показано ниже.

Most aurorae occur in a band known as the auroral zone[2][2] which is typically 3° to 6° in latitudinal extent and at all local times or longitudes.

Итак, я использую следующую команду, которая не работает:

:g/^Most/,/auroral/,/longitudes./d

Я удаляю строки, начинающиеся с Моста, полярные сияния в середине и долготы в конце.

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

Существуют определенные ограничения на то, что вы можете сделать, но в контексте вы можете использовать:

:g/^while/.,/^}/d

для удаления цикла while, где while находится в начале строки до закрывающей скобки в начале строки.


Не могли бы вы добавить еще кое-что к этому?

Часть :g/^while/ осуществляет глобальный поиск строк, начинающихся с while. Далее следует команда ex, которая выполняется для каждой совпадающей строки. Команда: .,/^}/d, что означает удаление из текущей строки (.) до следующей строки, начинающейся с закрывающей скобки (/^}/) (d). Вы также можете использовать такие вещи, как обратный поиск или относительные движения (?^{? или .-3 или .+10).

По искаженному виду комментария трудно сказать, что именно вы имеете в виду (не ваша вина - комментарии не сохраняют полезного форматирования.)

--------------
Stack Over Flow
c**p
c**p
c**p
cool
c**p
c**p
c**p
------------

Мне нужно заменить с переполнения стека на ------------ [...]

Это просто, и я не вижу, как cool влияет на это:

:g/^Stack Over Flow/.,/^-------/d

Это изоморфно моему первоначальному ответу.

1 голос
/ 22 октября 2011

Было бы проще удалить блок { ... } вместо поиска и замены.

Вы можете перейти к блоку (внутри или при открывании с пробелом) и удалить его с помощью daB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...