Questão Como posso obter o controle + seta para a esquerda para voltar uma palavra no iTerm2?


Eu estava lendo no manual do Linux e notei que ele dizia que eu poderia usar control + left e control + right para avançar e voltar palavras no terminal durante a edição.

"Pressionar Ctrl mais a tecla de seta para a esquerda ou para a direita move para trás ou para frente uma palavra por vez, assim como pressionar Esc e, em seguida, B ou F."

No OS X control+left e control+right normalmente controlam espaços. Eu desativei aqueles. Eu também tentei usar o painel de preferências para definir os atalhos de teclado:

enter image description here

enter image description here

No entanto, isso não funciona e causa esse erro:

enter image description here

Além disso, se eu estiver no iTerm e usar alt+escape então B ou F, o personagem se move para frente e para trás. Isso estava acontecendo antes de qualquer alteração na minha configuração. Mas eu realmente gostaria de poder usar o controle + as teclas de seta.


98


origem


Incidentalmente, uma maneira mais parcimoniosa de conseguir isso pode ser simplesmente mapear command + left e command + right em vez de ctrl + left e ctrl + right. Eu não precisei desativar nada em todo o sistema para fazer isso. - Doctor Mohawk


Respostas:


festança

Basta adicionar o seguinte para ~/.inputrc:

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

Vejo esta postagem arquivada do Wiki para mais alguma explicação. Se você quiser usar o alt chave em vez de movimento palavra-a-palavra (como o comportamento padrão do OS X), use:

"\e[1;9D": backward-word
"\e[1;9C": forward-word

zsh

zsh por padrão não usa o readline biblioteca e, portanto, não vai ler ~/.inputrc. Para obter a mesma funcionalidade, você pode adicionar o seguinte ao seu ~/.zshrc - isso novamente usaria o alt chave:

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

Vejo esta documentação para saber mais sobre o editor de linhas zsh incorporado (zle).


Por que é isso? Você configurou seu perfil para usar os padrões do Xterm:

enter image description here

É por isso que você precisa "pegar" essa sequência e contar readline o que fazer.


Se o acima ainda não funcionar e você estiver usando o OS X 10.9 (Mavericks) ou abouts, provavelmente precisará desabilitar os atalhos globais do Controle de Missão que impedem que as teclas de controle Control + atinjam o iTerm, mesmo que o Controle de Missão esteja desativado. Você pode fazer isso de Preferências do Sistema → Teclado → Atalhos → Controle da Missão:

mission control keyboard prefs


127



Eu tento seguir as instruções para que as teclas alt + left e alt + right funcionem. Eu adicionei as duas linhas ao meu arquivo .inputrc, mas a única coisa que acontece quando eu pressiono as teclas é que um "D" ou um "C" são impressos no shell. Estou usando o iTerm2 com shell zsh. Alguma ideia? - Flo
@Flo Tente adicionar as linhas bindkey -e, bindkey '^[[1;9C' forward-word e bindkey '^[[1;9D' backward-word para o seu ~/.zshrc em vez de. IIRC zsh não vai ler .inputrc - ou pelo menos funciona para mim desse jeito. - slhck
Não funciona para mim com ctrl-left / right + bash, mas funciona bem se eu configurá-lo para alt-left / right. - Dalin
Adicionada uma edição sobre os atalhos do Controle da Missão impedindo que tudo isso funcione da maneira mais irritantemente opaca. Espero que isso evite que alguém passe pela mesma coisa que eu acabei de fazer ... - rubyruy
Para OSX + zsh + iTerm2 + ctrl-left / right, use o seguinte: bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word - Artur Bodera


Solução de trabalho para zsh. Simples, direto, fora da caixa.

  1. Vamos para: ⌘, Preferences → Profiles → Keys → Keyboard Behavior

  2. Carregar predefinido: Natural Text Editing

Load Preset "Natural Text Editing"


26



A melhor resposta, obrigada !! - Fer Martin
Obrigado @Happy Torturer, eu acredito que é a melhor resposta, principalmente porque eu não tenho em simples Terminal.app esse problema, então eu não quero modificar bash / zsh, só quero trabalhar tudo como no Terminal.app. - galuszkak
Solução mais simples, obrigado! - markc
Isso Isso isso. Muito obrigado por esta solução! Eu passei por este processo enlouquecedor com cada Mac que recebo. Eu agora conheço a maneira mais simples de fazer isso acontecer. Obrigado! - vernonk


Eu usei uma abordagem diferente. Usando BetterTouchTool Eu programei um atalho de teclado personalizado para o iTerm2. Quando pressiono alt-left no iTerm2, ele envia o atalho de teclado ctrl-left com a ação "Enviar atalho de teclado para um aplicativo específico". A aplicação é iTerm2. Eu fiz o mesmo para alt-right mapeado para ctrl-right.

O efeito é que pressionar alt-left ou alt-right em iTerm envia um ctrl-left ou ctrl-right diretamente para o iTerm2, ignorando o atalho usual em todo o sistema para mover uma área de trabalho para a esquerda ou para a direita. Assim eu recebo o comportamento típico do mac no iTerm2, em sessões de terminal locais, mas também em sessões SSH remotas e posso usar o padrão ctrl-left / ctrl-right para mover para diferentes desktops. Eu escrevi aqui:

http://www.callum-macdonald.com/2013/04/17/ctrl-left-and-ctrl-right-on-iterm2/


7



bonita! Obrigado por publicar! - Julian A.
BetterTouchTool não é open source e poderia muito bem estar fazendo coisas que você gostaria que não fossem. O cara diz que ele é um estudante, mas ele também poderia ser uma agência de três letras. - revacuate


Na verdade, achei que a solução mais fácil era ir para as configurações do meu perfil (encontradas em Perfis / Chaves), removendo os atalhos do perfil incorreto (como o perfil substitui globalmente no iTerm), no meu caso alt + left e alt + right e depois o global atalhos funcionou perfeitamente para mim!

Além disso, se você estiver usando o OS X, provavelmente é melhor ficar com atalhos no sistema, ou seja, usando alt + left e alt + right para esse propósito, ter um comportamento diferente no terminal pode causar algum tipo de sofrimento.

Além disso, a solução da chmac para usar o Better Touch Tool foi uma maneira elegante de alterar o comportamento do controle + seta apenas no iterma.


6



Na verdade, esta é a melhor solução. É confuso como a maioria de nós vai para Keys aba. Em vez disso, temos que ir para Profiles tab -> Um perfil (por exemplo, padrão) -> chaves. - Paschalis
Esta é definitivamente a solução mais segura e fácil. - revacuate


Eu consertei assim:

No menu superior; vamos para

Profiles 
-> Open profiles... 
-> Edit profiles... (button) 
-> Keys (tab) 
-> Load Preset... (dropdown) 
->  Choose "Natural text editing". Done! :-)

5





Este post ensina isso e outros atalhos como ⌥ ← Excluir para excluir uma palavra:

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/


2



Isso na verdade não responde a pergunta, que é sobre o uso de <ctrl> <left> - DavidPostill♦
Tudo o que você precisa fazer é usar o atalho que atenda às suas necessidades. "<ctrl> <esquerda>" ou o que você quiser. - Sérgio Toledo
Então, por favor, cite as partes essenciais da resposta do (s) link (s) de referência, pois a resposta pode se tornar inválida se a (s) página (s) vinculada (s) mudar (em). - DavidPostill♦


Você precisa entrar no Profiles guia e excluir o mapeamento para alt+esquerda e alt+certo como por padrão, ele gera alguns valores hexadecimais.


1



Isso fez isso por mim! - Philip