Existe uma maneira de pular para uma parte anterior de um comando de linha de comando no Mac Terminal?

9

Muitas vezes eu me pego escrevendo longos comandos no shell bash - coisas com muitos argumentos, endereços da web, rotas, etc e assim por diante. De vez em quando eu vou perceber que eu esqueci de, digamos, colocar o meu "bundle exec" no início do comando, ou escrever algo errado, ou esquecer aspas. Ou algo tão simples como colocar "cd" em vez de "vim".

Assim começa o tedioso processo de segurar a tecla de seta para a esquerda até eu voltar ao início do comando.

Existe alguma maneira de pular para o começo da linha novamente?

    
por GlyphGryph 25.10.2011 / 15:42

8 respostas

12

Além de ^ A e ^ E, você pode fazer

  • Esc - b para retornar uma palavra
  • Esc - f para avançar uma palavra
  • Ctrl - b para mover um caractere para trás
  • Ctrl - f para avançar um caractere

Veja o manual do bash para comandos para mover .

    
por 25.10.2011 / 16:44
6

Você pode usar os comandos do Emacs, por exemplo:

  • ctrl -A para ir ao começo da linha de comando
  • ctrl -E para ir até o final da linha de comando

Isso é bash, não específico para Mac.

    
por 25.10.2011 / 16:02
3
set -o vi

Então Esc seguido por

^ início da linha $ fim da linha b uma palavra backword w uma palavra a frente

    
por 25.10.2011 / 18:21
1

Isso não responde à sua pergunta, mas pode resolver seu problema em alguns casos.

Em bash , o !! token é substituído por seu comando anterior. Então, se você esquecer de adicionar algo ao início de um comando (como sudo ), você pode fazer algo parecido com isto

# ./super_secret_command --with-args
=> ACCESS DENIED

# sudo !!
sudo ./super_secret_command --with-args
=> ACCESS GRANTED
    
por 25.10.2011 / 20:25
0

Você pode configurar os atalhos Ctrl/Opt+Left/Right regulares para uso no Terminal. Dessa forma, você não precisa reaprender tudo quando estiver usando o Terminal.

Abra o Terminal »Preferências…» Configurações »(selecione um perfil)» Teclado .

Lá, atribua os seguintes atalhos:

  • Control + Cursor Left : Envia a string 3[1~ para shell
  • Control + Cursor Right : Envia a string 3[4~ para shell
  • Option + Cursor Left : Envia a string 3[5D para shell
  • Option + Cursor Right : Envia a string 3[5C para shell

Eu também gosto do seguinte ( Fn + Left/Right ):

  • Home : Envie a string 3[1~ para shell
  • End : Envia a string 3[4~ para shell

    
por 25.10.2011 / 20:45
0

Eu precisava disso no Cygwin, não no Mac, mas adicionar o seguinte a ~/.inputrc também pode ajudar:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 
    
por 27.10.2011 / 00:10
0

Eu não sou usuário de Mac, mas e a tecla Home ? Isso funciona bem em um terminal Linux.

    
por 25.10.2011 / 15:56
0

A melhor maneira de percorrer a linha de comando no Mac Os X é usar 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
home: move to the beginning of the line
end: move to the end of the line    
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
    
por 23.09.2015 / 07:14