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?
encoding
alteraçõ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 cat
e 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 l
para ver a saída de <Ak> e <Aj> antes de configurar o mapeamento. No meu caso, <Aj> é ∆
e <Ak> é˚
Use Option as Meta Key
ou 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-notation
descreve 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 nore
variante 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 d
agora 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
Option
tecla esquerda ( ⌥
) configurada como Esc+
em iTerm2, eu poderia mapear alt+q
para 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 ^[x
comandos (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, a
por 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: