GNU Less 常用设置

 

macOS 可以使用 brew install less 安装最新的 GNU Less.

GNU Less 常用的选项

# set options for less
export LESS='--quit-if-one-screen --ignore-case --status-column --LONG-PROMPT --RAW-CONTROL-CHARS --HILITE-UNREAD --tabs=4 --no-init --window=-4'

# short version
export LESS='-F -i -J -M -R -W -x4 -X -z-4'

~/.bashrc~/.zshrc 中添加下面的设置,可以使 man 命令显示更多色彩

# Set colors for less. Borrowed from https://wiki.archlinux.org/index.php/Color_output_in_console#less
export LESS_TERMCAP_mb=$'\E[1;31m'     # begin bold
export LESS_TERMCAP_md=$'\E[1;36m'     # begin blink
export LESS_TERMCAP_me=$'\E[0m'        # reset bold/blink
export LESS_TERMCAP_so=$'\E[01;44;33m' # begin reverse video
export LESS_TERMCAP_se=$'\E[0m'        # reset reverse video
export LESS_TERMCAP_us=$'\E[1;32m'     # begin underline
export LESS_TERMCAP_ue=$'\E[0m'        # reset underline

Input Preprocessor 和 Input Pipe

less 允许定义一个 输入预处理器 (Input Preprocessor),可以在打开文件之前对文件内容进行预处理。输入预处理器通常是一个可执行文件或 shell 脚本,它将处理过的内容写到一个替换文件并显示给用户,但还是显示原来的文件名,所以用户感觉打开的是原始文件。要定义输入预处理器,需要将调用命令行设置在环境变量 LESSOPEN,如:LESSOPEN="lesspipe.sh %s",参数 %s 在调用时会被替换成要处理的文件名。

也可以让输入预处理器直接将文件内容管道输出给 less,而不是放到替换文件,这种处理方式称为 输入管道 (Input Pipe)。要使用输入管道,需要将 LESSOPEN 环境变量中命令行的第一个字符设置为竖线 (|),如:|LESSOPEN="lesspipe.sh %s",表明输入预处理器现在是一个输入管道。

使用 lesspipe 作为输入预处理器

lesspipe 是最常用的 less 输入预处理器,可以实现以下功能:

  1. 查看压缩包以及压缩包内的单个文件内容
  2. 查看目录
  3. 查看非文本文件,例如word文档
  4. 代码高亮

查看 READMEman lesspipe 来了解 lesspipe.sh 所支持功能的详细信息。

Homebrew 安装

brew install lesspipe

安装后会自动将 lesspipe.shcode2color, tarcolorsxw2xt 链接到 /usr/local/bin/

Github 安装

git clone https://github.com/wofr06/lesspipe.git

cd lesspipe
./configure --yes
cp lesspipe.sh sxw2txt code2color tarcolor /usr/local/bin

# 复制 lesspipe.1 手册页到系统手册页目录
cp lesspipe.1 /usr/local/share/man/man1/
man lesspipe

设置 LESSOPEN 启用输入预处理器

export LESSOPEN="|/usr/local/bin/lesspipe.sh %s"

示例

# 查看 tar 压缩包内容
less lesspipe.tar.gz

# 查看 tar 压缩包内某个文件内容
less lesspipe.tar.gz:lesspipe/README

# 解压 tar 压缩包内某个文件
less lesspipe.tar.gz:lesspipe/README > ./README

# 查看多层压缩包嵌套
less a1.tgz:b2.tgz:README

# 查看目录
less /etc

使用 Pygments 作为输入预处理器

安装 pygments

brew install pygments

# or
pip install pygments
ln -s ~/.pyenv/shims/pygmentize /usr/local/bin/pygmentize

设置 LESSOPEN

export LESSOPEN="|/usr/local/bin/pygmentize -g -O style=solarized-dark %s"

参考文档

Install and Use GNU Command Line Tools on macOS/OS X

Make the less Command More Powerful