Tela Bash vs. Gnu: Substitua Ctrl-A por Ctrl-Shift-A

43

Sou um novo usuário para o GNU Screen. Eu tenho usado o Bash por um longo tempo, e eu quero testar o GNU Screen.

Como você sabe, o GNU Screen usa 'C-a' (Control-A) como o caractere de comando. O problema é que isso interfere com o recurso de Edição de Linha no Bash (e no GNU Readline), porque o Controle-A no Bash se moverá para o início da linha. "

Sei que posso definir o Caractere de Comando para outra sequência de teclas , como "^ Q" ou "''" (Backtick), mas tenho dificuldade em encontrar outra sequência de teclas que ainda não esteja em uso (^ Q é usado pelo terminal, o backtick é usado ao escrever scripts de shell). Parece que o caractere de comando pode ter apenas um ou dois caracteres de comprimento. Posso definir o caractere de controle da tela do GNU como algo como "Control-Shift-A"?

(Eu não posso usar mais de um hiperlink ainda, então eu não posso linkar para a documentação do Bash)

    
por Stefan Lasiewski 18.05.2010 / 22:56

6 respostas

18

O problema com Controle - Deslocamento - A é que a maioria dos programas de emulação de terminal não enviam um código diferente daquele enviado por Controle - A , então não haveria nenhuma maneira de tela dizer a diferença.

Você pode usar C-q se você usa stty -ixon para desabilitar o “controle de fluxo de software” no tty. Eu costumo fazer isso para que eu possa usar C-s para pesquisar na linha de comando.

Você pode considerar C- ^, já que parece ser geralmente não ligado. Ele é Controle - Shift - 6 nos layouts de teclado dos EUA, mas pode ser difícil digitar em outros layouts.

A maioria das pessoas nunca usa o caractere de controle tty C- \ para enviar SIGQUIT. Para usá-lo, desative a funcionalidade tty com stty quit undef e vincule-a como sua chave de prefixo. Isto é um pouco arriscado, já que se você pressionar C- \ em um tty onde a tecla quit não foi desativada com stty , você pode matar o processo de primeiro plano em vez de ativar tela .

Eu mudei para o tmux há um tempo atrás. Seu padrão é Cb porque foi desenvolvido em tela e não interferiu no padrão da tela . Eu descobri que o C-b funciona razoavelmente bem para mim (eu costumo usar as teclas de seta para o movimento de um único caractere na linha de comando do shell - embora eu use M-b e M-f para mover por palavras).

Por acaso, o autor do tmux usa o Ca em suas sessões principais e sempre digita Ca duas vezes (seja em uma sessão tmux ou não). Se você está disposto a adotar este hábito, parece um compromisso decente, já que o segundo C-a deve ser um não-operativo na maioria dos contextos de edição semelhantes ao Emacs. Não funcionaria assim se você freqüentemente usa programas / contextos fora da tela onde o segundo C-a não seria um não operacional.

Por padrão, C-a C-a é ligado ao comando outro (alterna para a tela ativa mais recente) na tela . Para que o C-a C-a envie um C-a real e tenha janelas do C-a o, coloque o seguinte no seu .screenrc :

escape ^A^A
bind o other
    
por 19.05.2010 / 00:32
39

Não há necessidade da solução alternativa.
Para ir para o começo da linha enquanto estiver usando a tela no bash, use

Controle - A (libere e depois) A


Em geral, se houver um personagem de controle de tela em conflito com um atalho bash, o primeiro Controle do atalho do bash será substituído por Controle - A

Da mesma forma para outros atalhos de edição de linha.

    
por 24.01.2011 / 19:25
3

Eu uso o C- \ para o Screen e não posso recomendar o suficiente. Você pode atingir qualquer outra definição de chave em caso de acidente, mas geralmente não em C- \. É disso que eu gosto.

    
por 03.06.2010 / 20:29
3

Eu uso isso. screenrc

escape ^bb

Exemplo: para desanexar, digite ctrl-b d

    
por 05.10.2015 / 10:17
0

Eu uso ctrl-_ (que também pode ser produzido por ctrl + 7 e geralmente ctrl + /) com screen / tmux.

    
por 14.07.2010 / 23:26
0

Eu uso ctrl-z a maior parte do tempo, mas também uso ctrl-x para alguns. Eu não uso muito a interrupção 'stop', mas quando ela é necessária, eu posso digitar ^ zz. Isso também me permite iniciar sessões de tela secundária em servidores remotos que usam o padrão ctrl-a. E se eu começar uma terceira sessão (em um terceiro servidor), então eu posso usar ctrl-x. Ctrl-x é a função lockscreen, que em muitos ambientes não é muito usual (já que a tela está sendo executada dentro de um emulador de terminal).

    
por 24.01.2011 / 19:43