2

Мне нужно сделать следующее в нескольких файлах: dt{%lx:wq , т.е.

  1. удалить до первого {
  2. найти соответствие }
  3. удалить следующий символ
  4. Сохранить и выйти

Как мне сделать это из командной строки, не открывая экран?

vi -c 'dt{%lx:wq' терпит неудачу с очевидным

E492: Not an editor command: dt{%lx:wq

Я думаю, мне нужно преобразовать каждую команду - dt{ , % , l , x - в команду ex . Как мне найти команды?

1 ответ1

1

Вы можете использовать как vi и ex , например:

ex -s +'norm dt{%lx' -cwq foo

Для vi просто добавьте -e (для режима Ex):

vi -es +'norm dt{%lx' -cwq foo

Поэтому, чтобы ваши примеры работали, в основном вам нужно добавить norm/normal который выполняет команды в обычном режиме (как вы набираете в Vi).

Основные параметры:

  • -s - Тихий режим, который не открывает экран. Полезно для работы в терминале.
  • -e - Ex-режим (необходим для команд vi/vim ), так как ex уже имеет его по умолчанию
  • -cwq - Более хороший способ сделать :wq

Если у вас все еще проблемы, добавьте -V для многословия.

Для дальнейших примеров, проверьте:

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