我有一个生成 JSON 和 YAML 的命令行程序。默认情况下,它会检测 pygments (pygmentize) 是否可用,如果可用,则通过它传递输出以获得漂亮的彩色输出。但是,默认情况下,该程序将在其上运行的大多数计算机上并未安装 pygments。但是大多数计算机要么有 emacs,要么有 vim,然而,有。有没有办法让这些编辑器之一使用 ANSI 转义序列对某些文本进行语法高亮显示,然后再次输出?
最佳答案
因为编辑器已经可以做 ansi 的东西,所以很容易制作编辑器的屏幕截图,不是吗?
script -qc "stty rows 10000
emacs -nw -visit YOURFILE.YAML -eval '(redisplay t)' -f kill-emacs
resize"
(只有 GNU FSF Emacs 需要重新显示)
现在清理捕获
perl -p0E 's/\A(?s:.*)\e\[27m\r\n
\e\[A\n((?s).*?)
(?:\e\[K\n)+
\e.*\e\[27m\r$(?s:.*)\Z/$1/mx' < typescript
如果您不希望录制过程在屏幕上可见,您可以使用 perl 的 IO::Pty 之类的东西将其包装在一个隐藏的终端中
关于vim - 在命令行程序中使用 emacs 或 vim 的语法荧光笔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408134/