В случае имен файлов, которые не содержат символов новой строки, проблема может быть легко решена с помощью скрипта Vim:
:call append('.', map(split(glob('*.tex'), '\n'), '''\begin{table} \input{''.v:val.''} \end{table}'''))
или
:let fmt = '\begin{table} \input{%s} \end{table}'
:call append('.', map(split(glob('*.tex'), '\n'), 'printf(fmt, v:val)'))
В вышеприведенных командах используется glob()
функция для сбора списка имен файлов, соответствующих заданному шаблону.Результирующий набор имен файлов представляется в виде строки, содержащей пути, разделенные символами новой строки.Используя функцию split()
, строка разбивается на список, который обрабатывается функцией map()
для форматирования имен файлов в соответствии с желаемым текстовым шаблоном.Затем строки из этого списка вставляются ниже текущей строки с помощью функции append()
.
Еще один способ заполнить список имен файлов в буфере - вставить вывод команды system directory-list через :read!
command,
:r!ls *.tex
Чтобы отформатировать список по мере необходимости, выполните
:'[,']s/.*/\\begin{table} \\input{&} \\end{table}/
сразу после выполнения предыдущей команды.