Uso pretendido de ctrl + T no bash?

43

Eu notei que o bash tem um atalho para ctrl + T que troca os dois últimos caracteres antes do cursor.

Estou me perguntando por que os engenheiros decidiram incluir isso.

  • Foi herdado de uma convenção anterior?
  • Ou existe uma finalidade prática para a qual isso é comumente usado?
por Philip Kirkbride 14.12.2016 / 20:19

5 respostas

25

Isto é herdado (por readline) do GNU Emacs, que usa controle - T para transposição de caracteres:

link

Note que o editor de linha do bash é padronizado para o modo Emacs, mas você também pode mudar para o modo vi, se preferir.

    
por 14.12.2016 / 22:01
58

É muito útil corrigir rapidamente erros de digitação:

sl

torna-se

ls

com um único Ctrl T .

Você pode usar Alt T para trocar palavras também ( por exemplo ao alternar entre service e systemctl ...).

Historicamente falando, o recurso Ctrl T veio para o Bash do Emacs com toda a probabilidade. Provavelmente foi copiado para o Emacs de algum outro editor; estava presente no editor E de Stanford (veja < em> Essential E página 13) em 1980, e E teve um strong impacto sobre Richard Stallman (conforme descrito em Gratuito como na Liberdade ). Ele foi implementado em versões muito antigas do Bash, antes de seu primeiro lançamento em 1989, quando foi lançado na biblioteca readline onde ele mora hoje (a primeira entrada no readline ChangeLog sugere isso.

    
por 14.12.2016 / 20:29
15

Esta combinação de teclas, uma ligação herdada do editor emacs , faz com que os últimos 2 caracteres digitados sejam trocados no final da linha, usada no meio de uma linha, ela troca o caractere à esquerda da linha cursor e aquele sob o cursor.

Pode parecer inútil ter uma ligação para um recurso tão raramente usado que seja facilmente alcançado com mais alguns toques de tecla. Timers antigos como eu o uso com bastante frequência e costumava economizar algum tempo de transmissão nos dias de modems de 300 bauds, no final dos anos 70, especialmente no meio de longas filas.

Um comando similar e mais útil, ligado a Alt + T , transpõe as palavras à esquerda e à direita do cursor.

T foi escolhido porque é a letra inicial de transpose . Outras ligações com origem semelhante incluem:

  • Ctrl + B , para retroceder , move o cursor para a esquerda uma posição,
    • Alt + B move o cursor para a esquerda uma palavra,
  • Ctrl + F , para encaminhar , move o cursor para a direita uma posição,
    • Alt + F move o cursor para a direita uma palavra,
  • Ctrl + A , para Anfang ou ante , move o cursor para o começo da linha,
  • Ctrl + E , para fim , move o cursor para o final da linha,
  • Ctrl + N , para próximo , recupera a próxima linha,
  • Ctrl + P , para anterior , recupera a próxima linha,
  • Ctrl + D , para apagar , apaga o caractere sob o cursor,
    • Alt + D apaga a palavra sob o cursor,
  • Ctrl + K , para kill , corta o fim da linha,
  • Ctrl + Y , para yank , cola o conteúdo da área de transferência,

Estas ligações, implementadas no pacote GNU readline, estão, portanto, disponíveis em todos os programas que o utilizam para entrada do usuário, como bash , mas também gdb , bc , ...

Alguns deles também estão disponíveis em outros ambientes: A linha de entrada da URL do Firefox, os campos de entrada de texto na interface gráfica do OS / X e muitos gerenciadores de janelas baseados em X.

Usuários de

vim podem selecionar as ligações correspondentes por meio de uma variável de ambiente.

    
por 15.12.2016 / 08:17
10

É vrey useufl para corrigir tpyos smiple wehre yuo haev accidnetally trasnposed piars de lettres.

(Tendo RSI severo em ambos os pulsos, eu acabo usando muito isso, pessoalmente ...)

    
por 15.12.2016 / 08:34
4

Uma rápida correção de erros. efetua o imediato 2 bloco corretor antes do corcel.

Se você digitou ls- e deseja um espaço entre ls & hífen, então você pode usar Ctrl + T

Isso funciona se você tiver um espaço depois do hífen & então faça Ctrl + T

    
por 15.12.2016 / 08:48