Vim editor
" ( O O )
" ====oOO==(_)==OOo=====
" °v°
" /(_)
" ^ ^
Uma excelente referência para quem quer aprender a usar o vim pode ser acessado neste link:
Dica inicial
Definindo o vim como editor padrão
coloque dentro do seu arquivo .bashrc
export EDITOR=vim
export VISUAL=vim
Tabela de dicas
atalho | ação |
:w | salva o arquivo atual |
^wq | fecha arquivo salvo |
gUiw | torna maiúscula uma palavra |
gUU | torna maiúscula uma linha |
^r^a | coloca a palavra sob o cursor no comando |
Deletando
atalho | ação |
dd | deleta uma linha |
3dd | deleta 3 linhas |
3dw | deleta 3 palavras |
Copiando
atalho | ação |
yy | copia uma linha |
2yy | copia duas linhas |
yip | copia o parágrafo atual |
"+y | copia para a área de transferência |
^y | repete a linha superior |
Usando registros
"ayy | copiaa linha atual para o registro a |
"ap | cola o conteúdo do registro a na posição atual |
"*yy | leva para a área de tranferência |
Movendo-se
atalho | ação |
gg | vai para a primeira linha do arquivo |
G | vai para a última linha |
:23 | vai para a linha 23 |
ma | cria uma marca 'a' |
`a | vai para a marca 'a' |
^f | coloca o cursor no topo da tela - avança |
^b | coloca o cursor na base da tela - recua |
control-o | retrocede na lista de saltos |
control-i | avança na lista de saltos |
g, | vai para a modificação mais recente |
g; | vai para a modificçaão mais antiga |
gf | abre o arquivo sob o cursor |
'0 | abre o último arquivo editado |
'1 | abre o penúltimo arquivo editado |
Indentando
>> .......... indenta a linha atual
>ip ......... indenta o parágrafo atual
^t .......... indenta em "modo insert"
^d .......... remove indentação em "modo insert"
Trabalhando com janelas
Atalho | Ação |
^wn | nova janela |
^wv | abre nova janela na vertical |
^wc | fecha a janela atual |
^wk | janela acima |
^wj | janela abaixo |
^w+ | aumenta o tamanho da janela atual |
^wq | fecha janela atual |
^wo | torna janela atual a única na tela |
^wr | troca janelas de posição |
Editando multiplos arquivos
vim * | abre todos os arquivos do diretório atual |
:bufdo %s/caza/casa/e | substitui caza por casa em toso os arquivos abertos |
:wall | salva todos os arquivos abertos |
:qall | fecha todos os arquivos abertos |
:bn | vai para o próximo arquivo (buffer) |
:bp | vai para o arquivo anterior |
:wn | salva o arquivo atual e vai para o próximo |
:wp | salva o arquivo atual e vai para o anterior |
Modos de operação
Atalho | Ação |
^[ | sai do modo insert |
^L | sai do modo insert |
Buscas
Atalho | Ação |
/palavra | busca 'palavra' |
// | repete a última busca |
/palavra/e | busca palavra e vai para o final da mesma |
n (modo normal) | repete a última busca |
. (modo normal) | repete a última ação |
Regex para validar IP
postarei a expressão em breve!
Exibindo o valor decimal/hexadecimal do caractere sob o cursor
Pressione ga em modo normal
/forum(_.)*pent busca em possível multilinha
/fred_s*joe/i : qualquer espaço em branco incluindo nova linha
/fred|joe : busca por FRED OU JOE
v or very magic (usually) reduces backslashing
/codes(n|s)*where : normal regexp
/vcodes(n|s)*where : very magic
File explorer
" atalho para o gerenciador de janelas :Vex
" Abrir com explorer em nova janela
let g:netrw_altv = 1
map <F2> <esc>:vne .<cr><bar>:vertical resize -40<cr><bar>:set nonu<cr>
Imprimindo
:ha
:ha!
Remover duas ou mais linhas vazias entre parágrafos diminuindo para uma só linha vazia.
:%s/(^n{2,})/r/g
Removendo tags html
:%s/<[^>]*>//g
Mapeamento para limpar o buffer de buscas
É um mapeamento muito bom pois ao invés de desabilitar o destaque colorido ele apenas
limpa o buffer de buscas
nno <S-F11> <esc>:let @/=""<CR>
Inserindo a ultima busca, comando ou nome do arquivo no texto
<c-r>/
Para inserir o nome do arquivo faça:
<c-r>%
Para inserir o último comando no texto:
<c-r>:
Para repetir exatamente a última inserção
<c-a>
Para complementar a inseração de linhas
<c-x><c-l>
Para complementar com palavras
<c-x><c-p>
Para complementar à partir do dicionário
<c-x><c-k>
Para repetir linha acima caractere por caracte
<c-y>
Para repetir linha abaixo caractere por caractere
<c-e>
Repetindo a última substituição
&
Inserindo um registrador em modo normal
Para criar um registrador em modo normal faça:
"ayy ........... copia a linha atual para o registrador a
"ayiw .......... copia a palavra atual para o registrador a
em modo insert faça:
Control + r + a
Procurando padrões e inserindo em outro arquivo:
:'a,'b/^Padrão/ . w! >> ~/tmp/busca.txt
Tornando maiúsculo todo o texto
gggUG
Para tornar maiúsculo apenas um trecho faça
:5,25 normal gUU
Ou
:5,25/./U&/g
Contando ocorrências de um padrão
fonte: http://aurelio.net/doc/vim/vim-dicas-ivan.html
:let i=0|%g/{padrao}/let i=i+1
:echo i
Usando comandos externos no vim
Para ordenar alfabeticamente todas as linhas de um arquivo:
:%!sort
Para ordenar as linhas de um arquivo, com múltiplos campos separados pelo caractere ":", pelo terceiro campo:
:%!sort -t ":" -k2
3. Para ordenar as linhas de um arquivo, com múltiplos campos separados pelo caractere ":", pelo segundo campo, em ordem reversa:
:%!sort -r -t ":" -k2
7 hábitos para edição efetiva de textos
Mova-se rapidamente
Use /padrão ics hls % marcas saltos
Não digite duas vezes
Use macros, comandos de substituição :%s/isto/aquilo/g * . n N
Corrija o que está errado
Use abreviações iab slas Sérgio Luiz Araújo Silva
Detecte ineficiência
Encontre um jeito melhor de fazer
Faça disto um hábito
Produza textos estruturados
Exemplos:
usando o comando bufdo, macros e asterisco as coisas acontecem mais rápido no vim
Hábito 1 - Moverse rapidamente no documento
- user marcas
- use buscas /
- use o 'n' next
- use o asterisco (muito) e hls (busca com cores)
- use os folders
- use o autocomplemento 'tab' ou seja não digite duas vezes
- use as abreviações no vimrc
Versão 7
O vim em sua mais nova versão agora suporta abas, basta fazer
:tabnew ~/arquivo
:tabnext
:tabprevious
:tabclose
Como executar uma macro em vários arquivos no vim?
Volta e meia alguém pergunta como editar vários arquivos
no vim, mas se a pergunta fosse:
Como executar uma macro em vários arquivos no vim?
Resposta:
1º Obviamente gravar a macro (help complex-repeat)
2º :bufdo exe "normal @q" | w
:wall .......... salva todos
:qall .......... fecha todos
Segredos úteis do vim
O comando abaixo procura por /teste/ deleta
e cola na linha 9
:g/teste/d | 9 normal p
O comando abaixo procura um padrão, adiciona um outro padrão ao fina
da referida string e deleta as 15 linhas subsequentes.
:g/(ISOE456A1)$/ | s/(ISOE456A1)$/1teste/ | normal 16J | 0elD
Removendo os finais de linha do DOS/Windows ^M
:%s/r//g
Comandos globaix
:rg/p/c↵ .... executa comando Ex 'c' na faixa 'r' onde padrão 'p' combinar
Folders - dobras
O recurso de folding do editor Vim, serve para organizar melhor um texto ou código fonte de um programa, pois com ele cria-se um "resumo" de partes do texto.
Vim folding commands
zf#j creates a fold from the cursor down # lines.
zf/string creates a fold from the cursor to string .
zj moves the cursor to the next fold.
zk moves the cursor to the previous fold.
zo opens a fold at the cursor.
zO opens all folds at the cursor.
zm increases the foldlevel by one.
zM closes all open folds.
zr decreases the foldlevel by one.
zR decreases the foldlevel to zero -- all folds will be open.
zd deletes the fold at the cursor.
zE deletes all folds.
[z move to start of open fold.
]z move to end of open fold.
Para que o vim preserve os folders use no seu ~/.vimrc
au BufWinLeave * mkview
au BufWinEnter * silent loadview
Vim tips
Gostaria de saber como posso fazer para o seguinte conteúdo:
texto
texto
texto
fique:
001_texto
002_texto
003_texto
Marque a regiao desejada e:
:let i=1 | '<,'>g/^/s//=printf("%03d_",i)/ | let i=i+1
If you're finding that 'zo' and 'zc' are hard to type or remember, you could use <spacebar> and <backspace> to open and close folds:
nnoremap <space> zo
nnoremap <backspace> zc
Or, you could just use the <spacebar> to do both:
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
Referências
Comments (0)
You don't have permission to comment on this page.