Mapeamentos
Mapeamentos permitem criar atalhos de teclas para quase tudo. Tudo depende da criatividade do usuário e do quanto conhece o Vim, com eles podemos controlar ações com quaisquer teclas, mas antes temos que saber que para criar mapeamentos, precisamos conhecer a maneira de representar as teclas e combinações. Alguns exemplos:
| Notação | Tecla mapeada |
|---|---|
<c-x> |
Ctrl-x |
<left> |
seta para a esquerda |
<right> |
seta para a direita |
<c-m-a> |
Ctrl-Alt-a |
<cr> |
Enter |
<Esc> |
Escape |
<leader> |
normalmente \ |
<bar> |
| pipe |
<cword> |
palavra sob o cursor |
<cWORD> |
palavra sob o cursor, delimitada por espaços |
<cfile> |
arquivo sob o cursor |
<sfile> |
arquivo sendo carregado com :source |
<up> |
equivale clicar em `seta acima' |
<m-f4> |
a tecla alt (m) mais a tecla f4 |
<c-f> |
Ctrl-f |
<bs> |
backspace |
<space> |
espaço |
<tab> |
tab |
No Vim podemos mapear uma tecla para o modo normal, realizando determinada operação e a mesma tecla pode desempenhar outra função qualquer em modo de inserção ou comando, veja:
" mostra o nome do arquivo com o caminho
map <F2> :echo expand("%:p")<cr>
" insere um texto qualquer
imap <F2> Nome de uma pessoa
i, assim como para o modo “comando” : começa
com c no caso cmap. O comando :echo pode ser abreviado
assim: :ec.
Recarregando o arquivo de configuração
Cada alteração no arquivo de configuração do Vim só terá efeito na próxima vez que você abrir o Vim a menos que você coloque isto dentro do mesmo
" recarregar o vimrc
" Source the .vimrc or _vimrc file, depending on system
if &term == "win32" || "pcterm" || has("gui_win32")
map ,v :e $HOME/_vimrc<CR>
nmap <F12> :<C-u>source ~/_vimrc <BAR> echo "Vimrc recarregado!"<CR>
else
map ,v :e $HOME/.vimrc<CR>
nmap <F12> :<C-u>source ~/.vimrc <BAR> echo "Vimrc recarregado!"<CR>
endif
<F12> em modo normal e as alterações passam a
valer instantaneamente, e para chamar o vimrc basta usar.
,v
inoremap \& &
" <lt> representa o caractere `<', que sozinho iniciaria
" o nome de uma tecla especial
inoremap \<lt> <
inoremap \> >
inoremap \. ·
Veja este outro mapeamento:
map <F11> <Esc>:set nu!<cr>
<cr>
ao final representa um Enter.
Limpando o “registrador” de buscas
A cada busca, se a opção ‘hls’1 estiver habilitada o Vim
faz um destaque colorido, para desabilitar esta opção pode-se criar um
mapeamento qualquer, no caso abaixo usando a combinação de teclas
<S-F11>.
nno <S-F11> <Esc>:let @/=""<CR>
Shift-F11 limpe o “registrador” de buscas
Destacar palavra sob o cursor
nmap <s-f> :let @/=expand("<cword>")<CR>
s-f corresponde a Shift-f.
Contar ocorrências de uma palavra
" contagem de ocorrências de uma palavra (case insensitive)
" busca somente ocorrências exatas
nmap <F4> <esc>mz:%s/\c\<\(<c-r>=expand("<cword>")<cr>\)\>//gn<cr>`z
" busca parcial, ou seja acha palavra como parte de outra
nmap <s-F4> <esc>mz:%s/\c\(<c-r>=expand("<cword>")<cr>\)//gn<cr>`z
Remover linhas em branco duplicadas
map ,d <Esc>:%s/\(^\n\{2,}\)/\r/g<cr>
,d
| Comando | Descrição |
|---|---|
map |
mapear |
,d |
atalho que queremos |
<Esc> |
se estiver em modo de inserção, sai |
: |
em modo de comando |
% |
em todo o arquivo |
s |
substitua |
^ |
começo de linha |
\n |
quebra de linha |
\{2,} |
duas ou mais vezes |
\r |
trocado por \r Enter |
g |
globalmente |
<cr> |
confirmação do comando |
As barras invertidas dos quantificadores podem ser dispensadas usando o
modo very magic, indicado por \v no início do padrão:
map ,d :%s/\v(^\n{2,})/\r/g<cr>
\{2,} ainda precisa da barra invertida.
Mapeamento para Calcular Expressões
Os mapeamentos abaixo exibem o resultado das quatro operações básicas
(soma, subtração, multiplicação e divisão). O primeiro para o modo
normal no qual posiciona-se o cursor no primeiro caractere da expressão
tipo 5\9 e em seguida pressiona-se
“Shift-F1”, o segundo para o modo insert em
que, após digitada a expressão pressiona-se o mesmo atalho.
" calculadora
map <s-f1> <esc>0"myEA=<c-r>=<c-r>m<enter><esc>
imap <s-f1> <space><esc>"myBEa=<c-r>=<c-r>m<enter><del>
Mapeamentos globais
Podemos fazer mapeamentos globais ou que funcionam em apenas um modo:
map - funciona em qualquer modo
nmap - apenas no modo Normal
imap - apenas no modo de Inserção
" tem que estar em modo normal!
nmap <C-Down> ddp
nmap <C-Up> ddkP
" salva com F9
nmap <F9> :w<cr>
" F10 - sai do Vim
nmap <F10> <Esc>:q<cr>
Convertendo as iniciais de um documento para maiúsculas
" MinusculasMaiusculas: converte a primeira letra de cada
" frase para MAIÚSCULAS
nmap ,mm :%s/\C\([.!?][])"']*\($\|[ ]\)\_s*\)\(\l\)/\1\U\3/g<CR>
" Caso queira confirmação coloque uma letra ``c'' no final da
" linha acima:
" (...) \3/gc<CR>
-
hls é uma abreviação de highlight search ↩