Ответ 1
vi поддерживает наличие нескольких файлов для редактирования. :n
переходит к следующему файлу, :n
переходит к предыдущему. Используйте :h arglist
для получения дополнительной информации.
При использовании текстового редактора vi программистов я часто использую поиск подстановочных знаков для ленивого файла, который я хочу редактировать
vi ThisIsAReallLongFi*.txt
Когда это соответствует одному файлу, он отлично работает. Однако, если он соответствует нескольким файлам, vi делает что-то странное.
Сначала он открывает первый файл для редактирования
Во-вторых, когда я: wq из файла, я получаю сообщение в нижней части терминала, которое выглядит следующим образом
E173: 4 more files to edit
Hit ENTER or type command to continue
Когда я нажимаю enter, , он возвращает меня в режим редактирования в файле, который я только что находился в. Поведение, которое я ожидаю здесь, будет состоять в том, что vi перейдет к следующему файлу для редактирования.
Итак,
Какая логика поведения vi здесь
Есть ли способ переместить и отредактировать следующий файл, который был сопоставлен?
И да, я знаю о завершении табуляции, этот вопрос основан на любопытстве и хочет лучше понять оболочку.
vi поддерживает наличие нескольких файлов для редактирования. :n
переходит к следующему файлу, :n
переходит к предыдущему. Используйте :h arglist
для получения дополнительной информации.
ОТВЕТ НА ТЕКУЩИЙ ВОПРОС
Вы можете написать: vim -p myfile*
и vim откроет все совпадения для myfile*
в текущем каталоге на несколько вкладок. Затем вы можете редактировать все файлы по одному. Перейдите с помощью gt
для перехода на следующую вкладку и gt
для перехода на предыдущую вкладку. Чтобы сохранить и оставить все файлы за один раз, просто напишите :wqa
внутри vim.
ОТВЕТ НА СЛЕДУЮЩУЮ ПРОБЛЕМУ
У меня возникла аналогичная проблема. У меня был файл с именем "myfile *" внутри нескольких подкаталогов моего текущего каталога. Я хотел отредактировать небольшое изменение во всех них, не открывая их один за другим. Итак, в командной строке я написал следующее:
$find . -type f -name "myfile*" -exec vim -f {} \;
Таким образом, поиск запускает vim для каждого файла. Как только я покину экземпляр vim, find автоматически запускает другой файл со следующим файлом, пока все они не будут выполнены. Хотя, я согласен, что было бы лучше, если бы все файлы могли быть открыты в виде вкладок.