Есть ли способ открыть все файлы в каталоге из Vim? Таким образом :command, по сути, будет сказано: «Открыть все файлы /some/pathв буферах».
В идеале было бы здорово открывать все файлы в каталоге рекурсивно.
Ответы:
Команда, которую вы ищете, - это args:
Например:
:args /path_to_dir/*
откроет все файлы в каталоге
:tab allчтобы поместить их на отдельные вкладки.
"/path_to_dir/subdir/" Illegal file name). Быстрое решение - запустить вторую команду, argd */чтобы снова удалить их из списка
:argdo source my_commands_batch.vim
Ты пробовал
:n /some/path/*
Он откроет все файлы в / some / path
Я не думаю, что он откроет файл рекурсивно.
РЕДАКТИРОВАТЬ
Возможно, использование ** будет открываться рекурсивно, как упоминалось в daf
Метод, с которым не нужно возиться, args- это поместить список файлов в текстовый файл, а затем использовать :soкоманду для запуска команд в этом файле.
Например, если вы хотите открыть все файлы, которые заканчиваются в .phpданном каталоге, сначала создайте, files.txtсодержащий список файлов, с добавлением любой команды, которую вы хотите использовать для их открытия.
sp alpha.php
sp bravo.php
sp charlie.php
Затем в vim:
:so files.txt
Если список файлов большой, относительно тривиально files.txtбыстро сгенерировать файл, перенаправив вывод lsв файл, а затем используя макрос vim для добавления spперед каждым именем файла.
Это , очевидно, не так элегантно , как с помощью argsи argdoкоманд, но эти команды также намного более сложные.
Также может быть способ сделать это с помощью одной команды в командной строке, но даже спустя 16 лет я все еще считаю программирование vim странным и загадочным.
Другой способ рекурсивного открытия файлов
find . -type f -exec vi {} \;
kate **/*(^/)(используя синтаксис zsh globbing) делает то, что необходимо: рекурсивно открывает файлы из заданного каталога. Он не «изнутри» и совсем не использует vim, но «все же делает то, что нужно». Или даже kate ~/.vimrc ~/.bashrc. Исключая «изнутри», «из данного каталога» и «рекурсивно» вместе, но он «все же делает то, что необходимо»: открывает файлы.
**для рекурсивного сопоставления файлов. Eg:args /path_to_dir/**