终端技巧

以下是一些在终端上充分利用 Pygments 的技巧。

如何确定我正在使用的 Shell?

运行以下命令

$ echo $SHELL

我的输出为 /usr/bin/fish,这是可执行文件的路径。这意味着我的计算机正在使用 fish shell。 neofetch(或类似工具)也可以提供此信息。

大多数 Shell 符合 POSIX 标准。

别名 (POSIX)

符合 POSIX 标准的 Shell 包括 bashzsh,以及大多数 Shell。

别名允许您使用不同的名称调用函数。在本例中,它使用不同的名称调用 pygmentize。最简单的做法是创建一个名为 cath 的别名

$ alias cath="pygmentize"

唯一的问题是 pygmentize 的工作方式并不完全像 cat。它确实允许您使用类似于 cat 的命令来显示文件。

可以根据需要添加其他标志。monokai 样式非常适合深色背景,因此您可以添加此选项

$ alias cath="pygmentize -O style=monokai"

这是一个具有语法高亮的 less 版本。它稍微复杂一些,因为它使用环境变量 LESSOPEN 来预处理输入文件。

$ alias lessh='LESSOPEN="| pygmentize -O style=monokai %s" less -M -R '

这些别名命令需要添加到您的配置中,以便在您打开新终端(或重新启动计算机)时生效。

将上述命令添加到您的配置文件中

  • bash - 编辑 ~/.bash_aliases(如果存在)或 ~/.bashrc 文件。

  • csh (C shell),编辑 ~/.cshrc 文件

  • ksh (Korn shell),编辑 ~/.kshrc 文件。

  • tcsh,编辑 ~/.tcshrc 文件。

  • zsh,编辑 ~/.zshrc 文件。

为了将更改应用于当前的 Shell 环境系统:对刚刚编辑的文件名运行 source

$ source [~/.filenamerc]

别名 (fish shell)

上述 POSIX 别名可以正常工作,但在 fish shell 中永久保存别名略有不同。函数用于创建永久别名。 funced [command] 用于创建函数,之后 funcsave [command] 将函数保存到环境中。

运行 funced cath 会打开默认编辑器,并在函数中添加以下代码

function cath
        # 'cath' alias will highlight source code as cat does.
        alias cath="pygmentize"
end

这是带有额外参数的 cath 函数的样子

function cath
        alias cath="pygmentize -O style=monokai"
end

注意:与 POSIX shell 一样,您可以在命令行上运行 alias cath="pygmentize -O style=monokai" 来提前测试别名。

测试 cath 函数。要保存函数,请运行 funcsave cath。这将保存函数以供将来使用。

funced lessh,它稍微复杂一些,因为它使用环境变量 LESSOPEN 来预处理输入文件。

function lessh
        LESSOPEN="| pygmentize -O style=native %s" less -M -R $argv
end

测试 lessh 函数。要保存函数,请运行 funcsave lessh