Questão Como faço para que as teclas ctrl-arrow movam para frente / para trás uma palavra por vez no Cygwin bash?


Na instalação padrão do Cygwin, usar CTRL-LEFTARROW ou CTRL-RIGHTARROW simplesmente imprime 5C ou 5D em vez de pular uma palavra por vez, conforme o esperado.

As teclas Home / End funcionam corretamente, portanto, o remapeamento deve ser possível.


84


origem


Note que esta questão aborda o Cygwin, mas pode ter aplicação geral em sistemas Unix / Linux. Se você está usando o PuTTY e descobre que as soluções aqui não funcionam para você, dê uma olhada uma pergunta especificamente sobre quais códigos usar para PuTTY. - palswim


Respostas:


Encontrei um solução, postando aqui para a posteridade.

Adicione as seguintes linhas para ~/.inputrc (C:\cygwin\home\<username>\.inputrc):

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Quando terminar, você pode pressionar C-x C-r para reler o .inputrc arquivo para a sessão atual.

Coisas para observar se você quiser outras personalizações semelhantes: 5A e 5B para setas para cima e para baixo e 2x para versões deslocadas.

Os mapeamentos de teclas "oficiais" são descritos no Manual de Referência Bash, mas para uma maneira rápida de encontrar um mapeamento chave, no bash:

  1. tipo Ctrl+V
  2. digite a sequência de teclas em que você está interessado (por exemplo, Alt+). Isso imprimiria ^[[1;3C
  3. remover o principal ^[ e substitua-o por \e fazer \e[1;3C
  4. coloque este valor no seu .inputrc Arquivo.

117



Alguns códigos de teclado não estão aparecendo como <kbd> Shift </ kbd> + <kbd> Enter </ kbd>. Como faço para encontrar esses códigos de teclado via Mintty / Windows / Cygwin? - CMCDragonkai


Você pode recarregar o arquivo .inputrc via:

bind -f ~/.inputrc

Fonte


14



Isso é útil, mas não é realmente uma resposta para a pergunta - talvez seria melhor como um comentário para outra resposta? - Martin Thompson
Adicionado à resposta do @ Tom acima - dovetalk


Caso você queira algo que funcione sem configurações de ambiente personalizadas, por exemplo, quando estiver trabalhando em uma conta compartilhada em um servidor ou apenas para limitar a quantidade de configuração personalizada sendo usada, o Bash tem internos para isso que funcionam no Cygwin.

Nomeadamente Alt+f para avançar e Alt+b para retroceder.

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html


7



Obrigado, embora esteja ciente dessas chaves e as use. Eu também só uso as teclas de seta quando é conveniente e não quero que eles vomitem códigos de escape em vez de fazer o que é sensato e mover o cursor. - Tom


Ao usar o rxvt com cygwin, descobri que a solução neste link funcionou para mim: control_arrow_keys_in_rxvt.

Adicione as seguintes linhas para ~/.inputrc :

"\eOd": backward-word
"\eOc": forward-word

0



É quando uma camada adicional está mudando as chaves transmitidas (mas não responde à pergunta). - Nikana Reklawyks


Esta solução também funciona msys2 consoles:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Basta colocar essas combinações de teclas no .inputrc Arquivo.


0