1

Я провожу большую часть своего времени в Windows 8 и использую gvim -c в качестве замены sed. Я думаю, что я могу получить sed с Cygwin, но я надеюсь, что я могу сделать это с gvim -c .

У меня есть каталог файлов с разделителями табуляции .txt, а у некоторых есть заголовок (как показано ниже), который я хочу удалить.

Definition of the Ultimate Owner :                                                                                                                                                  
- minimum percentage that must characterize the path from a subject company up to its Ultimate owner : 25.01%                                                                                                                                                   
- At least one of its shareholders must be known and it cannot own more than 25.01%                                                                                                                                                 

Mark     Company name ... 

Чтобы удалить заголовок в сеансе gvim, я бы использовал d/^Mark , затем :wq . Но у меня их сотни, поэтому я бы хотел использовать gvim -c и argdo . Я часто делаю это с s// , скажем что-то вроде gvim -c "argdo %s/foo/bar/ge | wq" *.tex .

Моей первой мыслью было gvim -c "d/^Mark | wq" *.txt , но это не сработало, потому что / не является командой ex.

Есть ли ex-эквивалент d/^Mark который я могу использовать с gvim -c и argdo?

1 ответ1

2

Вам нужна команда :d[elete] диапазоном:

:[fromline],[toline]d

Диапазоны не ограничены абсолютными номерами строк: также можно использовать поиск:

:1,/bar/d

удаляет все строки между строкой 1 и первой строкой, содержащей bar .

Следующая команда удаляет каждую строку между строкой 1 и строкой над первой строкой, начинающейся с bar:

:1,/^bar/-1d

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

  • текущая строка предполагается, если первая часть диапазона отсутствует, так как мы открываем новый буфер и не перемещаем курсор, мы можем удалить 1 ,

  • смещение по умолчанию для - равно 1 , так как это смещение, которое мы используем, мы можем оставить также и последнюю 1 . Команда становится:

    :,/^ Бар /-d

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

$ gvim -c "argdo ,/^Mark/-d | wq" *.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .