Problema terminal com as teclas Ctrl + Seta e Shift + Seta


10

Estou executando o Mavericks em um novo Macbook Pro. Quando uso as teclas Ctrle Shiftjuntamente com as teclas de seta, recebo algum tipo de código de tecla como saída no terminal. Tenho certeza de que esse problema é novo e que não aconteceu alguns dias atrás. Mas não tenho 100% de certeza. Enfim, é isso que acontece:

Se eu pressionar Ctrl+ (Seta para a esquerda), ;5Dserá emitido no terminal. Similarmente:

  • CtrlSaídas + (seta para a direita);5C
  • ShiftSaídas + (seta esquerda);2D
  • ShiftSaídas + (seta para a direita);2C

Como mencionei, tenho certeza de que, até hoje, eu poderia usar esses atalhos para alternar entre palavras e selecionar texto. Alguém viu isso antes? Eu já examinei algumas das perguntas existentes sobre atalhos de teclas de seta, mas não encontrei referências a esse problema exato.

Além disso, observe que desativei o atalho de teclado que se move entre as áreas de trabalho usando as Ctrlteclas de seta +.


Suas teclas de seta são remapeadas em algum lugar para usar \],-(o equivalente ascii de hex 5C 5D 2C 2D).
1

Você se importaria de elaborar? Eu sou muito novo no OSX. Onde eu procuraria esses remapeamentos?
Henrik Söderlund

Respostas:


8

O mesmo acontece nas minhas VMs 10.9 e 10.8. As setas de controle e as setas de deslocamento não fazem nada por padrão no bash. Onde você estava usando as teclas Shift para selecionar o texto? emacs ou vim?

Se você deseja usar control-left e control-right para mover entre palavras no bash, adicione estas linhas a ~/.inputrc:

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

Para usar as setas Shift no Emacs, mapeie shift para cima \e[1;2A, shift para baixo \e[1;2B, shift para a direita \e[1;2Ce shift para a esquerda para \e[1;2D. Se pressionar Shift-up resultar em uma mensagem como <select> is undefined, tente configurar TERMpara xterm-vt220.


Acho que posso estar errado ao usar as setas do teclado para selecionar o texto. Sou desenvolvedor com 13 anos de experiência, mas esta é minha primeira vez na OSX. Muito confuso até agora.
Henrik Söderlund

Descobri a coisa .inputrc. Procurei o arquivo em todos os lugares até que percebi que precisava criá-lo. :) Agora posso alternar entre palavras novamente. Então, obrigado por isso, estou marcando isso como a resposta. Apenas mais algumas perguntas, por isso estou 100% claro: 1: Agora mudei para o uso do iTerm2. Existe alguma maneira, usando .inputrc ou não, para obter Shift + Esquerda e Shift + Direita para selecionar texto no iTerm2? 2: Você mencionou emacs e vim. Esses não são apenas editores de texto? Como eu os usaria como um terminal?
Henrik Söderlund

Não conheço nenhuma maneira de fazer com que shift-left e shift-right modifiquem a seleção no iTerm 2. Pensei que você poderia tê-las usado apenas no Emacs.
Lri

Bem. Vou ter que viver sem ele por enquanto. Obrigado!
Henrik Söderlund

1
Ele não funciona nos macos Sierra, Shift + Seta para a direita ou Shift + Seta para a esquerda não faz nada.
Alessandro C

3

Ctrl + Esquerda / Direita estão presentes no Terminal (macOS 10.12) por padrão (Preferências → Perfis → Teclado). Tentei adicionar Shift-Up / Down, ~/.inputrcmas nada aconteceu.

~/.inputrc:

"\e[1;2A": shift-up
"\e[1;2B": shift-down

Em vez disso, adicionei Shift Up / Down programaticamente em Preferências do terminal. O problema é que isso é armazenado por perfil , dos quais o macOS tem uma dúzia por padrão, então você precisa fazer um loop sobre todos os perfis (um nomeado Oceanaqui) para adicionar as chaves para todos os perfis disponíveis. Eu não sei se plutilou defaultster alguma mágica para fazer isso fácil, ou se você tem que usar um parser XML.

~/Library/Preferences/com.apple.Terminal.plist:

"Window Settings" = {
  Ocean = {
    keyMapBoundKeys = {
      "$F700" = "\033[1;2A";
      "$F701" = "\033[1;2B";

-1

Uma alternativa:

Nas preferências do Terminal, vá para Avançado e desmarque 'Colar novas linhas como retornos de carro'.

Em seguida, use Sublime para escrever com

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.