
Um recurso dos buffers do emacs (mesmo ansi-term
, shell
e eshell
) que eu realmente gosto é a capacidade de C-l
"centralizar" a linha atual no terminal para que a metade superior da tela ainda contenha parte da saída anterior.
Parece que um terminal padrão (não tenho certeza qual é o nome do padrão) moverá a linha atual para o topo da janela quando C-l
for pressionado. Existe uma maneira geral de mover a linha atual para o centro da tela? Caso contrário, existe uma maneira de fazer isso especificamente para iterm2, terminal ou algum emulador de terminal que foi portado para o OS X?
Responder1
A maioria dos emuladores de terminal pode "fazer" isso, mas dá algum trabalho:
- Suponha que a linha que você deseja mover esteja na parte inferior da tela.
- Se você quiser mover essa linha para cima, você rolaria (ou "indexaria") a linha enviando uma sequência de escape para a linha inferior e (contando!) Moveria a linha para cima pelo número de linhas que deseja rolar.
- A rolagem move todas as linhas da tela. Você pode limitar o número de linhas movidas definindo uma região de rolagem. Ao fazer isso, você pode evitar que as linhas na metade superior da tela desapareçam. Mas as linhas entre a posição original da sua linha e seu objetivo desaparecerão.
Isso apenas move a linha para cima. Você pode mover uma linha para baixo, da mesma forma, usando a "indexação reversa". A propósito, essas operações não estão nopadrãoECMA-48, mas são parecidos com xterm (baseado em DEC vt100). ansi-term
suporta rolagem/indexação.
Finalmente, isso é apenas para cima ou para baixo. Para mover uma linha para a esquerda/direita, você enviaria sequências de escape para inserir ou excluir caracteres enquanto o cursor estivesse no início da linha.
Essas sequências de escape estão documentadas na terminfo(5)
página de manual. Eu mencionei estes:
csr
(definir região de rolagem)
ind
(índice)
rin
(índice reverso)
cup
(posição do cursor)
ich
(inserir caractere)
dch
(excluir caractere)
Leitura adicional: