Fazendo o iTerm traduzir a 'meta-chave' da mesma maneira que em outros sistemas operacionais


179

No shell bash com ligação de teclas do emacs, você pode usar a combinação de teclas como Mf, Mb para mover uma palavra para frente ou para trás no prompt do shell, respectivamente. Normalmente, a meta-chave é mapeada para a tecla Alt no Windows e Linux. No entanto, no iTerm, não consegui encontrar uma maneira de mapear essa meta-chave para a opção ou a chave de comando no meu MacBook Pro.

Parece que no OS X, a meta-chave é mapeada por padrão para a chave ESC. Então você pode usar ESC-f, ESC-b no iTerm. No entanto, a chave ESC aparentemente não é prática de usar. Além disso, o iTerm possui uma opção que permite modificar o mapeamento da meta-chave (Favoritos> Perfis> Perfis do teclado> Global> Tecla de opção como ...), essa configuração parece não funcionar.

Portanto, se alguém souber qual é a solução para esse problema, entre em contato.

Eu atualizei para a versão mais recente, 0.9.6.1012, e esse comportamento ainda persiste.

Edit: Alguns esclarecimentos à minha pergunta. A ligação de chave que estou falando é para o shell bash, não no emacs. Acontece que, por padrão, o bash shell também usa a mesma ligação de chave que o emacs.


Depois de mexer com esse problema por um tempo e não conseguir descobrir uma solução. Desisti e mudei para o Terminal agora.
ejel

2
não se esqueça que iterm2 já existe e está tudo bem lá =)
holms

Respostas:


207

Cmd+., Profiles, KeysE escolha Left option Key acts as: +Esc.

Funciona para mim no emacs, embora não tenha certeza se terá outros efeitos indesejáveis.


Eu tentei Option Key como ... com todas as opções, mas nenhuma delas funciona para mim no shell bash. Apenas mostra "?" toda vez que eu pressiono a combinação de teclas meta.
ejel

2
Parece que o seu idioma de entrada deve ser US para que a opção + ESC funcione. + ESC não funcionou para mim quando eu tinha o método de entrada japonês / Romaji selecionado, mas começou a trabalho uma vez eu mudei o idioma de entrada para US
Dominic Cooney

2
Preferências, Perfil, Teclas e escolha a opção Esquerda Tecla atua como: + Esc. Então você terá as duas teclas de opção esquerda E a tecla Esc como meta-chave. Foi o que aconteceu no meu caso.
Cgl12

Com o iTerm 2, essa parece ser a opção recomendada.
ejel

4
No meu teclado externo, eu tive que definir as teclas de opção esquerda e direita para usar Esc+, mesmo usando a tecla de opção esquerda, ele ainda imprimia caracteres estranhos. Isso pode acontecer porque eu uso a opção Modificadores do teclado nas configurações do teclado do Mac para alterar as teclas.
22818 grego

130

Vá para Favoritos> Gerenciar perfis . Em seguida, selecione Perfis de teclado> Global e escolha Opção como meta . Isso funciona para mim na versão 0.9.6.1201.


2
Eu tive que alterar a entrada xterm (OS X) em vez de global, mas está funcionando agora.
Jason Axelson

Não sei por que, na minha máquina, a configuração está quebrada em 0.9.6.1201 e várias outras versões que tentei. No entanto, funciona com a versão mais recente 0.9.6 e 0.10. Portanto, não deve ser um problema agora.
ejel

11
no iTerm2, isso funcionou somente após redefinir as teclas de atalho de perfil para alt+ ->e alt+ <-para enviar seqüência de escape + f/ brespectivamente.
Amirnissim

Eu tive que abrir uma nova sessão de iterm para iniciar
Skurpi 2/14

@SridharRatnakumar Works for iTerm também
Krzysztof Wende

31

Na barra de menus Iterm2 => Preferências => Perfis, escolha a guia chaves e selecione

tecla de opção esquerda atua como + Esc

insira a descrição da imagem aqui

trabalhou para mim também em irssi.


Excelente, isso também funciona na combinação de iTerm2 + tmux
TheJavaGuy-Ivan Milosavljević

8

Também não consegui fazer com que a tecla Alt funcionasse, mas existe uma solução alternativa que a torna pelo menos funcionar para a navegação de palavras através das teclas do cursor:

Vá para a palavra seguinte ou anterior no iTerm usando Alt / Option + teclas de seta esquerda ou direita


2
Para backward-delete-word(⎇-DEL) envie um código hexadecimal 0x17, para pular para o início da entrada (⌘- ←) 0x01e para pular para o final (⌘- →) 0x05.
Lenar Hoyt

5

Eu uso o iTerm2 e, para mim, esta resposta resolveu parcialmente o meu problema:

Cmd+ ,=> Perfis => Teclas e escolha a opção Esquerda A tecla atua como: + Esc .

insira a descrição da imagem aqui

Além disso, tive que ir para Cmd+ ,=> Perfis => Chaves e, na lista Mapeamentos de Chaves, localize as combinações de teclas s: insira a descrição da imagem aquie insira a descrição da imagem aquiclique duas vezes nelas e altere seus atalhos para o seguinte:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

* Certifique-se de selecionar a ação Enviar seqüência de escape .


Isso é realmente útil. Muito obrigado mano!
LeOn - Han Li 28/03

4

Indo toda a ressurreição de zumbis aqui, mas por uma questão de posteridade -

Este post funcionou como você deseja para mim, para Mb e Mf, mantendo 'Option Key as Meta' definido para que você não sacrifique um modificador (eu tenho mapeamentos vim usando meta, pessoalmente).

Em resumo, em seu Perfil de teclado global, adicione dois novos mapeamentos com as configurações:

  1. Chave como código hexadecimal, valor de 62 para b, 66 para f ( man ascii)
  2. Modificador como opção
  3. Ação como sequência de escape de envio, valor b ou f

A única coisa que ainda sinto falta do Terminal.app é Opt-Backspaceexcluir por palavra. Existem outras soluções alternativas para isso, mas estou apenas tentando me treinar para usar Ctrl-w.


Pode ser um novo recurso desde essa resposta, mas você pode mapear um atalho de tecla Global para enviar Ctrl-wquando o Opt-Backspacepressionar.
Steve Buzonas

4

É mais fácil no iTerm2. Vá para preferências-> marcador-> teclado e selecione Opção envia + ESC. No iTerm2, você pode configurar as teclas de opção esquerda e direita separadamente, lembre-se de alterar as duas, se é isso que deseja. Link para o iTerm2: http://sites.google.com/site/iterm2home/


2

Vá para Favoritos> Gerenciar perfis. Em seguida, selecione Perfis de teclado> Global e escolha Tecla de opção como + ESC.

Funciona no iTerm Build 0.9.5.0611 e Build 0.9.6.20090415


Hmm. A configuração parece estar quebrada na minha máquina com essas duas versões também. No entanto, as últimas 0.9.6.20090928 e 0.10 funcionam como esperado.
ejel


0

Tente "exportar LANG = C". Não sou especialista em emacs, mas descobri que isso permite que o emacs no OS X reconheça a tecla Option como a tecla Meta no iTerm,


0

Não conheço o iTerm, mas você pode fazer isso no Terminal. Instruções podem ser encontradas aqui:

Ligações de teclas do Emacs no Mac OS X Leopard


Obrigado. Estou ciente de que posso fazer isso no Terminal. Eu só quero alcançar o mesmo resultado no iTerm. A propósito, o que estou procurando é a ligação de chave no shell bash, não no emacs. Acontece que o bash shell também usa a ligação de teclas emacs.
ejel

0

Aqui está o que funcionou para mim: Favoritos> Gerenciar perfis> Perfis de teclado> Global / xterm> Tecla de opção como + Esc. Com isso, eu posso usar Option + Enter no Midnight Commander e o nome do arquivo / diretório atualmente selecionado aparece na sequência de comandos, como deveria. Chave de opção como Meta não funcionou para mim. Minha compilação do iTerm é 0,10.

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.