2010-05-14 5 views
21

При использовании программистов текстового редактора VI, я буду часто использовать поиск по шаблону лениться о файле я хочу редактироватьРедактирование несколько файлов в VI с Wildcards

vi ThisIsAReallLongFi*.txt 

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

Во-первых, он открывает первый файл для редактирования

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

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

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

Так,

  1. Что логика поведения VI здесь

  2. Есть ли способ, чтобы двигаться дальше и редактировать следующий файл, который был согласованный?

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

ответ

32

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

+1

Еще одна десятилетняя загадка решена. Благодаря! –

7

ОТВЕТ НА ВОПРОС ТОКА

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

ОТВЕТ НА Аналогичная проблема

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

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

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

+2

Кроме того, поскольку максимальное количество открытых вкладок составляет ** 10 **, может быть удобно увеличить лимит, установив пользовательский 'tabpagemax' в' ~/.vimrc'. См. [Link] (https://www.linux.com/learn/tutorials/442422-vim-tips-using-tabs) – Campa

+0

+1 для показа, как искать в подкаталогах и для отображения '-exec' paramter для' find '. BTW, что заканчивается '\;' for? –

+0

//, @Abhinav, спасибо за лучший ответ. Это заслуживает большего количества голосов. –

 Смежные вопросы

  • Нет связанных вопросов^_^