Questão Qual é a sequência de prefixo / escape menos conflitante para tela ou tmux?


Tela acompanha Ctrl+UMA. 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 dentro do tmux ou da tela.

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


83


origem


"qual deles menos conflita com outros programas?" não tem nada a ver com opinião. - iconoclast
Depois de mudar ~/.tmux.conf não se esqueça de reiniciar o servidor tmux para que as mudanças entrem em vigor (superuser.com/q/188491/105108). - ks1322


Respostas:


eu 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:

  • envio SIGQUIT para um processo
  • abortando para ou enquanto loops 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 ^|^|

45



Eu tentei isso, mas tmux reclama sobre o uso de C-`. Can I escape the `personagem de alguma forma? - Jason
Só para deixar alguém saber, você deve escrever 'C-\' em vez de `C- \` na configuração do tmux. - gns-ank
Não se esqueça de 'tmux source-file /path/to/tmux.conf' quando terminar de experimentar as novas configurações - user72923
mas então eu tenho o hábito desse comando, e quando esqueço que estou na tela, começo a enviar acidentalmente SIGQUITs ... - Kache
"se estiver em uma posição conveniente em seu layout de teclado", por padrão, não é, você está sugerindo que há algum remapeamento popular que você está usando, o que torna o C- \ conveniente? - storypixel


Para as 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 :-)


43



Backtick parece ser uma boa ideia até colar em algum SQL ... - Synchro
O @Synchro no tmux 1.8 não é mais um problema, graças à opção de supor-colar-tempo, que é ativada por padrão (definida como 1 ms). Veja aqui: sourceforge.net/p/tmux/tmux-code/ci/… - sickill
Eu encontrei esta pergunta procurando alternativas para backtick, uma vez que começou a causar problemas depois que eu me acostumei a usar backticks em vez de $() em conchas. Também se torna uma dor quando você começa a escrever um monte de Markdown. Eu tenho usado por vários anos, mas infelizmente vou ter que mudar isso agora. - kirelagin
No .tmux.conf eu também tenho bind-key C-a set-option -g prefix C-a. Sempre que eu preciso usar backticks eu bato `-Ctrl-a que define meu prefixo para C-a. E eu tenho bind-key C-b set-option -g prefix ` para que eu possa acertar C-a-C-b voltar - boris
E se você estiver escrevendo uma remarcação? Como você escapa do prefixo? - OJFord


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 apenas pensando e se você usa o vi em vez do Emacs, existem algumas alternativas. Ctrl + G não é muito usado, por exemplo.


19



Para os usuários do Emacs, Ctrl + O parece ser a melhor escolha: no emacs, é apenas "abrir uma nova linha no cursor" e, em bash, "repassar uma sequência de comando". - Flow
Se você está bem com operações de ctrl com a mão direita, isso parece um bom backup. Eu sou um esquerdista ;-) - DaveParillo
Eu acho que o Ctrl + O quebra o vim - Mu Qiao
Eu concordo com @MuQiao. Ctrl-o é usado no Vim para pular para uma posição mais antiga do cursor (equivalente ao botão voltar em muitos IDEs), um recurso que eu uso com muita frequência enquanto navego no Vim. Ctrl-b é sinônimo de PageUp no Vim. Eu não uso Ctrl-b no Vim. Portanto, para usuários do Vim como eu, o Ctrl-b ainda é uma opção melhor que o Ctrl-o. Eu uso C-j como minha chave de prefixo já que C-j é sinônimo de j ou <Down> no Vim e ninguém usa C-j para mover uma linha para baixo no Vim. Eu tenho isso no meu ~ / .tmux.conf: set -g prefix2 C-j; bind-key C-j send-prefix -2 - Susam Pal
C-j conflitos com CtrlP. Movendo para cima e para baixo os usos da lista de buffers C-k e C-j respectivamente - blockloop


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


11



Muito boa ideia, obrigado por compartilhar. - AhHatem


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 alternar entre as janelas.

O problema com o uso de 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 \140\140 # bound to F12

Isso irá trocar o escape para Ctrl-O quando eu estiver fazendo operações de recortar e colar. Eu encontrei 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 \140\140                 # 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 "\140:eval 'bindkey -d -k F2 process b' 'process c' 'escape \\017\\017'^M"
register b "\017:eval 'bindkey -d -k F2 process a' 'process d' 'escape \\140\\140'^M"

## registers to change captions
register c "\140:caption string '%{= kW}%?%F%{+b mW}%:%{= kK}%? %= %?%F%{.c}ALT%{-}%? | %-w%{KW}%n* %t%? @%u%?%{-}%+w '^M"
register d "\017:caption string '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{.c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '^M"

11



Solução criativa. Estou impressionado. - staticsan
bind-key -n F11 set -g prefixo `bind-key -n F12 set -g prefixo C-o Atualiza para o tmux caso outros queiram adaptar isto. - milkypostman
Existe uma maneira de definir algum tipo de timeout mínimo para o prefixo + other_key combo no tmux, então ao colar o código ele não aciona nenhum comando, mas ao digitar backtick + key do teclado ele faz porque a pausa entre o backtick e a outra é mais longa ? - sickill


eu uso Ctrl-Q dentro 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 depois de interrompê-la Ctrl-S. Tendo sido surpreendido por uma concha presa algumas vezes após bater acidentalmente Ctrl-SAprendi a não pressionar Ctrl-S.

(Pode-se também desligar o controle de fluxo stty -ixon, ou ligar chaves diferentes para stty start e stty stop.)

# tmux.conf
unbind C-b
set -g prefix C-q

10



Eu adotei este bind e acho muito conveniente. Obrigado! - aymericbeaumet
Meu favorito também, desde que eu desabilito sempre o material de fluxo de controle de terminal. - Jack O'Connor
Usado no emacs para quote-inserted. Uso de amostra (no emacs): se eu quiser procurar o próximo caractere de tabulação - <Ctrl-s>+<Ctrl-q>+<TAB> - nhed


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

  1. Na fileira de casa.
  2. Ainda perto de ctrl-a (na verdade, para a maioria dos tipógrafos, ele usa os mesmos dois dedos usados ctrl-a), então a memória muscular muda 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 freqüentemente 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 eram 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; Todos 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 uma tentativa; é feito zipping sobre no tmux e tela muito mais conveniente para mim.


6



Ctrl-s é busca para frente, para quando eu for longe com Ctrl-r :) - Jack O'Connor
Ctrl-S é comum para parar a saída do console (também conhecido como "congelamento"). Isso me mordeu quando tentei remapear. - Dave


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

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


5



Isso não durou muito - estou de volta ao ^ j. ^ O espaço é muito semelhante aos comandos que utilizo para invocar aplicativos no nível do OSX (Spotlight, QuickSilver, DTerm). - terrace
Eu uso C-j também. Isto é o que eu uso no meu ~ / .tmux.conf: set -g prefix2 C-j; bind-key C-j send-prefix -2 - Susam Pal
Eu também uso o C-Space, ele não é usado em quase nenhum outro lugar. - mahdix
C-espaço é perfeito para mim, como eu estou em um Chromebook: D - Eric Nguyen