В настоящее время я использую MacVim и хочу распечатать все файлы в моем рабочем дереве.Есть ли способ просто сделать это, возможно, с помощью команды hardcopy?
hardcopy
Удобный способ выполнить команду для группы файлов - собрать список их имен, определить его как новый список аргументов (см. :help arglist), а затем повторить команду над этими файлами в списке аргументов..
:help arglist
Чтобы выполнить первый шаг, используйте команду :args с подстановочным знаком, совпадающим с требуемыми файлами.Например,
:args
:args ./**/*
устанавливает список аргументов для имен всех файлов в текущем каталоге и его подкаталогах;аналогично
:args /tmp/**/*.{c,h}
выбирает все файлы .c и .h в /tmp и его подкаталогах.Подробнее о синтаксисе подстановочных знаков см. :help wildcard.
.c
.h
/tmp
:help wildcard
Если путь к корню поддерева, содержащего файлы для печати, заранее неизвестен и создан с помощью сценария, используйте команду
:exe 'args' join(map(split(glob(p . '/**/*'), '\n'), 'fnameescape(v:val)'))
где переменная p должна содержать путь к этому корневому каталогу.
p
Для отправки файлов из списка аргументов на принтер выполните команду :hardcopy для этих файловиспользуя команду :argdo,
:hardcopy
:argdo
:argdo hardcopy!
Спецификатор ! подавляет модальное диалоговое окно для выбора параметров печати.
!
Для печати каждого файла в отдельный файл можно использовать более сложную командуДокумент PostScript, расположенный в том же каталоге, что и этот файл.
:argdo hardcopy! >%:p.ps
Здесь имя напечатанного файла объединяется с суффиксом .ps, чтобы получить имя соответствующего файла PostScript (см. :help cmdline-special).
.ps
:help cmdline-special
Для ускорения команды :argdo -argument Vim игнорирует событие автокоманды Syntax, добавляя его в список eventignore.Это подразумевает, что если бы Syntax автокоманды не выполнялись для файла в списке аргументов до того, как команда :hardcopy будет :argdo ne, соответствующий печатный документ не будет иметь подсветку синтаксиса (в случае, если syntax:y установлено вprintoptions).Чтобы выполнить Syntax автокоманды для всех файлов в списке аргументов, сначала используйте следующую команду:
Syntax
eventignore
syntax:y
printoptions
:argdo set ei-=Syntax | do Syntax
Чтобы сделать это в том же цикле, что и печать, объедините команды:
:argdo set ei-=Syntax | do Syntax | hardcopy! >%:p.ps
Редактировать Извините, я неправильно понял раньше.
Чтобы напечатать все, скажем, файлы php и C # в вашем рабочем каталоге:
:args ./*.{cs,php} **/*.{cs,php} :argdo ha