ワイドモニターがあり、端末がフルスクリーンで開きます。私はマニュアルページをemacs Olivettiモードのように100文字に縮小し、画面の中央に配置したいと思います。https://github.com/rnkn/olivetti。
どうすればいいですか?
答え1
man
次のように動作します。
groff
nroffマークアップ言語のマニュアルページソースファイルを印刷可能なテキストに変換するために使用されます。- 次に、
groff
出力をポケットベルに渡してユーザーに表示します。デフォルトのポケットベルですless
。
groff
man
使用する幅でページ形式を指定します。デフォルトでは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
。標準入力をパイプにリダイレクトし、標準出力を読み込みます。