Se você faz :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ê pode facilmente usar o xmodmap para mapear sua tecla alt direita para um novo modificador que o Vim reconheça, 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 da chave de comando do Mac como o Vim vê.) Existem 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 os posso vincular.
Outra opção é organizar a seta RightAlt-Left para gerar uma sequência de teclas específica, por exemplo, Esc- [MyUniqueGarbageHere. Isso é certamente possível, e então você pode dizer ao Vim para vincular isso a qualquer ação que desejar, diferente da sua tecla alt esquerda. A desvantagem disso é que você precisa fazer isso para cada combinação RightAlt + Key individualmente. Mas se você quiser fazer isso por algumas chaves, é muito viável.
A maneira exata de implementá-lo dependerá de você estar falando sobre o uso do Vim no X ou em um console Linux ou em algum outro ambiente. Suponho que você esteja falando sobre usá-lo no X.
Use xmodmap para ligar o RightAlt, digamos, ao Mod3. Organize 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 carrega arquivos em locais específicos que contêm comandos xmodmap.
xmodmap -e "remove Mod1 = Alt_R" -e "add Mod3 = Alt_R"
Eu uso o terminal urxvt. Ele permite definir combinações de teclas 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ê a colocou):
URxvt.keysym.Mod3-Left: \033<RAlt-Left>
Agora inicie um novo terminal, digite ctrl-V e digite RightAlt + Left. Você deve ver na linha de comando os caracteres ^ [[<Rota-esquerda>. Funciona? Boa.
No seu ~ / .vimrc, coloque o seguinte:
set t_Ff=^[<RAlt-Left>
O '^ [' aqui é um único caractere de escape. Cada um dos outros caracteres ('<', 'R', 'A' etc.) são eles próprios. Use o prefixo de chave "literal" do vim, seguido de uma fuga, para inserir o '^ [' (eu esqueço o que a chave "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 do terminal estão atribuídas e apenas usar t_XX para alguns XX que não estão 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, eu encontrei a técnica que usa uma entrada de terminal inativa para funcionar com muito mais confiabilidade.
Fiz várias suposições aqui: você está usando Linux, X e assim por diante. Se você estiver usando um programa de terminal diferente do urxvt, ele pode ou não fornecer técnicas poderosas de combinação de teclas o suficiente para fazer o que descrevi. Se você escolher chaves menos exóticas, ainda poderá fazer algo como eu descrevi aqui. Por exemplo, você pode solicitar que o RAlt-Left seja vinculado ao F21 e depois siga a partir daí. Deixe-nos saber quais são seus requisitos.