Есть ли способ открыть все файлы в каталоге из 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/**