OS X Terminal equivalente a Ctrl + Esquerda / Ctrl + Direita


19

No Windows e Linux, eu sempre podia pressionar ctrl+ ou ctrl+ para pular uma palavra para a esquerda ou direita no terminal. Nos editores de texto, parece que + / funciona, mas não há dados no terminal. Pesquisei no Google e não encontrei nada, exceto uma página da Wikipedia que reivindica + B/ Ffaz o trabalho, mas tudo o que faz é imprimir caracteres ∫ e ƒ no meu terminal (ou ı e Ï, se eu tiver ). Alguma ideia?

Respostas:



12

Isso estava me deixando louco também, no entanto, eu não queria uma correção específica do Terminal, pois não uso o Terminal, e poder fazer o SSH na minha caixa OSX também precisava usar as teclas de atalho corretas.

Além disso, pessoalmente, não me importei com a chave, como discutido anteriormente; Eu queria manter a combinação ctrl+ / com a qual estou acostumado no Linux.

Para resolver esse problema, adicionei o seguinte ao meu ~/.profile:

bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'

Observe que os dois primeiros se aplicam ao bash no Terminal ; os dois últimos se aplicam ao bash no iTerm2 e nas conexões ssh recebidas . Não me pergunte por que a emulação do teclado é diferente;)

Para o registro, eu pude encontrar quais eram os códigos-chave, graças a uma dica desta resposta do stackoverflow : Você pode executar cat > /dev/nullpara monitorar os códigos-chave exatos enviados durante uma combinação de teclas.

(Observe que, para mim, quando corro cat > /dev/nulle pressiono ctrl+ ele produz ^[[1;5D. Seu código de chave exato pode ser diferente , mas o primeiro ^[é representado como \e, conforme mostrado no meu código de exemplo.)

BTW, se você quiser ver todas as combinações de teclas do bash ativas, execute bind -p.


Eu gosto de usar xxdpara examinar a entrada do teclado. Você pode ver o caractere exibido enquanto digita e xxdemite o valor em hexadecimal quando digita return.
Chris Página

Perfeito! Exatamente o que eu estava procurando :) Nunca tive a sorte de fazer as configurações "específicas do aplicativo" acima, mas isso funciona!
Bisko

Verifique se controle + esquerda / direita não estão mapeados para "alternar espaços" em sysprefs> teclado> atalhos> exposição. Como não havia outros espaços abertos, parecia que minha entrada de teclado não estava funcionando.
sudo

6

No Mac OS X Lion 10.7, o Terminal mapeia - / para esc+ B/ Fpor padrão, agora ele está incorporado no bash e em outros programas que usam essas combinações de teclas compatíveis com o emacs.


5

se você souber usar o vi, também poderá ativar o modo de edição de linha do vi usando set -o vino seu .bash_profileou a qualquer momento na linha de comando. Em seguida, você pode alternar entre os modos de comando vi e inserir. Então você pode pressionar escape e, em seguida, use os comandos vi para navegar na linha:

0 = move to beginning of line
$ = move to end of line
w = move forward one word
b = move backward one word

Depois de chegar à posição correta, você pode usar os outros comandos vi para entrar nos modos de inserção ou acréscimo ou remover caracteres um a um, etc.


Eu nunca soube que você poderia usar 0 para o início da linha, eu sempre usei ^
Jason SALAZ

1
@vxjasonxv: ya, ^ move-se para o primeiro caractere que não é um espaço em branco, 0 move-se para a primeira coluna (que você provavelmente já notou, mas achei que eu o lançaria para outros: P)
Robert S Ciaccio

1
OH WOW, isso é ainda melhor, eu ainda não tinha notado isso! Oh cara, essa funcionalidade (primeiro espaço não branco) de ^ sempre me irritou. Obrigado.
precisa saber é o seguinte

Claro, ESC ^é ótimo quando você precisa dele, é apenas irritante quando você queria fazer algo completamente diferente :)
ocodo

3

Abra o terminal, vá para preferências, teclado. Na lista, você encontrará “ctrl cursor right” e “ctrl cursor left”.
Altere as ações atribuídas para "\ 033f" e "\ 033b", respectivamente, e você poderá usar ctrl+ e ctrl+ para se mover, sem perder a tecla alt.


2

Parece que esc+ Be esc+ Fsão mapeados por padrão para ir para o início e o fim das palavras. Embora, para o meu sistema, você não possa se manter pressionado, escmas precisa pressioná-lo novamente para cada palavra.


1
Esc nunca é um modificador, apenas entra no modo "Escape" quando você o pressiona, considere uma maneira modal de fazer as coisas, diferente de shift / ctrl / meta etc. (de qualquer maneira, no esquema Readline das coisas.)
ocodo

0

A versão mais recente do sistema operacional mapeia isso para o Spaces. Mesmo se o Spaces estiver desativado, as teclas de atalho ainda poderão sofrer um curto-circuito neste local oculto:

Teclas do cursor Terminal.app: desative Preferências do Sistema -> Atalhos -> Controle da Missão -> Mover para a esquerda um espaço

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.