使手册页变窄并在终端中居中

使手册页变窄并在终端中居中

我有一个宽显示器,终端以全屏打开。我希望手册页缩小到 100 个字符宽,并在屏幕上居中,就像在 emacs olivetti 模式中一样:https://github.com/rnkn/olivetti

我怎样才能做到这一点?

答案1

man按以下方式工作:

  1. 它用于groff将手册页源文件从 nroff 标记语言转换为可打印文本;
  2. 然后它将groff输出传递给寻呼机,寻呼机将其显示给用户。默认寻呼机是less.

groffman将页面格式设置为要使用的宽度。默认情况下man使用控制台的完整宽度,但我们可以使用MANWIDTH环境变量覆盖它:

export MANWIDTH=100

我找不到方法来指导groff缩进,但幸运的是有less一个名为输入预处理器man less了解详情)。人们可以提供一个命令来传递less输入。所以我写了一个脚本来缩进输入的每一行:

$ cat $HOME/bin/olivetti
#!/bin/sh
# Define desired width of the text.
WIDTH=100
# Evaluate left indentation based on terminal width.
INDENT=$(( ( $(tput cols) - $WIDTH ) / 2 ))
# Make line of that amount of spaces.
INDENT_LINE=$( printf %${INDENT}s )
# Put it on the beginning of each line of the input file.
sed "s/^/${INDENT_LINE}/" -

less$LESSOPEN从环境变量中获取输入预处理器的命令:

export LESSOPEN="|- olivetti %s"

|-是指示less将预处理器用作管道:将标准输入重定向到它并从中读取标准输出。

相关内容