终端中的语法高亮

ale*_*xis 50 colors terminal syntax-highlighting

许多面向编程的编辑器都会对源代码进行着色。是否有一个命令可以为在终端中查看的源代码着色?

我可以打开一个文件emacs -nw(它在终端中打开而不是弹出一个新窗口),但我正在寻找类似的东西less(或者可以使用 less -R,它在输入中通过颜色转义序列)。

Sté*_*las 73

highlight支持与以下相同颜色转义序列的终端上xterm

highlight -O xterm256 your-file | less -R
Run Code Online (Sandbox Code Playgroud)

ruby-rouge

rougify your-file | less -R
Run Code Online (Sandbox Code Playgroud)

python-pygments

pygmentize your-file | less -R
Run Code Online (Sandbox Code Playgroud)

使用GNUsource-highlight

source-highlight -f esc256 -i your-file | less -R
Run Code Online (Sandbox Code Playgroud)

您还可以vimmacros/less.sh随附的脚本的帮助下用作寻呼机vim(有关详细信息,请参见:h less内文vim):

在我的系统上:

sh /usr/share/vim/vim74/macros/less.sh your-file
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用任何支持 HTML 输出的语法高亮器,并像GNU一样使用elinksw3m作为寻呼机(或elinks -dump -dump-color-mode 3 | less -R):source-highlight

source-highlight -o STDOUT -i your-file | elinks -dump -dump-color-mode 3 | less -R
Run Code Online (Sandbox Code Playgroud)


ter*_*don 14

为此,我将 GNUsource-highlight与GNU结合使用less -R。将以下行添加到您的 shell 的初始化文件(~/.bashrc例如):

cless(){
 LESSOPEN='| source-highlight --failsafe --out-format=esc256 -o STDOUT -i %s 2>/dev/null ' less -R "$@"
}
Run Code Online (Sandbox Code Playgroud)

这应该根据使用的语言自动为源代码着色,如果不能,它将less直接在其输入上启动。


小智 6

如果您对less更普遍的颜色感兴趣,您可能需要查看lesspipe.sh. 例如,参见http://freecode.com/projects/lesspipe

lesspipe.sh 是 less 的寻呼机的输入过滤器,如 less 的手册页所述。该脚本在与 ksh 兼容的 shell(例如 bash、zsh)下运行,并允许您使用 less 来查看包含二进制内容的文件、压缩文件、存档和存档中包含的文件。

它还可以为 shell 脚本、perl 脚本等着色,类似于文本编辑器,但不使用任何“预处理”程序来进行着色。