Открытие нескольких файлов в Vim с помощью списка файлов

Открытие нескольких файлов в Vim с помощью списка файлов

У меня есть файл «filelist», содержащий следующие строки:

text1.txt
text2.txt
text3.txt 

Я ищу вызов командной строки, который открывает 3 файла в vim. Я попробовал следующее:

$ cat filelist | vim - 

и

$ vim < cat filelist

но они не дают желаемого результата.

решение1

Если имена файлов не содержат пробелов или другихпроблематичныйсимволы, вы можете использовать

vim $(cat filelist)

Для имен файлов с пробелами xargsболее надежным является использование (здесь используются xargsспециальные параметры GNU):

xargs --delimiter '\n' --arg-file=filelist vim --

решение2

С zsh:

vim -- ${(f)"$(<filelist)"}

С bash4.0+:

readarray -r files < filelist &&
  vim -- "${files[@]}"

С любой оболочкой типа Bourne (включая zshи bash):

(IFS='
'; set -f; exec vim -- `cat filelist`)

С помощью GNU xargs(также используется -rдля избежания запуска vim, если файл пуст, но в отличие от других подходов, не пропускает пустые строки, если таковые имеются):

xargs -rd '\n' -a filelist vim --

решение3

Чтобы открыть всеиндекс.phpв текущем рабочем пути

vim -p `find . -name index.php`

решение4

Если вы уже находитесь в vim, вы можете установить :argsиз vim:

:args file-1 file-2 ... file-n

Бонус: в Unix вы также можете сделать:

:args `find . -name Makefile`

(предполагается, что пути к файлам не содержат символов новой строки и что есть хотя бы один соответствующий файл)

Или в вашем случае:

:args `cat filelist`

Связанный контент