如果我执行以下命令从内部vim
访问代码文件的会话,生成的硬拷贝会语法高亮彩色:
:syntax on
:hardcopy >/path/to/hardcopy.ps
但是,如果我从命令行(Unix shell)尝试相同的命令序列,则生成的硬拷贝是没有颜色- 突出显示(我只得到黑色文本,有时是粗体或下划线等,在白色背景上):
% vim -c ':syntax on' -c ':hardcopy >/path/to/hardcopy.ps' -c quit /path/to/original
关于如何解决此问题有什么想法吗?
答案1
我怀疑这里的问题可能是 Vim 的着色是一种与显示代码集成在一起的 hack。请注意,例如,当您在一个大文件中跳转时,有时着色会出错,因为 Vim 尝试在应用其分层“区域”模式匹配时不处理整个文件。此外,如果您的终端不支持颜色,那么 Vim 将不会打印颜色或生成彩色 HTML,即使这些目标与终端无关。
我曾经尝试将 Vim 变成一个后端,用于在 CGIT 下进行即时语法高亮,以便查看 GIT 存储库中的文件。我尝试了多种方法,试图让 Vim 以批处理模式生成输出,但最终我放弃了。
但是我没有尝试使用像 这样的实用程序expect
。用 编写 Vimexpect
脚本也许可以奏效,只要你也欺骗它,并告诉它正在与彩色 Xterm 对话。
答案2
我发现环境变量TERM
对使用的 PS 输出颜色有影响。
你也许可以尝试这个:
TERM=xterm-256color vim '+hardcopy >out.ps' +q src_file
答案3
这对我有用:
vim -R foo.yaml "+syntax on" "+syntax sync fromstart" "+ha>foo.yaml.ps" "+q"
您缺少的部分是"+syntax sync fromstart"
。如果没有它,vim 实际上不会语法高亮显示任何缓冲区。