Estou tendo dificuldade em encontrar um "caractere de comando" para a tela GNU que não colide com alguma combinação de teclas que eu já uso.
Através do Emacs (e modo org, e meu shell regular etc.), praticamente todos os caracteres de comando que consistem em Ctrl+ [A-Z]
estão fora dos limites .
Eu imagino que, se houvesse uma maneira simples e consistente de digitar qualquer um dos caracteres no intervalo ASCII 27 a 31, isso pode ser suficiente.
Existe alguma ferramenta que eu possa usar para encontrar uma maneira de digitar um desses caracteres que atenda aos critérios acima?
(BTW, por "consistente", quero dizer que pode ser digitado da mesma maneira em "todos os teclados" ou, pelo menos, em "todos os teclados dos EUA".)
screen
metacaractere do seu terminal; por padrão,^A-a
é um literal^A
enviado para a sessão do terminal. Dito isso, você deve poder usar a-e
opção para definir o sinal de comando de substituição e o comando para enviá-lo como um literal. (-e^Aa
é o padrão, por exemplo).Respostas:
Você pode usar qualquer tecla de função que a Tela reconheça como o caractere de escape. Defina o caractere de escape (mais precisamente, o byte de escape ) como aquele que você nunca digita, por exemplo,
\377
que nunca é usado pelo UTF-8. Ligue a tecla que você deseja usar como tecla de escapecommand
, por exemplo F12(que estáF2
no termcap speak - consulte a seção "Tradução de entrada" no manual da tela):Você não está limitado às teclas para as quais o Screen conhece um nome simbólico. Para definir uma chave arbitrária ou keychord como a tecla de comando (a chave precisa enviar uma sequência de escape no terminal), descubra qual seqüência de escape ela envia pressionando Ctrl+ Ve a tecla em um prompt de shell. Isso faz com que a sequência de escape seja inserida literalmente, em vez de ser reconhecida pelo shell como uma sequência de escape. Por exemplo, se você quiser usar F12, poderá pressionar Ctrl+ Ve F12inserir
^[[24~
(o primeiro^[
representa o caractere de escape) (alguns terminais podem enviar uma sequência de escape diferente); então você usariaUso Ctrl+ \como minha tecla de escape da tela (
escape ^\\\
) e deixo Ctrl+ \ \injetar um^\
caractere. Poucos programas usam o^\
caractere de controle. No Emacs, chamatoggle-input-method
, que eu não uso; sua milhagem pode variar. Em um terminal preparado, ele envia SIGQUIT, o que raramente é útil (quando necessário, Ctrl+ Zseguido pelokill
comando geralmente também funciona; eu padrão de desabilitar os core dumps). Ctrl+ \pode ser difícil digitar em alguns layouts de teclado quando \necessário AltGr, mas no layout dos EUA é simples. Também configuro meu emulador de terminal para enviar o^\
caractere quando pressiono Ctrl+ `, o que me permite digitá-lo com a mão esquerda também.Ctrl+ ](Emacs :)
abort-recursive-edit
e Ctrl+ ^(Emacs: indefinido; mas é estranho digitar em um teclado dos EUA e em muitos outros layouts) são outros candidatos prováveis para um usuário do Emacs.A propósito, se você usar o Screen apenas para executar o Emacs e algumas conchas, não precisará do Screen. O Emacs pode desempenhar o mesmo papel. Mantenha um único processo do Emacs em execução e use-o
emacsclient
para abrir uma janela nesse processo do Emacs a partir de qualquer terminal. Se o terminal desaparecer, você poderá executaremacsclient
novamente para conectar-se à mesma instância do Emacs. Você pode ter quantas instânciasemacsclient
quiser e conectadas à mesma instância do Emacs, possivelmente sendo exibidas por diferentes conexões locais e remotas.Para iniciar o Emacs sem interface, execute
emacs --daemon
. Em seguida, executeemacsclient -c
para abrir uma janela para a instância existente do Emacs (ouemacsclient -c -nw
para forçar uma janela no modo de texto). Se você deseja iniciar o Emacs, se ele ainda não foi iniciado, mas conecte-se à instância existente do Emacs, se houver, executeemacsclient -a '' -c
.Se você deseja executar conchas, pode usar
M-x shell
ou algoM-x term
semelhante dentro do Emacs. O Emacs pode fazer praticamente tudo o que a Screen pode fazer.fonte
Ctrl+'
caractere, entãoCtrl+'
envia'
na maioria dos terminais; consulte emacs.stackexchange.com/questions/1020/… para saber como fazer com que ela envie uma sequência de escape no xterm, mas não tenho certeza se você pode usar essa sequência de escape para vinculá-lacommand
, acho que Screen é limitado às chaves definidas por termcap.^` as my screen escape for decades. The default
^ A` sempre parecia louco (só posso supor que o autor original não usou o Emacs).^`
que isso fosse adequado, pois não é um "personagem de controle" de boa-fé (o segundo caractere no "acorde da chave" não é uma letra nem um dos@ [\]^_?
) . Funciona^`
para você "pronto para uso", ou seja, sem nenhuma configuração adicional? Se sim, como você sabia antecipadamente que^`
isso funcionaria (considerando que, como já mencionado, não é um "personagem de controle"). Se, por outro lado, você se requerem uma configuração adicional para^`
trabalhar, seria a configuração análoga começar^'
a trabalhar?Eu uso o Meta-a para tela, porque todos os caracteres de controle já estão em uso pelos meus aplicativos. Para fazer isso, coloquei meus xterms no modo de 8 bits (codificação UTF-8 desativada, LANG = C) e coloquei
no meu
~/.screenrc
, onde<E1>
está o byte hex 0xe1 (ou seja, minúsculasa
com o bit alto definido para escape e uma planíciea
para enviar uma meta-a).Isso não é tão bom se você se preocupa com o UTF-8 em seus xterms, mas funciona bem se você estiver de acordo com o padrão de 8 bits.
fonte
Pessoalmente, uso o Ctrl-J para a tela GNU por 2 razões:
seu dedo normalmente está localizado lá, se você é um datilógrafo.
escape ^ Jj
fonte
newline-and-indent
comando.