语法高亮/着色猫

Lel*_*uge 186 unix color-scheme syntax-highlighting

有没有上色的输出的方法cat,该方法grep一样.

因为grep,在大多数控制台中,它会显示一个彩色输出,突出显示搜索到的关键字.否则,您可以通过调用来强制它grep --color 是否有一种通用方法根据您的个人选择为任何程序的输出着色.

据我所知,程序本身不对颜色负责.这是壳.

我在FreeBSD 5.2.1中使用默认的shell,看起来它自从epoch以来从未见过颜色.

bue*_*rgi 385

我建议pygmentize从python包python-pygments.您可能希望定义以下方便的别名(除非您使用ccatccrypt包).

alias ccat='pygmentize -g'
Run Code Online (Sandbox Code Playgroud)

语法使用pygmentize突出显示cat输出

如果你想要行号:

alias ccat='pygmentize -g -O style=colorful,linenos=1'
Run Code Online (Sandbox Code Playgroud)

  • 这应该是恕我直言的答案.除此之外,我将其别称为"alias dog ='pygmentize -g'`,因为狗比猫还要酷! (88认同)
  • 另一个解决方案是使用linux [`highlight`](http://linux.die.net/man/1/highlight)命令.`alias ccat ='highlight -O ansi'` (19认同)
  • 这正是我所寻找的,欢呼 (15认同)
  • 你可以添加更少的-R来使代码可滚动:`#!/ bin/bash \n pygmentize -g $ 1 | 少-R` (7认同)
  • 我打电话给我的别名`nyancat`. (3认同)
  • pygmentize按预期工作,但不幸的是似乎相当缓慢.: - / (2认同)

Shu*_*ary 107

选项:

pygmentize是好的.我有一个别名:

alias c='pygmentize -g'
Run Code Online (Sandbox Code Playgroud)

突出显示是另一个广泛可用的选择

alias cats='highlight -O ansi --force'
Run Code Online (Sandbox Code Playgroud)

安装:

您可能需要安装pygments使用:

sudo pip install pygments
sudo easy_install Pygments #for Mac user
Run Code Online (Sandbox Code Playgroud)

以及highlight适用于所有发行版的包装

sudo apt-get install highlight
sudo yum install highlight
Run Code Online (Sandbox Code Playgroud)

在行动:

我正在为下面的两个镜头添加镜头,以便在突出显示中进行比较

这是pygmentize在行动: Pygmentize在python文件上突出显示

这是highlight: 突出显示python文件上的突出显示

  • "highlight"非常适合我的需求,并且很容易安装,谢谢.如果你想查看没有扩展名的文件(例如.bash_aliases),那么除了`-O ansi`之外还要添加`--syntax = bash`来强制它. (4认同)
  • `highlight` 比那个 python 程序快 34 倍。古典语言的力量是强大的。 (3认同)
  • 对于`highlight`,您想在别名中添加`--force`,否则它将为它无法理解的文件格式引发错误,而作为`cat`替代品,您希望它仍然显示输出而不突出显示,这就是“ --force”的作用。一起:`alias cat =“ highlight -O ansi --force”` (2认同)
  • @Luke这就是为什么你应该添加 `-O ansi` 默认是输出 html :-) (2认同)
  • 如果您的终端支持,`-O xterm256` 提供比 `-O ansi` 更多的颜色 (2认同)

dan*_*gom 44

从2018年4月下旬开始:

Bat - 具有语法高亮和Git集成的cat(1)克隆.

该项目是一个猫克隆,支持用Rust编写的颜色和自定义.它不仅提供具有多个主题的语法突出显示,还提供Git集成.如文档中所述:

蝙蝠试图实现以下目标:

  • 提供美观,高级的语法高亮
  • 与Git集成以显示文件修改
  • 是(POSIX)猫的直接替代品
  • 提供用户友好的命令行界面

不用说,它比pygmentize快得多,并且在面对大文件时不会窒息.

可以在Github存储库中找到源代码和二进制版本 + 安装说明,以及与替代程序比较.

  • 人们忘记提及的是,默认情况下,“ bat”处于互动模式。为了使其表现得更像“猫”,请将其与-pp参数一起使用。诸如“ alias cat =“ bat -pp”```之类的别名正是人们想要的东西。 (3认同)
  • 蝙蝠是我这周见过的最酷的东西。这太棒了,谢谢! (3认同)
  • 我之前一直使用 pygmentize 为 cat 着色,但使用 bat 的解决方案更适合大文件(几 MB 的日志),其中 pygmentize 性能较差。 (2认同)

mfr*_*man 31

您正在寻找的工具可能是supercat(这是Linux Journal发布的快速介绍).

我意识到这个答案很晚,并且它不能完全满足OP的要求.所以我只是为了参考而添加它(对于寻找如何着色文本文件输出的其他人来说,这可能很有用).


Soe*_*ner 30

vimcat 是单文件(shell脚本),效果很好:

http://www.vim.org/scripts/script.php?script_id=4325

最后更新时间是2013年12月.提示:您可以强制执行文件类型识别vimcat -c "set ft=<type>".

  • 关于vimcat(或vimpager)非常好的一件事是它会尊重你在`〜/ .vimrc`中定义的colorscheme,因此语法高亮在想要编辑(vim)或打印时都是相同的(vimcat) ).请注意,可以在[vimpager repositiory](https://github.com/rkitover/vimpager/blob/master/vimcat)中找到vimcat的更新版本. (11认同)
  • 在我的快速不科学的测试中,`vimcat`(1~2 秒执行时间)比 `pymentize`(~200ms)慢很多,比 `highlight`(~20ms)慢很多,后者比 `cat` 慢很多(~2 毫秒)。另一方面,`vimcat` 处理更多的文件类型并且比 `hightlight` 和 `pygmentize` 更准确,并且它仍然比先用 `vim` 然后再用 `:q` 快。所以它赢得了我对这个特定任务的选择。 (2认同)

Cos*_*atu 20

cat语法突出显示只是超出范围.cat不是为了这个.如果您只想让某些文件的整个内容以某种方式着色(整个文件的颜色相同),您可以使用终端转义序列来控制颜色.

这是一个示例脚本,它将根据文件类型选择颜色(您可以使用类似的东西而不是cat直接调用):

#!/bin/bash
fileType="$(file "$1" | grep -o 'text')"
if [ "$fileType" == 'text' ]; then
    echo -en "\033[1m"
else
    echo -en "\033[31m"
fi
cat $1
echo -en "\033[0m"
Run Code Online (Sandbox Code Playgroud)

上面(在支持那些转义序列的终端上)将任何文本文件打印为"粗体",并将任何二进制文件打印为红色.您可以使用strings而不是cat打印二进制文件,并且可以增强逻辑以使其适合您的需要.

  • "猫不是故意的." Cat不是用于将单个文件写入stdout的 - 它用于连接.但这并不意味着将单个文件写入stdout是没有用的.这并不意味着突出它们是没用的. (8认同)

ccp*_*zza 20

有一个彩色版本的cat - ccat.从https://github.com/jingweno/ccat/获取.

在Linux/Windows/macOS上安装

它是一个单独的可执行文件,因此要安装它,您可以从https://github.com/jingweno/ccat/releases解压缩操作系统的二进制版本,并将ccat二进制文件复制到/usr/local/bin.

如果你想避免二进制文件,或者你的平台没有二进制文件(例如raspberry pi等),那么你可以从源代码编译,因为你有一个可用的go开发环境(apt install golang在基于debian的linuxes或brew install golangmac上):

go get -u github.com/jingweno/ccat
Run Code Online (Sandbox Code Playgroud)

ccat二进制文件将根据你的创建$GOPATH/bin.

通过自制软件在Mac上安装

brew install ccat
Run Code Online (Sandbox Code Playgroud)

别名来 cat

cat使用ccatadd in 替换常规~/.bashrc:

alias cat="ccat $*"
alias cat0="/bin/cat $*" # for cases when you need plain `cat`
Run Code Online (Sandbox Code Playgroud)

ccatGo中实现,因此它是一个本机二进制文件,其运行速度比基于Python的解决方案快得多,例如pygments,后面的模块pygmentize; 我没有看到cat和之间有任何明显的速度差异ccat.

  • 目前,似乎'brew install ccat`就够了,不再需要`brew tap`了. (2认同)

Has*_*tur 11

source-highlight

也许有可能source-highlight 在GNU下找到有趣的发布:一个不同的包highlight.

摘录自apt-cache show source-highlight:

Description-en:将源代码转换为语法高亮显示的文档.
在给定源文件的情况下,该程序生成具有语法突出显示的文档.
它支持超过100种文件格式的语法高亮 ...
对于输出,支持以下格式:HTML,XHTML,LaTeX,Texinfo,ANSI颜色转义序列和DocBook

我做了一些别名(Cat和PCat,见下文),这是他们的输出

屏幕示例

你可以在Debian上安装

sudo apt-get install source-highlight
Run Code Online (Sandbox Code Playgroud)

并将其添加为别名,例如在您.bash_aliases的下面的行中.

alias Cat='source-highlight --out-format=esc -o STDOUT -i'  
Cat myfile.c # or myfile.xml ...
Run Code Online (Sandbox Code Playgroud)

或者你可以做一个类似的别名(没有-i最后有可能管道)

alias PCat='source-highlight --out-format=esc -o STDOUT '
tail myfile.sh | PCat     # Note the absence of the `-i`
Run Code Online (Sandbox Code Playgroud)

其中,它可能从中读取数据的选项man source-highlight-s这是可能的选择下划线,或,高亮通过命令行或离开该程序这个义务:

-s, - src-lang = STRING源语言(使用--lang-list获取完整列表). 如果未指定,将从文件扩展名中猜出源语言.

--lang-list列出所有支持的语言和相关的语言定义文件


Ama*_*nut 11

如果你的机器中有vim,最好的方法和最简单的方法是使用程序vimcat附带的vimpager.

  1. 安装vimpage git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
  2. 运行vimcat:

    vimcat index.html


Ash*_*Jha 8

据我所知,二进制本身不负责颜色.这是壳.

那不对.终端只解释输出到终端的颜色代码.根据其功能,它可以忽略某些格式/着色代码.

从手册页看起来似乎没有猫支持着色其输出.即使它支持像grep这样的着色它应该在文本文件中着色吗?语法突出显示基础语言所需的知识,这不是像cat这样的简单实用程序的范围.

如果看到突出显示的代码是您的目标,您可以在unix平台上尝试更强大的编辑器,如vim,emacs,gedit等.

  • "'cat`不是打印文件与行号,它不是为压缩多个空行,它不是看非打印的ASCII字符,它是串联的文件." - 摘自[UNIX风格,或猫 - v认为有害](http://harmful.cat-v.org/cat-v). (3认同)

joo*_*ost 7

在OSX上简单地做brew install ccat.

https://github.com/jingweno/ccat.像cat一样,但显示带语法高亮的内容.内置Go.


Sai*_*olu 5

蝙蝠精确地做到了这一点,可以别名猫alias cat='bat'