Torne as páginas do manual estreitas e centralizadas no terminal

1

Eu tenho um monitor grande e o terminal aberto em tela cheia. Quero que as páginas de manual sejam reduzidas para, digamos, 100 caracteres de largura e centralizadas na tela, como no modo eivs olivetti: link .

Como posso fazer isso?

    
por krvkir 27.10.2018 / 14:40

1 resposta

2

man funciona da seguinte maneira:

  1. usa groff para converter arquivos de origem de páginas de manual da linguagem de marcação nroff para texto imprimível;
  2. então passa groff output para um pager que mostra para o usuário. O pager padrão é less .

groff formata a página para a largura man diz para usar. Por padrão, man usa a largura total do console, mas podemos substituí-lo usando a variável de ambiente MANWIDTH :

export MANWIDTH=100

Não encontrei nenhuma maneira de instruir groff sobre um recuo, mas, felizmente, há o less facility chamado pré-processador de entrada ( man less para os detalhes). Pode-se fornecer um comando para passar less input. Então eu escrevi um script que recua cada linha da entrada:

$ 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 recebe o comando do pré-processador de entrada da variável de ambiente $LESSOPEN :

export LESSOPEN="|- olivetti %s"

|- é instruir less para usar o pré-processador como um canal: redirecionar a entrada padrão para ele e ler a saída padrão dele.

    
por 27.10.2018 / 14:41

Tags