マニュアルページをより狭くして端末の中央に配置

マニュアルページをより狭くして端末の中央に配置

ワイドモニターがあり、端末がフルスクリーンで開きます。私はマニュアルページをemacs Olivettiモードのように100文字に縮小し、画面の中央に配置したいと思います。https://github.com/rnkn/olivetti

どうすればいいですか?

答え1

man次のように動作します。

  1. groffnroffマークアップ言語のマニュアルページソースファイルを印刷可能なテキストに変換するために使用されます。
  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。標準入力をパイプにリダイレクトし、標準出力を読み込みます。

関連情報