Command line 语法突出显示寻呼机

Command line 语法突出显示寻呼机,command-line,syntax-highlighting,pager,Command Line,Syntax Highlighting,Pager,现在,我使用most作为我的寻呼机。虽然它对man页面有帮助的语法高亮显示,但对其他任何页面都没有彩色语法高亮显示(我特别寻找diff/C++) 同时,pygments是一个很棒的程序。我可以轻松地使用它进行彩色输出: # ./pygmentize -f console256 ${file} hg diff | ./pygmentize -f console256 -l diff 现在,我希望能够分页输出,所以我只使用: # ./pygmentize -f console256 ${file}

现在,我使用
most
作为我的寻呼机。虽然它对
man
页面有帮助的语法高亮显示,但对其他任何页面都没有彩色语法高亮显示(我特别寻找diff/C++)

同时,
pygments
是一个很棒的程序。我可以轻松地使用它进行彩色输出:

# ./pygmentize -f console256 ${file}
hg diff | ./pygmentize -f console256 -l diff
现在,我希望能够分页输出,所以我只使用:

# ./pygmentize -f console256 ${file} | most
hg diff | ./pygmentize -f console256 -l diff | most
此时,大多数人会将所有着色控制字符转储到我的屏幕上,如下所示:

^[[38;5;28;01mclass^[[39;00m ^[[38;5;21;01mheap_allocator^[[39;00m
{
^[[38;5;28;01mpublic^[[39;00m^[[38;5;241m:^[[39m
当然,这是不可读的。我查看了
man
页面中的
most
,但找不到任何“嘿,把那些控制字符显示为颜色而不是打印它们”选项
less
具有与大多数
most
相同的垃圾行为,但是
more
显示的颜色非常精细,明显的限制是
more


有没有一个寻呼机支持语法高亮显示,或者一些参数和程序的疯狂组合,我可以串在一起让它工作?最后,我想突出显示Mercurial中的差异和日志,因此可能有一个快捷方式…

您可以尝试使用jed。是的,它是一个文本编辑器,不是寻呼机,但它非常轻量级,默认安装包含适用于各种文件类型和语言的优秀配色方案。

less-R
按原样显示ANSI颜色序列(而不是扩展为插入符号)。这将使语法突出显示工作


您还可以创建一个环境变量
LESS=-R
,使其成为默认行为。其他选择也是如此;请参见
manless

Jed具有针对不同语言的语法突出显示模式,类似于emacs语言。例如,如果将一个C程序传送到它,可以通过按“ESC”,然后按“x”,然后键入“C-mode”来打开高亮显示。如果是php程序-将最后一部分更改为“php模式”,依此类推……

我可以建议
vimpager

首先,最近的
vim
发行版(我相信6.0及以上版本)附带了一个寻呼机式的模式脚本。它非常简单且功能强大,其操作与
less
类似。尝试:
vim'+帮助减少'+仅限

然而,更好的是,Rafael Kitover编写了一个更加健壮和强大的脚本,名为
vimpager
。它是可用的(或可用的)。如果您使用的是OS X并使用自制软件,则只需
brew安装vimpager

此时,您可以简单地
设置$PAGER=vimpager
,甚至
alias less=vimpager
。它工作得很好

寻找

bat
支持大量编程和标记语言的语法突出显示

它不是寻呼机,但如果需要,它会自动将输出重定向到
less


Nice-jed支持管道进入缓冲区(vim和常规EMAC不支持)。如何在jed中打开语法高亮显示?如果我
jed${FILE}
,高亮显示会起作用,但当我
cat${FILE}|jed
时,高亮显示不会起作用,我认为这是不可能的。这实际上是一个非常困难的问题,因为在许多语言中,编写语法上有效的简短程序是相当简单的。与大多数编辑器一样,模式检测仅基于文件扩展名。最简单的方法可能是将stdout通过管道传输到一个具有适当扩展名的文件中。一旦程序已经启动,打开语法高亮显示的命令序列是什么?我对emacs衍生品不太熟悉,实际上也不太清楚。我已经有一段时间没真正用过了。做一个
info-jed
会带来相当广泛的文档。请不要仅仅发布一些工具或库作为答案。至少在答案中说明。@zoethertransgirl
batfilename