我目前正在使用 MacVim,我想打印出我工作树中的所有文件。有没有办法简单地做到这一点,也许使用 hardcopy
命令?
最佳答案
对一组文件执行命令的一种便捷方法是
(1) 收集他们的名字列表,将其定义为新的参数列表
(请参阅 :help arglist
),然后 (2) 在该列表上迭代命令。
1. 要执行第一步,请使用 :args
命令与
匹配所需文件的通配符。例如,
:args ./**/*
将参数列表设置为当前所有文件的名称目录及其子目录;相似地,
:args /tmp/**/*.{c,h}
全选 .c
和 .h
/tmp
中的文件及其子目录。有关通配符语法的详细信息,请参阅
:help wildcard
.如果包含要打印的文件的子树的根的路径是
事先未知并由脚本构建,请使用命令
:exe 'args' join(map(split(glob(p . '/**/*'), '\n'), 'fnameescape(v:val)'))
其中变量 p
应该包含到那个路径根目录。
2. 要将参数列表中的文件发送到打印机,请执行
:hardcopy
这些文件的命令使用 :argdo
命令::argdo hardcopy!
!
说明符抑制用于选择打印的模式对话框参数。
可以使用更复杂的命令将每个文件打印到
位于同一目录的单独 PostScript 文档
作为该文件:
:argdo hardcopy! >%:p.ps
这里打印文件的名称与 .ps
连接在一起。后缀获取相应 PostScript 文件的名称(请参阅
:help cmdline-special
)。用于加速
:argdo
参数命令,Vim 忽略Syntax
将自动命令事件添加到 eventignore
列表。这意味着如果
Syntax
没有运行自动命令参数列表中
:hardcopy
之前的文件命令是:argdo
ne, 相应的打印文件不会语法突出显示(尽管
syntax:y
被设置在 printoptions
中)。执行
Syntax
参数中所有文件的自动命令list,首先使用以下命令:
:argdo set ei-=Syntax | do Syntax
要在与打印相同的运行中执行此操作,请将两者连接起来命令:
:argdo set ei-=Syntax | do Syntax | hardcopy! >%:p.ps
关于vim - 如何从 Vim 递归打印当前工作目录下的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844434/