Man
使手冊頁變窄並在終端中居中
我有一個寬顯示器,終端全屏打開。我希望將手冊頁縮小到 100 個字元寬,並以螢幕為中心,就像在 emacs Olivetti 模式中一樣:https ://github.com/rnkn/olivetti 。
我怎樣才能做到這一點?
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
將預處理器用作管道:將標準輸入重定向到它並從中讀取標準輸出。