Digitei acidentalmente ctrl+ Lno terminal e minha janela do terminal saltou para um tamanho de "tela cheia". Eu olhei para os atalhos de teclado em "Editar" -> "Atalhos de teclado" e não encontrei esse atalho.
O que ctrl+ Lfaz e onde é definido?
command-line
shortcut-keys
Parto
fonte
fonte
clear
, porque não apagar seu histórico de terminal, enquanto o comandoclear
faz, a menos que você adicione o-x
argumento, assim:clear -x
.Se o shell que você está usando não estiver interceptando, você está digitando um caractere "Form-feed" no seu terminal. Se o aplicativo do terminal não interceptar ou usar o pressionamento de tecla de alguma maneira, Ctrl+ Letter será traduzida para o código ASCII da letra menos 64 (1). 65 é o código ASCII de 'A', 'L' é a 12ª letra -> código 76. Se o shell não souber o que fazer com o código, ele o imprimirá.
A impressão de um char FF resultou em uma nova página em uma impressora de linha e uma tela nítida no terminal (sim, eu usei um VT-52 naquela época, a 300 baud).
Então Ctrl+ Lé 12, que é FF. Da mesma forma, Ctrl+ Ié uma TAB e Ctrl+ Gtoca a campainha --- se o terminal ou o shell não a interceptar, como Ctrl+ Cpor exemplo.
Comunicação da outra resposta: parece que o bash fazer interceptação CTRL- Le fazer um
clear
. Bom toque que osbash
autores associaram a chave a um comando que fará mais ou menos o mesmo que o código ASCII fazia nos terminais antigos!Por outro lado, na minha
zsh
combinação CTRL- Ifunciona como TABe CTRL- Hcomo um Backspace(2).Antigo e agradável ASCII ... (observe que a letra L está na coluna 4, linha 12, tem o código ASCII 4 * 16 + 12 = 76).
Imagem original aqui , do artigo da wikipedia sobre ASCII .
Notas de rodapé:
(1) Ctrlrealmente usado para limpar o bit 7.
(2) esta é a fonte da piada "falha ao remover a palavra" que você encontra em algum momento como, por exemplo, "essa foi uma péssima idéia ... H ^ H ^ não é uma idéia tão boa" ... (normalmente uma palavra mais forte do que ruim!)
fonte
^H
s ou s literais^W
é bom quando você não pode usar rasuras. :)Control-L
é interceptado e interpretado pelo bash (na verdade pelareadline
biblioteca , que lida com a edição interativa na linha de comando). Está vinculado àclear-screen
função, como escreveu @souravc.Nota sobre o significado de
Control-L
: Ele é definido como Alimentação de formulário na tabela de caracteres ASCII, mas isso não significa nada, a menos que algum programa o interprete adequadamente. O terminal não limpa a tela quando vê um feed de formulário, como você pode verificar salvando um ^ L em um arquivo e imprimindo-o comcat
. Quandobash/readline
vê o^L
, ele executa aclear-screen
função. Isso envia uma sequência de caracteres que é entendida pelo emulador de terminal (conforme descrito por termcap ou terminfo) e tem o efeito de limpar a tela.Em impressoras muito antigas, a
^L
adiantaria o início do papel na próxima folha, daí o nome "alimentação de formulário". Porém, terminais modernos e emuladores de terminal seguem um padrão ANSI mais recente, no qual os comandos de controle são "códigos de escape" de vários caracteres que começam com^[
(escape). Quando o bash vê o seu^L
, provavelmente está enviando a sequência de dois comandosESC [ H ESC [ J
, que se move para o canto superior esquerdo da tela e limpa tudo abaixo dela (daí a tela inteira).fonte
ESC [ ESC [ J
também limpa o histórico de comandos, enquanto aCTRL + L
sequência não. A seqüência enviada para o terminal é um poucoESC [ H ESC [ 2 J
, vá em frente uma experimentar por si mesmo com este comando:printf "\033[H\033[2J"
.Como todos já explicaram muito bem o que é Ctrl+ Lfaz, mas ninguém explicou como "reverter" o comando, aqui estão alguns comandos que você pode digitar para voltar ao que estava fazendo:
lhe dará os últimos 20 comandos digitados.
fornecerá as últimas 20 linhas de saída de qualquer instalação de pacote que você estava executando
fonte