Mapeamento Tecla Alt esquerda no Vim?

12

Eu sou capaz de mapear a combinação de teclas Alt Direita + Seta para a Esquerda com <a-left> ou <m-left> . Mas eu não sou capaz de mapear a tecla Alt esquerda .

Existe uma maneira de fazer isso?

Editar:
Apenas para clareza <a-left> significa Alt + Seta para a esquerda .
A questão importante aqui é qual é a diferença entre e Alt Direita da perspectiva de keymappings no Vim?

    
por Yogesh Arora 18.03.2010 / 22:59

1 resposta

14

Se você fizer :help key-notation no vim, verá que os únicos modificadores que o Vim reconhece são shift, control, alt / meta (tratados como sinônimos) e a tecla de comando do Mac. Você poderia facilmente usar o xmodmap para mapear sua chave alt direita para um novo modificador que o Vim reconhece, mas talvez nenhum desses modificadores esteja sendo usado por você no momento. (Não sei se é possível fazer com que os sistemas Linux representem o modificador de chave de comando do Mac como o Vim o vê.) Há outros modificadores que o X reconhece: Mod4, Hyper e assim por diante, mas parece que o Vim acabou de ganhar. Não os vejo, ou pelo menos não podem ligá-los.

Outra opção é organizar o RightAlt-Left Arrow para gerar uma sequência de teclas específica, por exemplo, Esc- [MyUniqueGarbageHere. Isto é certamente factível, e então você poderia dizer ao Vim para vincular isso a qualquer ação que você goste, o que é diferente do que a sua chave alt esquerda está vinculada. A desvantagem disso é que você precisa fazer isso para cada combinação RightAlt + Key individualmente. Mas se você quer apenas fazer isso por algumas chaves, é muito viável.

Exatamente como você o implementa dependerá se você estiver falando sobre o uso do Vim no X ou em um console do Linux ou em algum outro ambiente. Eu suponho que você está falando sobre usá-lo no X.

  1. Use o xmodmap para vincular o RightAlt a, digamos, o Mod3. Providencie para que isso seja executado uma vez quando sua sessão X for iniciada. Algumas distribuições já possuem um arquivo / etc / X11 / xinit / xinitrc que carregará arquivos em locais específicos contendo comandos xmodmap.

    xmodmap -e "remove Mod1 = Alt_R" -e "add Mod3 = Alt_R"
    
  2. Eu uso o terminal urxvt. Permite que se definam atalhos de teclado em um arquivo do tipo Xresources. Você poderia fazer isso em ~ / .config / Xresources; Eu faço isso em ~ / .config / app-defaults / URxvt. Eu colocaria uma linha como essa nesse arquivo (a sintaxe exata é sensível a qual arquivo você colocou):

    URxvt.keysym.Mod3-Left:    3<RAlt-Left>
    

    Agora inicie um novo terminal, digite ctrl-V e digite RightAlt + Left. Você deve ver na linha de comando os caracteres ^ [[< RAlt-Left & gt ;. Funciona? Bom.

  3. No seu ~ / .vimrc, coloque isso:

    set t_Ff=^[<RAlt-Left>
    

O '^ [' aqui é um caractere de escape único. Cada um dos outros caracteres ('<', 'R', 'A', etc.) são eles mesmos. Use o prefixo de chave "literal" do vim, seguido por um escape, para inserir o '^ [' (esqueço que a tecla "literal" é por padrão --- também ctrl-V, talvez?) T_Ff é apenas uma entrada de terminal não utilizada . Outro é t_Fg. Você pode usar :set termcap no vim para ver quais entradas de terminal estão atribuídas e apenas usar t_XX para algum XX que não esteja em uso. Siga a linha .vimrc apresentada acima com as seguintes:

    map <t_Ff> whatever-vim-keys-you-want-it-mapped-to
    map! <t_Ff> whatever-vim-keys-you-want-it-mapped-to

Também é possível fazer diretamente:

    map ^[<RAlt-Left> whatever-vim-keys-you-want-it-mapped-to

No entanto, encontrei a técnica que usa uma entrada terminal inativa para trabalhar de forma muito mais confiável.

Eu fiz muitas suposições aqui: que você está usando Linux, X e assim por diante. Se você estiver usando um programa de terminal diferente do que o urxvt, ele pode ou não fornecer técnicas de encadeamento de teclas eficientes o suficiente para fazer o que eu descrevi. Se você escolher chaves menos exóticas, ainda poderá fazer algo como descrevi aqui. Por exemplo, você pode organizar para que o RAlt-Left seja vinculado ao F21 e, em seguida, vá de lá. Deixe-nos saber quais são suas exigências.

    
por 08.04.2010 / 05:59