vim - 如何从 Vim 递归打印当前工作目录下的所有文件?

标签 vim

我目前正在使用 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/

相关文章:

vim - 如何根据vim中的搜索模式直观地选择行?

vim - 在视觉选择上使用 Ack.vim

vim - 如何让 Vim 填充终端窗口

vim - 禁用映射到 Ctrl-a 的良好 VIM 的数字增量

vim:选择里面的点

vim - 在 vim 中使用 block 选择从行尾删除

shell - 更改 MacVim 默认 shell?

vim - 如何在vim中重新打开缓冲区?

vim - 如何查看特定 go 函数的文档?

vim - 如何在fish shell中使用vi模式?