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.
-
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"
-
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.
-
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.