Qual é a seqüência de prefixo / escape menos conflitante para tela ou tmux?

86

A tela vai com Ctrl + A . O tmux, por outro lado - como desenvolvido na tela - usa Ctrl + B . Ambos os pressionamentos de tecla, no entanto, também são usados em editores, shells, etc. Assim, escolher um deles degrada a experiência do usuário e a funcionalidade dessas ferramentas quando usadas no tmux ou na tela.

Qual prefixo conflita menos com os atalhos de teclado dos outros programas e shells?

    
por Scott 21.11.2015 / 00:17

20 respostas

46

Acho que ^\ (a.k.a. ^| ) é o melhor se estiver em uma posição conveniente no layout do teclado. Seus usos em outros programas são bastante raros:

  • enviando SIGQUIT para um processo
  • anulando para ou loops while em um shell quando ^C é interceptado
  • toggle-input-method no emacs

Eu não sei de nenhum outro uso. Tenha cuidado para não matar acidentalmente um processo fora de tmux ou screen depois de se acostumar com isso. Aconteceu comigo apenas uma vez em alguns anos.

~/.tmux.conf

unbind-key C-b
set -g prefix 'C-\'
bind-key 'C-\' send-prefix

~/.screenrc

escape ^|^|
    
por 20.11.2015 / 21:47
43

Para pessoas que querem usar o backtick como escape no tmux, você vai querer adicionar:

unbind C-b
set -g prefix '
bind-key ' send-prefix

Esse último é importante, senão você não pode digitar um backtick para outros propósitos: -)

    
por 06.03.2012 / 23:43
20

O Ctrl + A também é conhecido por causar problemas com o Emacs, incluindo o Bash no modo Emacs. Parece que isso não é um problema para você.

Ctrl + O é a outra opção que vi. Aparentemente, este é o padrão no RatPoison (este é um gerenciador de janelas X que não precisa de um mouse). Eu usei Ctrl + O ao usar telas aninhadas: Ctrl + O para o externo e Ctrl + A para os internos. Funcionou bem, mas meio que assustou meus colegas. : -)

Eu estava pensando e se você usa o vi em vez do Emacs, existem algumas alternativas. Ctrl + G não é muito usado, por exemplo.

    
por 24.11.2009 / 03:25
12

Eu tenho CAPS-LOCK globalmente mapeado para ESC . Então, eu uso M-Space (ou seja, CAPS-LOCK + Space ) para o meu prefixo.

    
por 09.11.2012 / 22:20
12

Eu uso um sistema complexo para a tela. Meu escape padrão está definido para \ 140 \ 140, que é backtick. O Ctrl-A complica tanto o Emacs quanto a edição de linha de comando para mim dentro do Zsh, e eu não gosto do Ctrl-O (2 operações manuais para a maioria das ações da tela).

Eu reviso 's' para a tela 1 para que novas sessões sejam criadas da esquerda para a direita no teclado, começando em 1. Isso me permite reservar a tela 0 para o que considero janelas persistentes ou de referência. É muito rápido um gesto com a mão para (backtick) 1, (backtick) 2, (backtick) 3 para trocar entre janelas.

O problema com o uso do backtick em um ambiente unix é ao tentar recortar e colar o código de script shell / perl. Por esta razão, eu coloco a tecla F11 / F12 para alternar entre o caractere de escape.

bindkey -d -k F1        escape ^O^O # bound to F11
bindkey -d -k F2        escape 00 # bound to F12

Isso irá trocar o escape para Ctrl-O quando eu estiver fazendo operações de recortar e colar. Eu achei que bater um carrapato duplo é simples, e um bom troco para a maioria das operações de tela.

Revisitando esta resposta com uma nova solução que permite alternar o modo pressionando F12 e usando uma legenda para indicar o modo.

## command characters
escape 00                 # default is '

## sets caption and escape toggle
bindkey -d -k F2 process a     # bound to F12

## initial caption
caption always '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{-b .c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '

## registers to toggle bindkeys
register a "0:eval 'bindkey -d -k F2 process b' 'process c' 'escape \017\017'^M"
register b "7:eval 'bindkey -d -k F2 process a' 'process d' 'escape \140\140'^M"

## registers to change captions
register c "0:caption string '%{= kW}%?%F%{+b mW}%:%{= kK}%? %= %?%F%{.c}ALT%{-}%? | %-w%{KW}%n* %t%? @%u%?%{-}%+w '^M"
register d "7:caption string '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{.c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '^M"
    
por 16.02.2015 / 15:34
11

Eu uso Ctrl-Q em tmux e funcionou bem até agora. Eu tenho que mencionar, no entanto, que ele entra em conflito com o controle de fluxo do shell. Por padrão, Ctrl-Q é usado para reativar a saída após pará-la com Ctrl-S . Tendo sido surpreendido por uma concha presa algumas vezes depois de acidentalmente acertar Ctrl-S , aprendi a não pressionar Ctrl-S .

(Também é possível desativar completamente o controle de fluxo com stty -ixon ou vincular chaves diferentes a stty start e stty stop .)

# tmux.conf
unbind C-b
set -g prefix C-q
    
por 23.06.2011 / 11:40
6

Eu gosto de reservar ^Space para operações muito especiais / comuns porque acho que é o prefixo mais fácil de digitar, mas agora estou tentando mapeá-lo como prefix em tmux .

Ele deixa seus dedos livres para pular instantaneamente para o comando que você deseja digitar. Experimente.

    
por 20.08.2010 / 10:26
6

Uma sugestão tardia: ctrl-s . ctrl-s tem várias vantagens:

  1. Na linha inicial.
  2. Ainda perto de ctrl-a (na verdade, para a maioria dos tipificadores ele usará os mesmos dois dedos que usaram para ctrl-a ), então a troca de memória muscular de ctrl-a para ctrl-s é trivial - para mim , tornou-se uma segunda natureza dentro de cerca de uma hora da primeira tentativa.
  3. Libera ctrl-a para operações do tipo emacs "de volta ao início da linha" ou "número de incremento" no estilo vim. Ou, ei, para executar a tela dentro de um painel tmux sem precisar se preocupar em caracteres de prefixo de escape para controlar a instância da tela incorporada. (Eu frequentemente faço isso usando um tmux local com painéis contendo sessões ssh para servidores remotos, nos quais eu corro tela)
  4. Não substitui ou adiciona requisitos de escape a qualquer outra funcionalidade de terminal comumente usada. nada a grande maioria das pessoas usa hoje está em ctrl-s!

Naturalmente, a razão pela qual nada está em ctrl-s é que, no terminal, ele é tradicionalmente usado para controle de fluxo, remontando aos dias antes das ferramentas de paginação como more e less serem comuns. Tenho certeza de que algum programa de terminal GUI em algum lugar ainda tem essa funcionalidade de controle de fluxo ativada por padrão, mas eu não encontrei um; os programas de terminal gui que eu experimentei parecem ignorar completamente por padrão, o que torna essa conveniente combinação de teclas disponível para usos mais produtivos.

Então, se você não está realmente usando o screen / tmux de dentro (por exemplo) de um terminal Linux, mas sim de um terminal baseado em GUI, então eu recomendo dar ctrl-s a try; ele é muito interessante em tmux e tela muito mais conveniente para mim.

    
por 25.06.2013 / 07:31
4

Eu ouvi falar de '(backtick) sendo usado e então você só tem que digitar duas vezes para um backtick real. Pode ser melhor para usuários do vi que estão acostumados com a ação (a menos que você faça a ação Caps lock).

    
por 28.08.2010 / 00:19
4

Eu recomendo C-j , o que não interfere muito no vi ou no emacs. Essencialmente, eu concordo com um comentário do Susam Pal, que parece ser digno de ser apresentado como uma resposta, uma vez que todos os outros parecem ter conflitos significativos do meu ponto de vista.

I use C-j as my prefix key since C-j is synonymous to j or in Vim and nobody uses C-j to move one line down in Vim. I have this in my ~/.tmux.conf:

set -g prefix2 C-j; bind-key C-j send-prefix -2

    
por 19.05.2016 / 01:32
3

Acho que a melhor solução é ^ C. O Emacs usa ^ C como uma chave de prefixo, e eu acho que quando eu preciso digitar ^ C em um shell eu quase sempre escrevo dois de qualquer maneira. : -)

unbind-key C-b
set -g prefix C-c
bind-key C-c send-prefix
    
por 04.03.2013 / 02:13
3

Uma chave sem conflito pode ser C-z , como geralmente é usada para enviar o programa para o segundo plano para continuar outra coisa no shell que o iniciou. Eu não faço isso quando tenho o tmux.

    
por 03.02.2016 / 18:14
3

Para o layout do teclado do programador Dvorak, é bastante interessante usar uma tecla menos (traço) como um prefixo, ou seja, ctrl + - .
A tecla menos está na posição da chave de aspas simples no layout qwerty. Também tenho a função de tecla caps lock como uma tecla ctrl. A seguir está um conf tmux, para defini-lo como um prefixo:

unbind C-b
set -g prefix C-_
bind C-_ send-prefix
bind - last-window

Você pode se perguntar por que o sublinhado é usado em vez de menos? Consulte Tmux: como faço para ligar a C— ( controle-menos)?
Para qwerty, você pode aplicar Como faço para ligar o tmux Prefixo chave para C- '? solução, a fim de manter o mesmo atalho.

Eu diria que este é um prefixo perfeito se você usar o Vim / Neovim. Como os prefixos, como ctrl + a ou ctrl + b , fazem a funcionalidade shadow (overlap) do Vim, de qualquer forma.

    
por 13.04.2017 / 14:37
2

Pessoalmente, b está muito longe de Ctrl para mim. Quando uso o tmux, sempre modifico a ligação de C-b para C-a. O principal conflito com o C-a é selecionar todos, mas eu não achei que isso seja um problema com os programas que eu uso o tmux.

    
por 24.11.2009 / 02:05
2

Como usuário do GNU emacs, zsh e MS Windows, eu uso o Control-T. (por exemplo, em .screenrc:)

escape "^T^T"

Sim, o Control-T tem algo ligado a ele, como o menu suspenso no aptitude do Ubuntu, ou transpõe caracteres no Emacs.

Desconsiderei o C-o porque requer duas mãos para mim.

    
por 20.12.2009 / 06:22
2

Eu uso o Caps Lock, e no OSX você precisa fazer algumas coisas especiais para fazê-lo funcionar.

link

    
por 16.03.2013 / 02:31
1

Você pode usar o backtick. Algumas versões mais antigas do tmux não suportam backtick, então você pode fazer o seguinte para a solução alternativa (que adicionaria C- ', C- @ e C-space como sua meta ao mesmo tempo):

# meta prefix - @ - backtick
unbind C-b
set -g prefix C-@
bind C-@ send-prefix
bind C-@ last-window

Eu normalmente remapeio meu CapsLock para Ctrl, então faz mais sentido com o backtick.

    
por 04.12.2013 / 12:27
1

A maioria das respostas aqui usa o Ctrl como parte de uma combinação de teclas.
Quando eu usei Ctrl, meu dedo mindinho começou a doer, porque eu sempre me dirijo para o Ctrl.
Eu uso Alt-j que eu digito com meu polegar esquerdo e meu dedo indicador direito e é muito conveniente. Eu também não encontrei nenhuma colisão com qualquer outro programa até agora.

unbind C-b set-option -g prefix M-j

    
por 31.05.2017 / 17:47
0

Eu gosto da sugestão de vinculando ctrl- \ como o prefixo , mas para que isso funcione no Linux Mint 12 , Eu tive que escapar do lugar a ligação no fundo. Caso contrário, não demoraria. Veja meu .tmux.conf aqui: Usando o tmux com o emacs e o vim

    
por 20.03.2017 / 11:17
0

Acho que os usuários do Mac acharão o § mais conveniente que o backtick.

No teclado não-Mac , o backtick é posicionado praticamente na mesma tecla que o § nos teclados Mac. Portanto, para experimentar a mesma conveniência que as pessoas que sugerem usar o backtick, use o sinal de parágrafo em um teclado Mac.

Usar o backtick em teclados Mac é complicado, pois está localizado muito perto do controle de deslocamento esquerdo (⇧), controle (⌃) e (⌥) alt-keys. Em MacBooks, até mesmo perto da esquerda fn -key.

    
por 01.07.2016 / 14:57