Подтвердить что ты не робот

Редактирование нескольких файлов в vi с помощью подстановочных знаков

При использовании текстового редактора vi программистов я часто использую поиск подстановочных знаков для ленивого файла, который я хочу редактировать

vi ThisIsAReallLongFi*.txt

Когда это соответствует одному файлу, он отлично работает. Однако, если он соответствует нескольким файлам, vi делает что-то странное.

Сначала он открывает первый файл для редактирования

Во-вторых, когда я: wq из файла, я получаю сообщение в нижней части терминала, которое выглядит следующим образом

E173: 4 more files to edit
Hit ENTER or type command to continue

Когда я нажимаю enter, , он возвращает меня в режим редактирования в файле, который я только что находился в. Поведение, которое я ожидаю здесь, будет состоять в том, что vi перейдет к следующему файлу для редактирования.

Итак,

  • Какая логика поведения vi здесь

  • Есть ли способ переместить и отредактировать следующий файл, который был сопоставлен?

И да, я знаю о завершении табуляции, этот вопрос основан на любопытстве и хочет лучше понять оболочку.

4b9b3361

Ответ 1

vi поддерживает наличие нескольких файлов для редактирования. :n переходит к следующему файлу, :n переходит к предыдущему. Используйте :h arglist для получения дополнительной информации.

Ответ 2

ОТВЕТ НА ТЕКУЩИЙ ВОПРОС

Вы можете написать: vim -p myfile* и vim откроет все совпадения для myfile* в текущем каталоге на несколько вкладок. Затем вы можете редактировать все файлы по одному. Перейдите с помощью gt для перехода на следующую вкладку и gt для перехода на предыдущую вкладку. Чтобы сохранить и оставить все файлы за один раз, просто напишите :wqa внутри vim.

ОТВЕТ НА СЛЕДУЮЩУЮ ПРОБЛЕМУ

У меня возникла аналогичная проблема. У меня был файл с именем "myfile *" внутри нескольких подкаталогов моего текущего каталога. Я хотел отредактировать небольшое изменение во всех них, не открывая их один за другим. Итак, в командной строке я написал следующее:

$find . -type f -name "myfile*" -exec vim -f {} \;

Таким образом, поиск запускает vim для каждого файла. Как только я покину экземпляр vim, find автоматически запускает другой файл со следующим файлом, пока все они не будут выполнены. Хотя, я согласен, что было бы лучше, если бы все файлы могли быть открыты в виде вкладок.