Tentei mapear como adicionando a linha abaixo a .vimrc, mas não funcionou. Verifiquei se o .vimrc é carregado pelo Vim.
map <Alt-D> <C-D>
existe algum erro neste mapeamento?
Tentei mapear como adicionando a linha abaixo a .vimrc, mas não funcionou. Verifiquei se o .vimrc é carregado pelo Vim.
map <Alt-D> <C-D>
existe algum erro neste mapeamento?
encodingalterações após a execução do mapeamento, o que você obtém com as teclas Alt pode não corresponder ao que você definiu inicialmente.
Respostas:
Para usuários de Mac: para mapear ALT + hjkl, use o caractere real gerado (descubra qual caractere usando a combinação enquanto no modo INSERT), por exemplo, com meu teclado eu obtenho:
<ALT+j> ==> ª
<ALT+k> ==> º
e assim por diante. Solução encontrada aqui no StackOverflow.
Usei isso para mover as linhas para cima e para baixo com ALT + k \ j, usando isso no meu .vimrc:
nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==
inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi
vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv
conforme explicado aqui .
Espero que seja útil, aproveite o Vim :)
ADENDO DE Dylan_Larkin (2019): Para que funcione em um Mac, " Use Option as Meta Key " deve ser DESLIGADO em Terminal-> Preferences-> Keyboard
cat. Basta digitar cate dentro da janela do gato a combinação de teclas que você deseja. Descobri que alt + colchetes é 'e “no meu mac.
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n lpara ver a saída de <Ak> e <Aj> antes de configurar o mapeamento. No meu caso, <Aj> é ∆e <Ak> é˚
Use Option as Meta Keyou no perfil do iTerm ⌥ key to Esc+irá se comportar da maneira tradicional (como no Linux / Unix). Então você não precisa definir no Vim o mapa para <^[j>, apenas mapeá-lo para <A+j>ou <M+j>e ele funciona.
:help key-notationdescreve qual formato precisa ser usado para mapear diferentes chaves. No caso de alt, você pode usar <A-ou <M-. Portanto, seu mapeamento seria
map <M-d> <C-d>
Eu também recomendo usar a norevariante de :map(por exemplo, noremap) a menos que você queira permitir explicitamente que o lado direito seja reavaliado para mapeamentos.
<A-d>. Você provavelmente precisará alterar as configurações do seu terminal para que ele envie <A-d>como <Esc>d.
Não tenho mais certeza se é "possível". Por favor, leia a atualização abaixo.
Sim, você pode até mesmo no vim terminal, mas não há nenhuma verdadeira captura toda resposta. Basicamente, você deve seguir duas etapas:
Certifique-se de que a <M-d>notação existe e mapeie exatamente as entradas do seu terminal ( ^[é o caractere de escape):
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
Mapeie algo para sua combinação recém-"criada":
noremap <M-d> :echo "m-d works!"<cr>
Entendendo como funciona, você pode expandir esse "truque" para outras combinações "estranhas", por exemplo, estou usando cupim, e o vim não reconhece <S-F1>, usando cat I get ^[[1;2P. Então, no meu vimrc eu faço:, execute "set <S-F1>=\e[1;2P"e então posso mapeá-lo para qualquer coisa.
Nota: Não sei por que, mas para algumas pessoas usando \<Esc>obras em vez de \e.
Atualização (fevereiro de 2016)
Dependendo do terminfo que seu terminal executa, talvez você possa ... na maioria dos terminais, "alt + h", por exemplo, é mapeado ^[h, que é: "escape + h". Portanto, ele pode substituir as chaves. Acabei de tentar (novamente) e parece funcionar, mas acredito que é uma implementação com muitos bugs e propensa a erros.
No entanto, para os corajosos, aqui está um plugin experimental:
execute "set...coisas, você pode apenas usar diretamente set <M-d>=^[d. O ^[é na verdade um caractere de escape inserido com C-v-Esc. Isso era necessário no rxvt / urxvt, mas o xterm não deveria precisar de tratamento especial. Mais informações sobre este tópico no wiki do vim .
<Esc>então dagora faz a mesma coisa como <Alt>+ d. Além disso, você pode fazer isso em uma linha com Ctrl-v, <Esc>conforme aqui .
Tecla Alt do mapa no Vim no Mac OSx:
Comece visualizando o código-chave que seu terminal está enviando para o vim:
$ sed -n l
^[[1;9D
No exemplo acima, executei o comando e pressionei Alt + Left.
A ^[[1;9Dé a sequência de escape enviada ao vim, para que possamos utilizá-la para nosso mapeamento.
map <Esc>[1;9D
Optiontecla esquerda ( ⌥) configurada como Esc+em iTerm2, eu poderia mapear alt+qpara sair do vim: nnoremap <silent> <Esc>q :qa!<cr>
Seu terminal pode não transmitir "corretamente" o Alt-D. Você pode usar CV para realmente obter a sequência de escape real enviada ao Vim e usá-la para criar seu mapeamento. Ou seja, edite seu .vimrc e substitua o real digitando a seguinte sequência "CV Alt-D" para que você tenha a sequência de escape correta em seu vimrc. Isso não funcionará se o seu terminal não enviar nada para o vim.
Meu terminal produziria ^[xcomandos (por exemplo, para alt-x). O que o fez funcionar dentro do Vim foi este pequeno script de vim.wikia.com :
for i in range(97,122)
let c = nr2char(i)
exec "map \e".c." <M-".c.">"
exec "map! \e".c." <M-".c.">"
endfor
Adicione a .vimrc para corrigir todos os mapeamentos de teclas alt.
nnoremap <Esc>j :m .+1<CR>==e semelhante ...
Olá, após nenhuma boa solução depois de anos testando todos os itens acima no mac, continuei pesquisando.
Aqui está minha solução:
Para criar uma combinação de teclas incluindo Alt, você deve declarar a combinação no teclado de preferência e usar essa combinação no arquivo de configuração do vim (marque a opção de usar como tecla meta).
A saída deve ser um caractere incomum (não, apor exemplo) para que você não substitua um caractere regular.
No exemplo abaixo você deve ser capaz de vim com ALT-Up.
configuração vim:

configuração mac:
