Existe alguma maneira de fazer o less
programa repetir a primeira linha (ou as primeiras 2 linhas) em todas as páginas exibidas?
Existe algum outro programa de pager que possa fazer isso?
Esta seria uma killer-app para o banco de dados de mesa de navegação, pense mysql
ou psql
ou gqlplus
...
Para aqueles que não entendem a idéia, veja a captura de tela na parte inferior desta página . Eu quero repetir a linha do cabeçalho + barra ascii horizontal.
command-line
less
pager
filiprem
fonte
fonte
Respostas:
Existe uma solução usando o Vim.
Primeiro, precisamos de uma macro do Vim, que fará a maior parte do trabalho, salve-a em
~/.vim/plugin/less.vim
:Segundo, para emular um pager, preciso invocar o vim para que ele:
Coloquei isso como um script auxiliar em
~/bin/vimpager
:Terceiro, preciso substituir a variável de ambiente $ PAGER, mas apenas para o psql (adicione isso ao meu
~/.bash_aliases
):fonte
Você já experimentou o modo SQL no Emacs / XEmacs?
Certamente não é tão simples de usar quanto
more
ouless
, mas faz o que você pede, deixando uma linha de cabeçalho enquanto rola os resultados na vertical e na horizontal.fonte
Isso empresta muito da resposta aceita, mas acrescenta ...
NULL
Verdadeiro / Falso (e T / F, S / N, Sim / Não)Algumas partes podem precisar ser ajustadas para sua saída específica, pois eu não uso
psql
. Também tenho funções auxiliares ligeiramente diferentes para meus propósitos, mas elas são semelhantes às da resposta aceita.Entrada de amostra
Código
fonte
Você pode usar várias 'regiões' em
screen
:Então você só precisa definir a variável de ambiente $ FILE:
fonte
fit
comando de tela). Eu tinha pensado que você não queria que o topo rolasse. Quando eu testei sozinho, ambas as janelas rolam como deveriam. A parte superior rola duas linhas (1-2, 3-4, 5-6 etc.) e a parte inferior rola conforme necessário. Qual é o comportamento que você está vendo /Você pode adicionar um número antes do 'encaminhamento' e ele rolará N linhas, e não um comprimento total. Portanto, se a janela do seu terminal tiver 40 linhas, digite
38f
para começar a rolar apenas 38 linhas, deixando as 2 últimas na última 'página'. Na página de manual:fonte
screen
outmux
para criar dois painéis, redimensione a primeira para duas linhas (resize 2
) e executeless
, no segundo painel, executeless
normalmente. Você pode configurá-lo como um script com um arquivo .screenrc específico. Veja resposta alternativa.