Estou tentando mapear a Altchave da seguinte maneira:
:map <A-j> j
:map <A-k> k
mas não funciona (a campainha está ativada Alt + j/ Alt + k).
O que estou perdendo?
Estou usando o Terminal no OSX, o mesmo acontece no Linux remoto.
Em Ctrl + v, Alt + jeu tenho: ?~H~F
( ∆
quando encoding=utf-8
).
Em Ctrl + v, Alt + keu tenho: ?~Z
( ˚
quando encoding=utf-8
).
A execução do vim sem plugins ( -u NONE
) não faz nenhuma diferença.
key-bindings
terminal
kenorb
fonte
fonte
Alt
(pressione, não segure) ej
funciona? Comxterm
pelo menos eu preciso definirmetaSendsEscape
paratrue
que essas seqüências funcionem ... Não sei se você tem o mesmo problema e não uso o OSX, portanto não posso testar ...Alt
, soltarj
ou qualquer outra tecla funciona normalmente. Eu verifiquei e encontrei a opção 'Usar opção como meta-chave' , habilitei e ele funciona agora. Então, a configuraçãometaSendsEscape
fez o truque, obrigado.Respostas:
É assim que eu faço no Linux ou Cygwin:
Primeiro verifique quais caracteres são enviados pelo seu terminal quando você pressiona ALT+ J:
Para fazer isso, eu vou para o console e execute
sed -n l
(você também pode usácat
-lo). Então eu pressiono ALT+ Je vejo que os caracteres na tela são^[j
.Eu substituo
^[
por\e
(porque é isso que é enviado pelo meu terminal quando pressiono esc) e a string final para mim é\ej
.Então eu escrevo para o meu
.vimrc
:E o mapeamento funciona.
fonte
:set <M-j>=\ej
peça. O que devo procurar?:help :set-termcap
Com a ajuda do Carpetsmoker , parece que o Terminal não foi configurado para 'Usar Alt / opção como meta-chave' (isso é especialmente comum nos Terminais da GUI).
Para o Terminal no OSX, está em Preferências -> Configurações -> guia Teclado -> 'Usar opção como meta-chave' . Verificação: Como posso alterar o Terminal para usar a opção como meta-chave? ( Mavericks ).
Para o XTerm, verifique: Configurando o XTerm como Padrão para o Meta Sends Escape, que diz:
Em seguida, mapeamentos padrão com Altchave como:
funciona bem.
Para obter ajuda, consulte:
:h :map-alt-keys
.fonte
:h :map-alt-keys
como outra fonte de informaçõesSemelhante à resposta de Kossak, mas um pouco mais simples, mapeando o pressionamento de teclas literais.
No modo normal, depois de pressionar :ou inserido no seu
.vimrc
, mapeie a entrada diretamente iniciando o mapeamento:depois pressionando Ctrl+ Ve a tecla para gravar, por exemplo, Alt+ ←. Isso será exibido como algo assim:
mas cada
^[
um é um caractere de escape único e literal e o destaque da sintaxe deve mostrar isso. Substitua o escape literal (s) pelo texto<Esc>
e acrescente o comando que você deseja usar:Eu sei que o OP estava mapeando Alt+ letras, mas usei setas para mostrar como fazer isso para algo que pode não ser mapeado por padrão.
fonte
Isso funciona para mim no Ubuntu 16.04 xfce terminal (e alacritty rust terminal)
Defina o gatilho do ultisnip snippet para
Meta-/
(assim como o snippet do emacs)Aqui está agora, eu digito
^[/
no vimNo modo de inserção
Ctrl-V Alt-/
(
Meta
é aAlt
tecla do teclado do meu PC)fonte
Se
Control+V
seguido porALT-x
shows^[x
(digite o terminal), você pode corrigi-lo com este pequeno script em vim.wikia.com :Adicione ao .vimrc para todos os mapeamentos de teclas alt.
fonte