Usando os atalhos de teclado do terminal com o bash no macOS

47

Eu tenho tentado aprender os atalhos de teclado para o shell no macOS, mas quando tentei usar o ALT + B , ele não funcionou.

Como você descobre, configura e usa atalhos de teclado no shell? Qualquer cheatsheets seria útil.

    
por flow 26.03.2010 / 10:08

7 respostas

10

Uma forma de lidar com seqüências de teclas 'meta' que não funcionam no terminal OS X é atribuir sequências de caracteres específicas a pressionamentos de teclas específicos. Para aqueles de nós com teclados que não são dos EUA, isso geralmente é uma solução melhor do que a configuração "Use option as meta" mencionada nos comentários de outras respostas. (Muitos teclados internacionais do Mac são essencialmente inutilizáveis para o trabalho de desenvolvimento sem a tecla Option / alt porque certos caracteres críticos não estão disponíveis. Não há # em um teclado Mac do Reino Unido, por exemplo).

Para colocar o word-left e o word-right funcionando para o bash, usei a seção "Keyboard" do Settings in Terminal. Você pode dizer para gerar sequências de código específicas quando determinados pressionamentos de tecla são feitos. Eu tenho o meu configurado para que alt + gere 3b (que são na verdade dois caracteres: Esc, e então um b minúsculo) e alt + gera 3f (ou seja, Esc f ). Isso permite que você use as teclas de seta com a tecla de opção pressionada para obter a palavra esquerda e direita.

O que eu ainda não consegui descobrir é como fazer com que a tecla Esc funcione - em teoria, você deve ser capaz de usar isso para sequências 'meta', mas parece não funcionar. (Então apenas digitando Esc + b deve voltar uma palavra.)

Se você tem um layout de teclado dos EUA ou outro teclado no qual a Apple tenha fornecido todas as teclas necessárias, como sugerido por outras pessoas, "Use a opção como meta key" (também na seção Teclado do Configurações do terminal) é provavelmente uma escolha melhor porque você poderá obter qualquer combinação de meta-chave. Com isso ligado, Alt + b funciona como esperado.

    
por 17.10.2012 / 18:51
77

O terminal do Mac OS X é BASH, eis alguns atalhos BASH:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L    Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T  Swap the last two words before the cursor
Alt + F  Move cursor forward one word on the current line
Alt + B  Move cursor backward one word on the current line
Tab      Auto-complete files and folder names

O que você está procurando é Ctrl + H . (Isso é o mesmo que apertar a tecla de retrocesso)

Se você estiver procurando por um caractere de escape para voltar um caractere, está procurando por \b . Como em:

$ echo -e "one two\b\b\b\b three" # Will echo "one three"
    
por 26.03.2010 / 11:40
9

No meu Mac do Reino Unido, o cursor ALT + para a esquerda / para a direita avança / avança uma palavra. Absolutamente essencial.

    
por 08.11.2012 / 14:19
6

Experimente SS64 . Este site é ótimo para referência de linha de comando.

Atalhos de teclado do OS X CLI retirados de esta página SS64 .

Bash Keyboard Shortcuts

Moving the cursor:
  Ctrl + a   Go to the beginning of the line (Home)
  Ctrl + e   Go to the End of the line (End)
  Ctrl + p   Previous command (Up arrow)
  Ctrl + n   Next command (Down arrow)
   Alt + b   Back (left) one word
   Alt + f   Forward (right) one word
  Ctrl + f   Forward one character
  Ctrl + b   Backward one character
  Ctrl + xx  Toggle between the start of line and current cursor position

Editing:
 Ctrl + L   Clear the Screen, similar to the clear command
 Ctrl + u   Cut/delete the line before the cursor position.
  Alt + Del Delete the Word before the cursor.
  Alt + d   Delete the Word after the cursor.
 Ctrl + d   Delete character under the cursor
 Ctrl + h   Delete character before the cursor (backspace)
 Ctrl + w   Cut the Word before the cursor to the clipboard.
 Ctrl + k   Cut the Line after the cursor to the clipboard.
  Alt + t   Swap current word with previous
 Ctrl + t   Swap the last two characters before the cursor (typo).
 Esc  + t   Swap the last two words before the cursor.
 Ctrl + y   Paste the last thing to be cut (yank)
  Alt + u   UPPER capitalize every character from the cursor to the end of the current word.
  Alt + l   Lower the case of every character from the cursor to the end of the current word.
  Alt + c   Capitalize the character under the cursor and move to the end of the word.
  Alt + r   Cancel the changes and put back the line as it was in the history (revert).
 Ctrl + _   Undo

 TAB        Tab completion for file/directory names
For example, to move to a directory 'sample1'; Type cd sam ; then press TAB and ENTER. 
type just enough characters to uniquely identify the directory you wish to open.

History:
  Ctrl + r   Recall the last command including the specified character(s)
             searches the command history as you type.
             Equivalent to : vim ~/.bash_history. 
  Ctrl + p   Previous command in history (i.e. walk back through the command history)
  Ctrl + n   Next command in history (i.e. walk forward through the command history)
   Alt + .   Use the last word of the previous command
  Ctrl + s   Go back to the next most recent command.
            (beware to not execute it from a terminal because this will also launch its XOFF).
  Ctrl + o   Execute the command found via Ctrl+r or Ctrl+s
  Ctrl + g   Escape from history searching mode

Process control:
 Ctrl + C   Interrupt/Kill whatever you are running (SIGINT)
 Ctrl + l   Clear the screen
 Ctrl + s   Stop output to the screen (for long running verbose commands)
 Ctrl + q   Allow output to the screen (if previously stopped using command above)
 Ctrl + D   Send an EOF marker, unless disabled by an option, this will close the current shell (EXIT)
 Ctrl + Z   Send the signal SIGTSTP to the current task, which suspends it.
            To return to it later enter fg 'process name' (foreground).

Emacs mode vs Vi Mode    
All the above assume that bash is running in the default Emacs setting, if you prefer this can be switched to Vi shortcuts instead.

Set Vi Mode in bash:
$ set -o vi

Set Emacs Mode in bash:    
$ set -o emacs

Observação: Para usar os atalhos de teclas Alt > > Abra as Preferências do terminal > > Guia Configurações > > Teclado > > Assinale "Usar opção como meta-chave"

    
por 17.10.2014 / 16:12
2

Você deseja a seção READLINE da página bash(1) man:

man 1 bash
/^READLINE
    
por 26.03.2010 / 10:11
1

Realmente não há necessidade de mapear a chave option para meta, em um terminal OS X, opção + seta para a esquerda , opção + seta para a direita substitui Alt + F e Alt + B respectivamente. Outros atalhos comumente usados funcionam como implementados em outras plataformas. esc pode emular a funcionalidade original da tecla Alt , mas pode ser um pouco desconfortável usar esc como um modificador, mais você não pode segure esc e pressione repetidamente B ou F , você precisa deixá-lo para cima e empurrá-lo de volta para baixo novamente a cada vez.

TL; DR

opção + seta para a esquerda = voltar uma palavra

opção + seta para a direita = encaminhar uma palavra

    
por 07.06.2014 / 07:42
0

Você pode estar interessado em meu perfil: link

Ele fornece os seguintes atalhos (intuitivos):

ALT-left: move one word backward
ALT-right: move one word forward
CTRL-left: move to the beginning of the line
CTRL-right: move to the end of the line
ALT-backspace: kill one word backward
ALT-del: kill one word forward
ALT-up: set word after cursor to uppercase
ALT-down: set word after cursor to lowercase
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
home: move to the beginning of the line
end: move to the end of the line
    
por 23.09.2015 / 06:58