Как эффективно работать с несколькими файлами в Vim
Я начал использовать Vim для разработки скриптов на Perl и обнаружил, что он очень мощный. Я могу открыть несколько файлов одновременно с помощью:
vi main.pl maintenance.pl
и переключаться между ними с помощью:
:n
:prev
Я могу проверить, какие файлы открыты, с помощью:
:args
Однако, когда я пытаюсь добавить новый файл с помощью:
:n test.pl
он заменяет мой текущий список файлов вместо того, чтобы добавлять в него. Когда я проверяю с помощью :args, открыт только test.pl.
Как я могу добавлять и удалять файлы в списке args, сохраняя при этом мой существующий список файлов?
Чтобы эффективно добавлять файлы в список аргументов Vim без замены существующих, следует использовать команду :argadd вместо :n. Команда :n переключает на следующий файл в списке аргументов и заменяет текущий список, если вы указываете новый файл. С помощью :argadd вы можете добавлять файлы в существующий список аргументов, а использовать :argdelete для удаления конкретных файлов при необходимости.
Содержание
- Понимание списка аргументов Vim
- Добавление файлов в список аргументов
- Удаление файлов из списка аргументов
- Работа со списком аргументов
- Практические примеры и рабочие процессы
- Продвинутые советы и приемы
Понимание списка аргументов Vim
Список аргументов в Vim — это мощная функция, которая позволяет указать набор файлов и затем выполнять команды над этими файлами коллективно источник. Он отличается от списка буферов — в то время как список аргументов представляет собой файлы, с которыми вы работаете как с группой, буферы — это отдельные открытые файлы в памяти.
Когда вы запускаете Vim с несколькими файлами, например vi main.pl maintenance.pl, эти файлы автоматически добавляются в список аргументов. Список аргументов служит основой для пакетных операций, таких как поиск и замена по нескольким файлам.
Ключевое отличие: Список аргументов — это отобранная группа файлов для конкретных операций, в то время как список буферов содержит все currently загруженные файлы в памяти.
Добавление файлов в список аргументов
Чтобы добавить файлы в текущий список аргументов без его замены, используйте команду :argadd (краткая форма :arga):
:argadd test.pl
Это добавляет test.pl в ваш существующий список аргументов. Вы можете проверить это с помощью :args, который теперь покажет как ваши исходные файлы, так и test.pl.
Добавление нескольких файлов одновременно:
:argadd script1.pl script2.pl script3.pl
Добавление файлов, соответствующих шаблону:
:argadd *.pl " Добавить все .pl файлы в список аргументов
Добавление файлов из текущего списка буферов:
:argadd % " Добавить текущий буфер в список аргументов
:buffdo argadd % " Добавить все буферы в список аргументов
Команда :argadd специально разработана для сохранения вашего существующего списка аргументов при добавлении новых файлов, что именно то, что вам нужно при работе с несколькими файлами в вашем рабочем процессе разработки.
Удаление файлов из списка аргументов
Чтобы удалить файлы из вашего списка аргументов, используйте :argdelete (краткая форма :argd):
:argdelete test.pl " Удалить test.pl из списка аргументов
Удаление нескольких файлов:
:argdelete script1.pl script2.pl
Удаление файлов, соответствующих шаблону:
:argdelete *.bak " Удалить все .bak файлы из списка аргументов
Удалить все файлы из списка аргументов:
:argdelete * " Очистить весь список аргументов
Удалить текущий файл из списка аргументов:
:argdelete # " Удалить текущий файл из списка аргументов
Команда :argdelete дает вам точный контроль над тем, какие файлы остаются в вашем списке аргументов, позволяя сосредоточиться только на файлах, релевантных для вашей текущей задачи.
Работа со списком аргументов
Как только у вас есть файлы в списке аргументов, вот основные команды для работы с ними:
Навигация:
:next " или :n - перейти к следующему файлу в списке аргументов
:prev " или :N - перейти к предыдущему файлу в списке аргументов
:first " или :fir - перейти к первому файлу в списке аргументов
:last " или :la - перейти к последнему файлу в списке аргументов
Просмотр и управление:
:args " Показать текущий список аргументов
:argdo " Выполнить команду для всех файлов в списке аргументов
Пример с :argdo:
:argdo %s/old/new/gc " Интерактивный поиск и замена по всем файлам в списке аргументов
:argdo w " Сохранить все файлы в списке аргументов
:argdo update " Сохранить все измененные файлы в списке аргументов
Список аргументов становится особенно мощным при сочетании с :argdo, который позволяет выполнять любую команду Vim по всем файлам в вашем списке аргументов.
Практические примеры и рабочие процессы
Рабочий процесс разработки на Perl:
" Начните с основных файлов
vi main.pl maintenance.pl utils.pl
" Добавьте связанные тестовые файлы
:argadd t/*.pl
" Добавьте файлы конфигурации
:argadd config/*.pl
" Теперь у вас есть все релевантные файлы в списке аргументов
:args " Проверьте ваш полный список
" Поиск функции по всем файлам
:argdo /sub my_function/
" Замена имени переменной по всем файлам
:argdo %s/$old_var/$new_var/g
" Очистка - удалите тестовые файлы при завершении
:argdelete t/*.pl
Пакетная обработка файлов:
" Добавьте все файлы, соответствующие шаблону
:argadd lib/*.pl
" Обработайте файлы
:argdo %s/TODO/FIXME/g
" Добавьте больше файлов по мере их обнаружения
:argadd bin/*.pl
" Удалите файлы, с которыми вы закончили работу
:argdelete lib/old_module.pl
Эти рабочие процессы демонстрируют, как список аргументов может адаптироваться к вашим потребностям в разработке, позволяя динамически управлять файлами, включенными в ваш текущий рабочий набор.
Продвинутые советы и приемы
Использование внешних команд для заполнения списка аргументов:
:args `find . -name "*.pl" -type f` " Найти все .pl файлы и добавить в список аргументов
:args `grep -l "important_function" *.pl` " Найти файлы, содержащие функцию
Работа с дублирующимися файлами:
:argdedupe " Удалить дублирующиеся имена файлов из списка аргументов
Преобразование между списком аргументов и списком quickfix:
" Преобразовать список аргументов в список quickfix
:vimgrep /pattern/ #
:copen
" Преобразовать список quickfix в список аргументов
:cexpr []
:args
Расширение с помощью плагинов:
Для продвинутого управления списком аргументов рассмотрите плагин ArgsAndMore, который расширяет встроенные возможности Vim такими функциями, как:
- Фильтрация списка аргументов
- Добавление файлов, не соответствующих шаблону
- Преобразование между аргументами и списками quickfix
Список аргументов — это мощная функция Vim, которая при правильном использовании может значительно повысить вашу продуктивность при работе с несколькими файлами. Понимая различие между :n (который переключает и заменяет) и :argadd (который добавляет), вы можете поддерживать гибкий рабочий процесс, адаптирующийся к вашим потребностям в разработке.
Источники
- Vim Arglist - vimgenius
- Vim 101: Search and Replace on Multiple Files - Medium
- Vim’s useful lists - David Winterbottom
- ArgsAndMore Plugin - vim online
- Manage small groups of related files with Vim’s argument list - Tom McFarlin
- Vim: editing.txt documentation
Заключение
Освоение управления списком аргументов Vim трансформирует то, как вы работаете с несколькими файлами. Ключевые выводы включают:
- Используйте
:argaddдля добавления файлов в существующий список аргументов вместо:n - Используйте
:argdeleteдля удаления конкретных файлов, когда они больше не нужны - Комбинируйте
:argdoс любой командой Vim для пакетных операций по нескольким файлам - Список аргументов отделен от буферов, что позволяет более сфокусированное управление файлами
- Внешние команды могут заполнять ваш список аргументов для динамического выбора файлов
Начните с простых команд :argadd и постепенно включайте :argdo для пакетных операций. По мере привыкания исследуйте продвинутые техники, такие как управление файлами на основе шаблонов и интеграция с внешними командами. Список аргументов — одна из самых недооцененных функций Vim, которая может кардинально улучшить ваш рабочий процесс разработки с несколькими файлами.