如果我想输出带有语法高亮的 C 源代码文件,我可以使用吗cat
?
答案1
GNU 软件包,源突出显示,似乎可以解决问题(尽管没有使用 cat —— 正如 John T 指出的那样,这在 cat 上是不可能的)。它可以通过 Ubuntu 上的 apt-get 获得,并且需要 Boost regex 库。检查您的包管理器以查看两者是否可用,否则您可以从网上获取它们。我认为之前链接的 GNU 页面有一个指向 Boost 的链接。
安装后,我在路径中创建了一个名为的新脚本催化裂化装置.脚本如下:
#!/bin/bash
src-hilite-lesspipe.sh $1
没什么特别的,只是简化了较少的它们包含带有 source-highlight 的脚本。当以这种方式调用时,它的行为与 cat 一样。
不过,附带的 less 脚本也很好用。我刚刚将以下内容添加到.bashrc:
export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '
该脚本也包含在 source-highlight 的在线手册中。
我想,如果您想完全忽略 cat,您可以使用别名 cat 来调用 src-hilite-lesspipe.sh $1,但这可能并不可取。
答案2
为了输出类似语法高亮的代码cat
,我ccat
按照以下说明创建了一个命令http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/。
#!/bin/bash
if [ ! -t 0 ];then
file=/dev/stdin
elif [ -f $1 ];then
file=$1
else
echo "Usage: $0 code.c"
echo "or e.g. head code.c|$0"
exit 1
fi
pygmentize -f terminal -g $file
为了输出类似语法高亮的代码less
,我使用 vim 来代替 less。
alias less='/usr/share/vim/vim72/macros/less.sh'
答案3
为了解决这个问题,我使用了强调。我创建了一个函数,尝试使用语法高亮打印文件,如果失败,它会返回到仅使用 cat 打印文件。您可以将语法高亮主题更改为您想要的任何主题。
function hl { # Overrides the cat command to use syntax highlighting
# Highlight with 'moria' theme to terminal, and suppress errors
highlight $1 -s moria -O xterm256 2> /dev/null
if (($? != 0)); then # If the command had errors
cat $1 # Just cat the file out instead
fi
}
如果你使用的是 Mac 并且使用 Homebrew(强烈推荐!),则可以通过运行来安装 highlight brew install highlight
。否则,它应该在大多数其他包管理器上可用,并且可以下载这里。
我还制作了一个函数,将带有语法高亮显示的文件打印为 html,并在浏览器中打开它进行打印(依赖于open
OS X 上的命令):
function hlprint {
# Print with line numbers and 'moria' theme
highlight $1 -l -o print.html -s moria
open print.html # Open in browser
sleep 5 # Give the browser time to open
rm print.html highlight.css # Remove output files
}
享受!
答案4
不,cat 没有语法高亮功能。如果您想使用语法高亮查看源代码,请将其放入 vim 或您选择的编辑器(具有语法高亮功能)。这样,如果文件很长,您甚至可以使用Ctrl+ F(向前)和Ctrl+ B(向后)翻页查看输出。