我目前正在使用MacVim,我想打印出工作树中的所有文件。有没有办法简单地这样做,也许使用hardcopy
命令?
答案 0 :(得分:6)
为一组文件执行命令的便捷方法是收集
他们的名字列表,将其定义为新的参数列表(参见:help arglist
),
然后在参数列表中对这些文件进行迭代。
要执行第一步,请使用带有通配符的:args
命令
匹配所需的文件。例如,
:args ./**/*
将参数列表设置为当前所有文件的名称 目录及其子目录;类似地,
:args /tmp/**/*.{c,h}
选择.c
及其子目录中的所有.h
和/tmp
个文件。对于
有关通配符语法的详细信息,请参阅:help wildcard
。
如果包含要打印的文件的子树根的路径未知 事先并由脚本构建,使用命令
:exe 'args' join(map(split(glob(p . '/**/*'), '\n'), 'fnameescape(v:val)'))
其中变量p
应包含其路径名
根目录。
要将参数列表中的文件发送到打印机,请执行
使用:hardcopy
命令
:argdo
命令
:argdo hardcopy!
!
说明符禁止选择打印的模式对话框
参数。
可以使用更复杂的命令将每个文件打印到 一个单独的PostScript文档,位于与该目录相同的目录中 文件。
:argdo hardcopy! >%:p.ps
此处打印文件的名称与.ps
后缀连接在一起
获取相应PostScript文件的名称(请参阅:help
cmdline-special
)。
为了加速:argdo
- 参数命令,Vim忽略了
Syntax
自动命令事件,将其添加到eventignore
列表中。
这意味着如果没有为文件运行Syntax
自动命令
在:hardcopy
命令:argdo
之前的参数列表中,
相应的打印文档没有语法高亮
(如果在syntax:y
中设置printoptions
)。执行Syntax
参数列表中所有文件的自动命令,请使用以下命令
先命令。
:argdo set ei-=Syntax | do Syntax
要在与打印相同的运行中执行此操作,请连接命令:
:argdo set ei-=Syntax | do Syntax | hardcopy! >%:p.ps
答案 1 :(得分:3)
编辑抱歉,我之前误解了。
要打印所有内容,请说明工作目录中的php和C#文件:
:args ./*.{cs,php} **/*.{cs,php}
:argdo ha