Vim 在终端上打印文件并退出

Vim 在终端上打印文件并退出

我希望 vim 这样做,以便在 vim 中设置语法突出显示(或不需要额外的工具)。因此,如果要使用,cat file | <some_sh_tool>我会使用vim +"some_opts" +"..." +q file.问题是 vim 在退出时恢复以前的屏幕,但使用一些远程访问工具并没有发生这种情况,所以它基本上像带有语法突出显示的 cat 一样工作。

那么,这可能吗?

编辑

进一步思考这一点,我认为这是一件很棒的事情。除了语法突出显示之外,在显示文件内容时还可以使用 vim 的其他功能,例如行号、空格、换行等等……尤其是在脚本中,因为 vim 无所不在。

答案1

您可以通过告知为此终端启用备用屏幕的代码是空字符串来禁用备用屏幕,例如:

vim --cmd 'set t_ti= t_te=' ...

但你会发现你需要更多。尝试:

vim --cmd 'set t_ti= t_te=' +redraw +q file

作为一个开始。

答案2

我在一个名为的包中找到了我所需要的东西维姆帕格

它附带 vimcat 实用程序。

答案3

您可能想看一下enscript- 它具有多种语言的语法突出显示样式,旨在用作过滤器,并且输出不仅限于 ANSI 转义格式序列 - 它还可以输出 PostScript、HTML 或 RTF。

答案4

我找到了对我有用的东西:

假设我想使用所有 vim 设置将文件“file.py”的内容打印到 STDOUT。我可以这样写:

vim --not-a-term -T ansi +silent\ %print +redraw +quit file.py

它并不短,但很有效。如果您想通过“less”进行管道传输,我建议使用-R带有 的开关less,如下所示:

vim --not-a-term -T ansi +silent\ %print +redraw +quit file.py | less -R

(如果文本显示的间距奇怪,您可能需要调整终端大小。)

如果您想添加其他设置/命令,请将它们添加到-T ansi+silent\ %print参数之间。例如,如果您想运行:set list,请像这样执行:

vim --not-a-term -T ansi +set\ list +silent\ %print +redraw +quit file.py

或者:

vim --not-a-term -T ansi "+set list" +silent\ %print +redraw +quit file.py

(请记住,因为“set list”包含空格,所以您必须转义空格,或者将“+set list”命令放在引号中。)

相关内容