Escolar Documentos
Profissional Documentos
Cultura Documentos
Use
Licena de Documentao
Participe
http://code.google.com/p/vimbook
Verso gerada em
8 de Janeiro de 2009
Autores
<voyeg3r@gmail.com>
<daaugusto@gmail.com>
.
.
.
Contedo
1 Introduo
1.1
Dicas iniciais
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Ajuda integrada . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3
Em caso de erros . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4
. . . . . . . . . . . . . . .
1.5
Modos de operao . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6
. . . . . . . . . . . . . . . . . . . .
1.7
Erros comuns . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8
Dicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Movendo-se no documento
2.1
Big words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
Os saltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.3
Copiar e Deletar
10
2.4
Paginando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.5
Usando marcadores . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.6
Marcas globais
13
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Editando
14
3.1
14
3.2
15
3.3
Lista de alteraes
. . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.4
16
3.5
Ordenando
16
3.6
. . . . . . . . . . . . . . . . . . . .
17
3.7
17
3.8
O arquivo alternativo . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.9
. . . . . . . . . . . . .
18
18
18
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
18
3.13 Desfazendo
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
18
3.14 Salvando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
21
21
CONTEDO
3.17.2 Modelines . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
22
4 Folders
24
4.1
Mtodos de dobras . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2
Manipulando dobras
4.3
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
5 Registros
24
25
25
26
5.1
26
5.2
Registros nomeados de 0 a 9 . . . . . . . . . . . . . . . . . . . . .
27
5.3
27
5.4
Registros nomeados de a at z ou A at Z
. . . . . . . . . . .
27
5.5
27
5.6
Registro de expresses . . . . . . . . . . . . . . . . . . . . . . . .
28
5.7
28
5.8
. . . . . . . . . . . . . . . . . . . . . .
28
5.9
28
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. .
29
29
29
30
30
30
. . . . . . . . . . . . . . . .
31
32
5.18 Referncias
32
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Buscas e substituies
33
6.1
6.2
34
6.3
34
6.4
. . . . . . . . . . . . . . . . . .
34
6.5
. . . . . . . . . . . . . . . . . . .
35
6.6
Edies complexas
6.7
Indentando
6.8
36
6.9
. . . . . . . . . . . . . . . . . . . . . . . .
36
36
6.11 Substituies
36
6.12 Exemplos
. . . . . . . . . . . . . . . . . . . . . . . . . .
35
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
37
39
40
40
40
40
. . . . . . . . . . . . . . . . . . . . . . . . .
41
41
CONTEDO
43
7.1
Dividindo a janela
. . . . . . . . . . . . . . . . . . . . . . . . . .
7.2
. . . . . . . . . . . . . . . . . . . . .
43
7.3
Manipulando janelas . . . . . . . . . . . . . . . . . . . . . . . . .
43
7.4
File Explorer
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
7.5
Dicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
8 Repetio de comandos
43
45
8.1
. . . . . . . . . . . . . . . .
8.2
46
8.3
46
8.4
Repetindo substituies
. . . . . . . . . . . . . . . . . . . . . . .
47
8.5
Repetindo comandos . . . . . . . . . . . . . . . . . . . . . . . . .
48
8.6
Scripts Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
8.7
48
8.8
8.9
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
46
48
. . . . . . . . . . . . .
49
. . . . . . . . . . . . . . . . . . . .
49
. . . . . . . . . . . .
9 Comandos externos
49
50
9.1
Ordenando
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2
9.3
. . . . . . .
51
9.4
Beautiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
9.5
Referncias
51
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
50
52
. . . . . . . . . . . . . . . .
52
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
10.3 Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
54
10.2 Comentrios
. . . . . . . . . . . . . . . . . . . .
55
10.6 Mapeamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
55
56
. . . . . . . . . . . . . .
57
. . . . . . . . . . . . . . .
57
. . . . . . . . . . .
57
. . . . . . . . . . . . . . . . . . . .
58
58
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
. . . . . . . . . . .
59
60
60
. . . . . . . . . . . . . . . . . . . . . .
60
60
61
61
CONTEDO
10.8.8 Funo para pular para uma linha
. . . . . . . . . . . . .
path do Vim?
. . . . . . . . . . . .
62
62
63
. . . . . . . . . . . . . . . . . . . . . . . . . .
63
64
10.12Exemplo de menu . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
10.13Outros mapeamentos . . . . . . . . . . . . . . . . . . . . . . . . .
64
. . . . . . . . . . . . . . . . . . . . .
65
10.15Abreviaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
10.16Referncias
66
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
67
. . . . . . . . . . . . . . . .
68
11.3 Dicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
68
69
69
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
70
70
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
71
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
. . . . . . . . . . . . . . . . . . . . . . . . . .
71
. . . . . . . . . . . . . . . . . . . . . . . . . .
72
. . . . . . . . . . . . . . . . .
72
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
13 Plugins
73
73
AT X . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2 Plugin para L
E
AT X . . . . . . . . . . . . . . . .
13.3 Criando folders para arquivos L
E
A
13.4 Criando sees L TEX . . . . . . . . . . . . . . . . . . . . . . . . .
74
74
74
13.7 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
74
74
75
75
75
14 Referncias
. . . . . . . . . . . . . . .
76
Captulo 1
Introduo
O Vim um editor extremamente congurvel, criado para permitir a edio
de textos de forma eciente. Tambm um melhoramento do editor Vi, um
tradicional programa dos sistemas Unix.
Expresses Regulares2 ,
mas GNU/Linux , mas pode ser tambm instalado em outros sistemas, como o
Windows e o Macintosh. O site ocial do Vim :
1.1
http://www.vim.org.
Dicas iniciais
vim meu_texto.txt
1.2
Ajuda integrada
O Vim possui uma ajuda integrada muito completa, so mais de 100 arquivos
somando milhares de linhas. O nico inconveniente o idioma ingls se bem
que muito do meu aprendizado de ingls se deve a este detalhe. Obs: no Vim
1 Ambiente de desenvolvimento
2 http://guia-er.sourceforge.net/guia-er.html
3 http://www.gnu.org/software/emacs/
4 O kernel Linux sem os programas GNU no
Introduo
quase todos os comandos podem ser abreviados, no caso help pode ser chamado por h e assim por diante. Para chamar a ajuda do Vim:
Pressione
<Esc>
e em seguida. . .
<F1>
Siga os links usando o atalho Ctrl-], e para voltar use Ctrl-O.
Se voc estiver realmente desesperado, digite:
:help!
1.3
Em caso de erros
:enew!
ou saia do arquivo sem modica-lo
1.4
A tecla <Ctrl> representada na maioria dos manuais e na ajuda pelo caractere ^ circunexo, ou seja, o atalho
Ctrl-L
aparecer assim:
^L
No arquivo de congurao do Vim, um <Enter> pode aparecer como:
<cr>
Para saber mais sobre como usar atalhos no Vim veja a seo 10.6.1 na pgina
55 e para ler sobre o arquivo de congurao veja o captulo 10 na pgina 52.
Modos de operao
dd
apaga a linha atual, j em modo de insero ele ir se comportar como se voc
estivesse usando qualquer outro editor, ou seja, ir inserir duas vezes a letra d.
Em modo normal pressionar a tecla v inicia uma seleo visual (use as setas
de direo). Para sair do novo visual
<Esc>,
Imagine as letras acima como teclas de direo, a letra k uma seta acima a
letra j uma seta abaixo e assim por diante.
1.6
....
....
....
....
....
....
inicia
inicia
inicia
inicia
inicia
inicia
insero
insero
insero
insero
insero
insero
de
de
de
de
de
de
texto
texto
texto
texto
texto
texto
aps o atual
antes do caractere atual
no final da linha
no comeo da linha
na linha abaixo
na linha acima
Agora comeamos a sentir o gostinho de usar o Vim, uma tecla seja maiscula
ou minscula, faz muita diferena se voc no estiver em modo de insero, e
para sair do modo de insero sempre use
<Esc>.
Normal
Insero
buffers
veja o captulo 5.
Neste modo feita a insero de texto. Para entrar neste modo basta
pressionar a tecla i (
5 No
Para
10
Introduo
r<char> ...... onde char pode ser qualquer caractere
Para trocar caracteres de lugar faa:
Visual
i,a,I,A,o,O
exibido
v ......
v5j ....
V ......
Ctrl-v .
Comando
seleo de caracteres
seleo visual para as poximas 5 linhas
(maisculo) - seleo de linhas inteiras
Seleciona blocos de texto (use setas)
:w
ou para ir para uma linha qualquer:
:100 <Enter>
para acessar
1.7
Erros comuns
Estando em
Estando em
e ten-
tar rolar o documento usando a letra J, o efeito a juno das linhas,
alis um timo recurso quando a inteno de fato esta.
Em
modo normal
tentar digitar
e ao
perceber que nada est sendo digitado, iniciar o modo de insero, digitando por m o que se queria, o resultado que o nmero que foi digitado
inicialmente vira um quanticador par o que se digitou ao entrar no modo
de insero. A palavra aparecer repetida na quantidade do nmero digitado.
um teste
faa
assim:
1.8 Dicas
1.8
11
Dicas
Ctrl-O (comando)
Para repetir o ltimo trecho do modo de insero faa:
i Ctrl-a
Para repetir o ltimo comando
faa:
@:
Para inserir texto da rea de transferncia (caso esteja em modo de insero)
faa:
Shift-insert
Para entrar em modo de edio no mesmo ponto da ltima edio
gi
Para repetir uma seleo (visual)
gv
Para saber mais sobre repetio de comandos veja o captulo 8, na pgina 45.
No Vim cada arquivo aberto chamado de
buffer
na memria. Voc pode acessar o mesmo buer em mais de uma janela, bem
como dividir a janela em vrios buers distintos o que veremos mais adiante.
Captulo 2
Movendo-se no documento
Antes de mergulharmos mais a fundo nas teclas e atalhos de movimentao vamos recapitular um pouco do que foi visto:
Estando em modo normal
i .....
I .....
a .....
A .....
o .....
O .....
<Esc> .
Uma vez no modo de insero todas as letras so, assim como nos outros editores
simples letras, mas lebre-se a tecla mgica para sair do modo de insero :
<Esc>.
k
j
Ou seja, a letra k usada para subir no texto, a letra j para descer, a letra
h para mover-se para a esquerda e a letra l para mover-se para a direita.
A idia que se consiga ir para qualquer lugar do texto sem tirar as mos do
teclado.
2.1
Big words
Para o Vim
palavras-separadas-por-hfen
tanto se voc usar, em modo normal w avanar entre as palavras ele pular
uma de cada vez, no entanto se usar W em maisculo (como visto) ele pular
a a-palavra-inteira :)
2.2 Os saltos
13
2.2
<Esc>
ou use
Ctrl-[ (^[).
Os saltos
gg .... vai para o incio do arquivo
G ..... vai para o final do arquivo
0 ..... vai para o incio da linha
$ ..... vai para o final da linha
yG .... copia da linha atual at o final do arquivo
25gg .. salta para a linha 25
'' .... salta para a linha da ltima posio em que o cursor estava
fx .... para primeria ocorrncia de x
tx .... Para ir para uma letra antes de x
Fx .... Para ir para ocorrncia anterior de x
Tx .... Para ir para uma letra aps o ltimo x
* ..... Prxima ocorrncia de palavra sob o cursor
% ..... localiza parnteses correspondente
`' .... salta exatamente para a posio em que o cursor estava
d$ .... deleta do ponto atual at o final da linha
gi .... entra em modo de insero no ponto da ltima edio
gv .... repete a ltima seleo visual e posiciona o cursor neste local
gf .... abre o arquivo sob o cursor
gd .... salta para declarao de varivel sob o cursor
gD .... salta para declaraao (global) de varivel sob o cursor
w ...... move para o incio da prxima palavra
W ...... pula para prxima palavra (desconsidera hfens)
E ...... pula para o final da prxima palavra (desconsidera hifens)
e ...... move o cursor para o final da prxima palavra
zt ..... movo o cursor para o topo da pgina
zm ..... move o cursor para o meio da pgina
2.3
Copiar e Deletar
14
Movendo-se no documento
5j .....
d5j ....
k ......
5k .....
y5k ....
w ......
5w .....
d5w ....
b ......
5b .....
fx .....
dfx ....
d5j ....
dgg ....
dG .....
yG .....
yfx ....
y5j ....
desce 5 linhas
deleta as prximas 5 linhas
em modo normal sobe uma linha
sobe 5 linhas
copia 5 linhas (para cima)
pula uma palavra para frente
pula 5 palavras
deleta 5 palavras
retrocede uma palavra
retrocede 5 palavras
posiciona o cursor em ``x''
deleta at o prximo ``x''
deleta 5 linhas
deleta da linha atual at o comeo do arquivo
deleta at o final do arquivo
copia at o final do arquivo
copia at o prximo ``x''
copia 5 linhas
) ....
( ....
} ....
{ ....
y) ...
d} ...
def pot(x):
return x**2
E tiver uma referncia qualquer para a funo
pot
pot
normal)
gd
Se a varivel for global, ou seja, estive fora do documento (provavelmente em
outro) use:
2.4 Paginando
15
gD
Quando denimos uma varivel tipo
var = `teste'
e em algum ponto do documento houver referncia a esta varivel e quiser-mos
ver seu contedo fazemos
[i
Na verdade o atalho acima lhe mostrar o ltimo ponto onde foi feita a atribuio
quela varivel que est sob o cursor, uma mo na roda para os programadores
de planto!
Obs: observe a barra de status do Vim se o tipo de arquivo est certo, tipo.
Para detalhes sobre como personalizar a barra de status na seo
??.
ft=python
a busca por denies de funo s funciona se o tipo de arquivo estiver correto
:set ft=python
outro detalhe para voltar ao ltimo ponto em que voc estava
''
2.4
Paginando
Ctrl-f
Ctrl-b
:h jumps .... ajuda sobre a lista de saltos
:jumps ...... exibe a lista de saltos
Ctrl-i ... salta para a posio mais recente
Ctrl-o ... salta para a posio mais antiga
Observao: lembre-se
^o
Avanar na lista de saltos
^i
Abrir o ltimo arquivo editado:
16
Movendo-se no documento
'0
'1
Para pular para uma denio de funo (para mais detalhes veja :h gd)
gd
Para pular para o m do pargrafo faa
}
Para pular para a coluna 10 da linha atual
10|
Pular para denio de uma varivel
[i
*.txt
:wn
Ou gravar um arquivo e voltar ao anterior
:wp
Pode ainda rebobinar sua lista de arquivos :)
:rew[wind]
Ou ir para o primeiro
:fir[ist]
2.5
Usando marcadores
No Vim podemos marcar o ponto em que o cursor est, voc deve estar em
modo normal, portanto pressione
<Esc>
voc estar em modo normal, assim podem pressionar a tecla m seguida de
uma das letras do alfabeto
2.6
Marcas globais
Captulo 3
Editando
Que tal abrir um arquivo j na linha 10 por exemplo?
3.1
x ....
d5x ..
dd ..
5dd ..
dw ..
5dw ..
dl ..
5dl ..
d0 ..
d^ ..
d$ ..
dgg ..
dG ..
D ....
apaga
apaga
apaga
apaga
apaga
apaga
apaga
apaga
apaga
apaga
apaga
apaga
apaga
apaga
Depois do texto ter sido colocado na memria, digite `p' para `inserir' o texto
em uma outra posio. Outros comandos:
18
Editando
d4b .. apaga as quatro palavras anteriores
dfx .. apaga at o prximo ``x''
d/casa/+1 - deleta at a linha aps a palava casa
change
mudana ao
ciw ..............
cip ..............
cis ..............
C ................
3.2
modifica
modifica
modifica
modifica
uma palavra
um pargrafo
uma sentena
at o final da linha
O comando y yank permite copiar uma parte do texto para a memria
sem deletar. Existe uma semelhana muito grande entre os comandos y e os
comandos d:
yy ....
5yy ....
y/pat ..
yw ....
5yw ....
yl ....
5yl ....
y^ ....
y$ ....
ygg ....
yG ....
copia
copia
copia
copia
copia
copia
copia
copia
copia
copia
copia
Digite P (p maisculo) para colar o texto recm copiado na posio onde
encontra-se o cursor, ou p para colar o texto na posio imediatamente aps
o cursor.
3.3
Lista de alteraes
O Vim mantm uma lista de alteraes, para avanar nas alteraes use
g,
Para recuar nas alteraes
g;
Para visualizar a lista de alteraes
:changes
Para mais detalhes
:h changes
19
O Vim como qualquer outro editor muito exigente no que se refere a alteraes
de arquivo. Se voc estiver editando um arquivo e desejar abandona-lo, o Vim
perguntar se quer salvar alteraes, se voc estiver certo de que no quer salvar
o arquivo atual e deseja imediatamente comear a editar um novo arquivo faa:
:enew!
O comando acima uma abreviao de
edit new
:e!
3.5
Ordenando
O Vim 7 passa a ter um comando de ordenao que tambm retira linhas duplicadas
8
9
10
11
12
Voc tentar fazer:
:sort
O Vim colocar nas trs primeiras linhas
10
11
12
Portanto lembre-se que se a ordenao envolver nmeros use:
:sort n
Voc pode fazer a ordenao em um intervalo assim:
:1,15 sort n
O comando acima diz: Ordene numericamente da linha 1 at a linha 15
20
3.6
Editando
Removendo linhas duplicadas
:sort u
3.7
:10,20m $
O comando acima move (`m') da linha 10 at a linha 20 para o nal
$.
:g /palavra/ m 0
Move as linhas contendo 'palavra' para o comeo (linha zero)
:10,20y a
Copia da linha `10' at a linha `20' para o registro `a'
:56pu a
Cola o registro `a' na linha 56
:g/padro/d
O comando acima deleta todas as linhas contendo a palavra `padro'
Podemos inverter a lgica do comando global
g:
:g!/padro/d
No delete as linhas contendo padro, ou seja, delete tudo menos as linhas
contendo a palavra `padro'. Para ler mais sobre o comando global utilizado
nesta seo veja o captulo 6.13.
:7,10copy $
Da linha 7 at a linha 10 copie para o nal Veja mais sobre edio no modo de
comando na seo 6 Buscas e substituies.
3.8
O arquivo alternativo
:e novo-arquivo.txt
Mas no mais que de repente voc lembra Poxa eu queria colocar mais uma
linha no arquivo em que estava Para estes casos use o atalho
Ctrl-6
Dica: Este comando booleano, ou seja, cada vez que voc pressionar o atalho
ele pula para o ltimo arquivo editado!
21
3.10
Ctrl-y
Ctrl-e
Ctrl-x
Ctrl-a
.........
.........
Ctrl-l ..
.........
repete
repete
repete
repete
linha acima
linha abaixo
linhas inteiras
a ltima insero
Para saber mais sobre repetio de comandos veja o captulo 8, na pgina 45.
3.11
3.12
Ctrl-r=
Ctrl-r=5*850
3.13
Desfazendo
u ............ desfazer
U ............ desfaz mudanas na ltima linha editada
Ctrl-r ...... refazer
Para mais ajuda sobre desfazer:
:help undo
3.13.1
Undo tree
um novo
os
22
Editando
Um exemplo didtico
Siga estes passos (para cada passo
Passo 1
<Esc>,
Passo 2
Passo 3
for i in range(10):
print i <Esc>
Passo 4
Passo 5
- Na linha 2 digite
Passo 6
- na linha 3 digite
Esc
<Esc>
cada insero uma ao. Agora usando o atalho de desfazer tradicional u e de
refazer
adas. Em resumo, se voc zer uma nova alterao aps um desfazer (alterao
derivada) o comando refazer no mais vai ser possvel para aquele momento.
Agora volte at a alterao 1 e use seguidas vezes:
g+
e / ou
3.14
Salvando
:w
Para especicar um novo nome para o arquivo, simplesmente digite
23
:saveas nome
salva o arquivo com um novo nome e muda para esse novo arquivo (o arquivo
original no apagado). Para sair do editor, salvando o arquivo atual, digite :x
(ou :wq).
:w ............................
:w 'novonome' .................
:wq ..........................
:saveas nome ..................
:x ............................
:10,20 w! ~/Desktop/teste.txt .
:w! ...........................
:e! ...........................
salva
salvar como
salva e sai'
salvar como
salva se existirem modificaes
sava um trecho para outro arquivo
salvamento forado
reinicia a edio ignorando alteraes
:help writing
3.15
Usando marcas
ma
Onde m indica a criao de uma marca e a o nome da marca. Para pular
para a marca a faa:
`a
Para voltar ao ponto do ltimo salto
''
Para deletar de at a marca a (em modo normal)
d'a
3.16
Marcas globais
Durante a edio de vrios arquivos dena uma marca global com o comando
mA
Onde m cria a marca e A (maisculo) dene uma marca A acessvel a
qualquer momento com o comando
24
Editando
'A
Isto far o Vim dar um salto at a marca A mesmo que esteja em outro arquivo,
bastando apenas que o mesmo esteja aberto.
soluo seria:
vim *.txt
Para ir para o prximo arquivo:
:bn
Para ir para o arquivo anterior
:bp
Caso existam modicaes no arquivo voc ter que usar t
:wn
O comando acima diz: grave e v para o prximo!
3.17
Dicas extras
Para manipular vrios arquivos voc pode mudar de buer (arquivo) salvando
write next).
:wn
3.17.1
O Vim guarda um registro para cada arquivo editado veja mais no captulo 5
na pgina 26.
`0
podemos, e provavelmente o faremos, editar no mesmo ponto em que estvamos
editando da ltima vez
gi
Na seo 6 voc encontra mais dicas de edio!
25
Modelines
# vim:ft=sh:
OBS: Voc deve colocar um espao entre a palavra `vim' e a primeira coluna,
ou seja, a palavra `vim' deve vir precedida de um espao, da em diante cada
opo ca assim:
:opo:
Por exemplo: posso salvar um arquivo com extenso
indicar no
.sh
e dentro do mesmo
# vim:ft=txt:nu:
Apesar de usar a extenso `sh' o Vim reconhecer este arquivo como `txt', e
caso eu no tenha habilitado a numerao, ainda assim o Vim usar por causa
da opo `nu'. Portanto o uso de
3.18
1
2
3
4
5
6
7
8
9
10
este
este
este
este
este
este
este
este
este
este
um
um
um
um
um
um
um
um
um
um
texto
texto
texto
texto
texto
texto
texto
texto
texto
texto
novo
novo
novo
novo
novo
novo
novo
novo
novo
novo
:5,$ ....
normal ..
0 .......
w .......
d3w .....
26
Editando
:5,$s/ um texto//g
Resolveria neste caso, mas a vantagem do mtodo anterior que vlido para
trs palavras, sejam quais forem.
Tambm possvel empregar comandos de insero (como
ao modo normal, bastando para isso usar o recurso
simular o acionamento da tecla
Esc
ou
a)
Ctrl-v Esc,
e retornar
de forma a
para
este
:5,$ ....
normal ..
0 .......
2w ......
i .......
no ....
^[ ......
$ .......
ciw .....
velho ...
A combinao
Ctrl-v
Captulo 4
Folders
Folders so como dobras nas quais o Vim esconde partes do texto, algo assim:
+-- 10 linhas --------------------------Deste ponto em diante chamaremos os
dobras! Quando tiver que manipular grandes quantidades de texto tente usar
dobras, isto permite uma visualizao completa do texto. Um modo de entender
rapidamente como funcionam as dobras no Vim seria criando uma dobra para
as prximas 10 (dez) linhas com o comando abaixo:
zf10j
Voc pode ainda criar uma seleo visual
Shift-v ............
j ..................
zf .................
zo .................
4.1
Mtodos de dobras
fold, so eles:
syntax)
Sintaxe (
Indentao (
Marcas (
Manual
indent)
marker)
:set foldmethod=tipo
onde o tipo pode ser um dos tipos listados acima, exemplo:
:set foldmethod=marker
28
Folders
Outro modo para determinar o mtodo de dobra seria colocando na ltima linha
do seu arquivo algo assim:
vim:fdm=marker:fdl=0:
Obs:
fdm
signica
foldmethod,
fdl
signica
foldlevel.
modeline,
4.2
Manipulando dobras
zo ..........
zO ..........
za ..........
zA ..........
zR ..........
zc ..........
zC ..........
zfap ........
zf/casa .....
zf'a ........
zd ..........
zj ..........
zk ..........
[z ..........
]z ..........
zi ..........
zm, zr ......
:set fdl=0 ..
abre a dobra
abre a dobra, recursivamente
abre/fecha (alterna) a dobra
abre/fecha (alterna) a dobra, recursivamente
abre todas as dobras do arquivo atual
fecha uma dobra
fecha a dobra abaixo do cursor, recursivamente
cria uma dobra para o pargrafo `ap' atual
cria uma dobra at a palavra casa
cria uma dobra at a marca `a'
apaga a dobra (no o seu contedo)
move para o incio da prxima dobra
move para o final da dobra anterior
move o cursor para incio da dobra aberta
move o cursor para o fim da dobra aberta
desabilita ou habilita as dobras
diminui/aumenta nvel da dobra 'fdl'
nvel da dobra 0 (foldlevel)
Para abrir e fechar as dobras usando a barra de espaos coloque o trecho abaixo
no seu arquivo de congurao do Vim
.vimrc
- veja 10.
4.3
Esc ........
shift-v ....
j ..........
zf .........
Captulo 5
Registros
O Vim possui nove tipos de registros, cada tipo tem uma utilidade especca,
por exemplo voc pode usar um registro que guarda o ltimo comando digitado,
pode ainda imprimir dentro do texto o nome do prprio arquivo, vamos aos
detalhes.
O registro o
5.1
d .......
s .......
c .......
x .......
yy ......
deleo
substituio
um outro tipo de modificao
apaga um caractere
copia uma linha inteira
Para acessar o contedo deste registro basta usar as letras p ou P que na verdade
so comandos para colar abaixo da linha atual e acima da linha atual (em modo
normal)
30
5.2
Registros
Registros nomeados de 0 a 9
nestes registros, caso em que o Vim usa o registro de pequenas delees ou que
se tenha especicado algum outro registro.
:help registers
5.3
Quando voc deleta algo menor que uma linha o Vim armazena os dados deletados neste registro.
5.4
Registros nomeados de a at z ou A at Z
"ayy
Desse modo voc guardou o contedo da linha no registro a caso queira armazenar mais uma linha no registro a use este comando
"Add
Neste outro caso apaguei a linha corrente adicionando-a ao nal do registro a.
"ayip ..
"a .....
y ......
ip .....
5.5
.....
.....
.....
.....
armazena
armazena
contm o
contm o
o ltimo comando
uma cpia do ltimo texto inserido
nome do arquivo corrente
nome do arquivo alternativo
Ctrl-r
Ctrl-r
Ctrl-r
Ctrl-r
%
:
/
a
....
....
....
....
insere
insere
insere
insere
o
o
a
o
Ctrl-r
Ctrl-a
31
Registro de expresses
"=
5.7
O registro
"*
responsvel por armazenar o ltimo texto selecionado (p.e., atravs do mouse).
J o registro
"+
o denominado rea de transferncia, normalmente utilizado para se transferir
contedos entre aplicaeseste registro preenchido, por exemplo, usando-se
a tpica combinao
Ctrl-v
Finalmente, o
registro
"~
armazena o texto colado pela operao mais recente de arrastar-e-soltar (
and-drop).
5.8
drag-
Use este registro quando no quiser alterar os demais registros, por exemplo: se
voc deletar a linha atual,
dd
Esta ao ir colocar a linha atual no registro numerado 1, caso no queira
alterar o contedo do registro 1 apague para o buraco negro assim:
"_dd
5.9
Se desejar inserir em uma substituio uma busca prvia, voc poderia fazer
assim em modo de comandos:
:%s,<Ctrl-r>/,novo-texto,g
Observao: veja que estou trocando o delimitador da busca para deixar claro
o uso do registro de buscas /
32
Registros
5.10
Manipulando registros
:let
:let
:let
:let
:let
:let
:let
:reg
@a=@_
@a=``''
@a=@"
@*=@a
@*=@:
@*=@/
@*=@%
:
:
:
:
:
:
:
:
limpa o registro a
limpa o registro a
salva registro sem nome *N*
copia o registro para o buffer de colagem
copia o ultimo comando para o buffer de colagem
copia a ltima busca para o buffer de colagem
copia o nome do arquivo para o buffer de colagem
mostra o contedo de todos os registros
:
:
:
:
Insere
Insere
Insere
Insere
Em modo de insero
<C-R><C-R>[0-9a-z]
<C-R>%
<C-R>=somevar
~/.vimrc
n.
let @n=@%
Como foi atribudo ao registro
Ctrl-r n
E o nome do arquivo ser inserido
5.11
Digitando o comando
:reg
ou ainda
:ls
O Vim mostrar os registros numerados e nomeados atualmente em uso
5.12
vim *.txt
Para listar os arquivos aberto faa:
:buffers
:buf 3
Para editar arquivos em sequncia faa as alteraes no arquivo atual e acesso
o prximo assim:
:wn
O comando acima diz
5.13
`grave' --> w
e prximo
`next' --> n
:sn
O comando acima uma abreviao de
5.14
Ctrl-r a
5.15
"ay
pressione v para sair do modo visual
34
Registros
5.16
Se voc no sabe ainda como editar preferncias no Vim leia antes o captulo 10.
Voc pode criar uma varivel no vimrc assim:
:let @d=strftime("c")<Enter>
Neste caso estou dizendo a ele que guarde na varivel `d' at d, o valor da data
do sistema `strftime(c)' ou ento cole isto no vimrc:
let @d=strftime("c")<cr>
A diferena entre digitar diretamente um comando e adiciona-lo ao vimrc
que uma vez no vimrc o registro em questo estar sempre disponvel, observe
tambm as sutis diferenas, um
Enter
let @d=strftime("c")<cr>
imap ,d <cr-r>d
nmap ,d "dp
As atribuies acima correspondem a:
1. Guarda a data na varivel d
2. Mapeamento para o modo de insero imap digite ,d
3. Mapeamento para o modo normal nmap digite ,d
E digitar ,d normalmente
Desmisticando o strftime
"dp
ou usar em modo de insero assim
Ctrl-r d
35
Ctrl-v
agora use as letras h,l,k,j como setas de direo at nalizar podendo guardar
a seleo em um registro que vai de a a z exemplo:
"ay
Em modo normal voc pode fazer assim para guardar um pargrafo inteiro em
um registro
"ayip
O comando acima quer dizer
5.18
Referncias
http://rayninfo.co.uk/vimtips.html
http://aprendolatex.wordpress.com
http://pt.wikibooks.org/wiki/Latex
Captulo 6
Buscas e substituies
Para fazer uma busca, certique-se de que est em modo normal, pressione /
e digite a expresso a ser procurada.
Para encontrar a primeira ocorrncia de foo no texto:
/foo
Para repetir a busca basta pressionar a tecla n e para repetir a busca em
sentido oposto N.
/teste/+3
Posiciona o cursor trs linhas aps a ocorrncia da palavra teste
6.1
localiza nmeros
comeo de linha
final de linha
um ou mais
localiza somente dgitos
http://guia-er.sourceforge.net
2. :help regex
37
Um meio mais rpido para encontrar a prxima ocorrncia de uma palavra sob
o cursor, teclar
cursor, tecle
#.
*.
deseja procurar.)
6.2
Ctrl-w n
Para mais detalhes sobre janelas acesse o captulo 7 na pgina 43.
6.3
Estava editando este livro que voc est lendo e queria que as linhas indentadas passassem a ter uma linha em branco antes e depois, assim cheguei a este
resultado:
:map ,t <Esc>:.s/^\(\s\+\)\(.*\)/\r\1\2\r/g<cr>
Explicando:
6.4
38
Buscas e substituies
:%s/\%x0d//g
Na seo 10 h um cdigo para a barra de status que faz com que a mesma
exiba o cdigo do caractere sob o cursor na seo
6.5
??.
Voc no precisa copiar e colar diferentes partes do texto para uma mesma rea
de transferncia. Para isso, voc pode usar os registros. Os registradores so
indicados por aspas seguido por uma letra. Exemplos: a, b, c, etc.
Como copiar o texto para um registrador? simples: basta especicar o nome
do registrador antes:
"add ...
"bdd ...
"ap ....
"ab ....
"x3dd ..
"ayy ..
"a3yy ..
"ayw ..
"a3yw ..
apaga
apaga
cola"
cola"
apaga
copia
copia
copia
copia
Ctrl-r (registro)
Para colar o contedo do registrador a
Ctrl-r a
Para copiar a linha atual para a rea de transferncia
"+yy
Para colar da rea de transferncia
"+p
6.6
Edies complexas
deep
Trocando letras de lugar:
xp
Trocando linhas de lugar:
ddp
Tornando todo o texto maisculo gggUG
a palavra e
6.7 Indentando
6.7
39
Indentando
>> .....
^T .....
^D .....
>ip ....
6.8
6.9
vim .
Use o j para descer e o k para subir ou Enter para editar o arquivo selecionado. Outra dica pressionar F1 ao abrir o FileExplorer do Vim, voc encontra
dicas adicionais sobre este modo de operao do Vim.
6.10
6.11
Substituies
Para fazer uma busca, certique-se de que est em modo normal, em seguida
digite use o comando s, conforme ser explicado.
Para substituir foo por bar na linha atual:
:s/foo/bar
Para substituir o por r da primeira dcima linha do arquivo:
:1,10 s/foo/bar
40
Buscas e substituies
:1,$ s/foo/bar
Ou simplesmente:
:% s/foo/bar
$ ... significa para o Vim final do arquivo
% ... representa o arquivo atual
O comando s possui muitas opes que modicam seu comportamento.
6.12
Exemplos
/end\(if\|while\|for\)
Buscar if , while e for. Observe que necessrio `escapar' os caracteres
\|
\),
\(,
* Quebra de linha
/quebra\nde linha
* Ignorando maisculas e minsculas
/\cpalavra
Usando
\c
o Vim encontrar
palavra, Palavraa
ou at mesmo
PALAVRA.
Uma dica colocar no seu arquivo de congurao vimrc veja o captulo 10.
set
set
set
set
ignorecase ..
smartcase ...
hlsearch ....
incsearch ...
se voc no sabe ainda como colocar estas preferncias no arquivo de congurao pode ativa-las em modo de comando precedendo-as com dois pontos,
assim:
:set ignorecase<Enter>
Procurando palavras repetidas
/\<\(\w*\) \1\>
Multilinha
/Hello\_s\+World
Buscar `World', separado por qualquer nmero de espaos, incluindo quebras
de linha. Buscar as trs seqncias:
6.12 Exemplos
41
Hello World
Hello
World
Hello
World
* Buscar linhas de at 30 caracteres de comprimento
/^.\{,30\}$
^ ...... representa comeo de linha
* Apaga todas as tags html/xml de um arquivo
:%s/<[^>]*>//g
* Apaga linhas vazias
:%g/^$/d
Ou
:%s/^[\ \t]*\n//g
* Remover duas ou mais linhas vazias entre pargrafos diminuindo para uma s
linha vazia.
:%s/\(^\n\{2,}\)/\r/g
Voc pode criar um mapeamento e colocar no seu
/.vimrc
map ,s <Esc>:%s/\(^\n\{2,}\)/\r/g<cr>
No exemplo acima, ,s um mapeamento para reduzir linhas em branco sucessivas para uma s
Remove no dgitos (no pega nmeros)
:%s/^\D.*//g
Remove nal de linha DOS/Windows
^M
0d
:%s/\%x0d//g
Troca palavras de lugar usando expresses regulares
:%s/\(.\+\)\s\(.\+\)/\2 \1/
Modicando todas as tags html para minsculo
:%s/<\([^>]*\)>/<\L\1>/g
Move linhas 10 a 12 para alm da linha 30
:10,12m30
42
Buscas e substituies
6.13
:g/^Error/ copy $
Obs: O comando
copy pode ser abreviado `co' ou ainda voc pode usar `t' para
:h co
Entre as linhas que contiverem fred e joe substitua
:g/fred/,/joe/s/isto/aquilo/gic
As opes `gic' correspondem a
tidas deixando s o
global.
conrm,
:g/^\d\+.*/m $
Inverter a ordem das linhas do arquivo?
:g/^/m0
Apagar as linhas que contm
Line commented
:g/Line commented/d
Copiar determinado padro para um registro
:g/padro/;+1 copy $
6.14 Dicas
6.14
43
Dicas
:%s/Ctrl-r//novo/g
A dupla barra corresponde ao ultimo padro procurado, e portanto o comando
abaixo far a substituio da ultima busca por casinha
:%s//casinha/g
6.15
Por vezes sabemos que aquela anotao foi feita, mas no momento esquecemos
em qual arquivo est, no exemplo abaixo procuramos a palavra dicas partir
da nossa pasta pessoal pela palavra 'dicas' em todos os arquivos com extenso
`txt'.
6.16
:19;+3 co $
O Vim sempre necessita de um intervalo (inicial e nal) mas se voc usar ; ele
considera a primeira linha como segundo ponto do intervalo, e no caso acima
estamos dizendo (nas entrelinhas) linhas 19 e 19+3
De forma anloga podemos usar como referncia um padro qualquer
:/palavra/;+10 m 0
O comando acima diz: partir da linha que contm palavra incluindo as 10
prximas linhas mova m para a primeira linha 0, ou seja, antes da linha 1.
6.17
Fonte:
Problema: Essa deve ser uma pergunta comum. Suponha o seguinte contedo
de arquivo:
linha
linha
linha
linha
linha
i
i+1
i+2
i+3
i+4
44
Buscas e substituies
linha
linha
linha
linha
linha
i
i+1
i+2
i+3
i+4
:help /
:help :s
:help pattern
6.18
Dicas do dicas-l
http://www.dicas-l.com.br/dicas-l/20081228.php
fonte:
6.19
Matrcula: 123456
Senha: yatVind7kned
Matrcula: 123456
Senha: invanBabnit3
E assim por diante. Eu precisava converter este arquivo para algo como:
:g/^Matrcula/s/\n/ - /
Explicando:
45
Captulo 7
Trabalhando com janelas
O Vim trabalha com o conceito de mltiplos buers. Cada buer um arquivo carregado para edio. Um buer pode estar visvel ou no, e possvel
dividir a tela em janelas, de forma a visualizar mais de um buer simultaneamente.
7.1
Dividindo a janela
Observao:
Ctrl = ^
Ctrl-w-s
Ctrl-w-o
^wo
ao fechar, pois apesar de a outra janela estar fechada o arquivo ainda estar
carregado, portanto faa:
7.2
7.3
Manipulando janelas
Ctrl-w-w
Ctrl-w-j
Ctrl-w-k
Ctrl-w-r
Ctrl-w-+
Ctrl-w--
...
...
...
...
...
...
47
File Explorer
~/.vimrc
let g:netrw_altv = 1
Caso queira pode mapear um atalho "no caso abaixo F2"para abrir o File Explorer.
:help buffers
:help windows
7.5
Dicas
Caso esteja editando um arquivo e nele houver referncia a outro arquivo tipo:
/etc/hosts
Voc pode usar este comando para abrir uma nova janela com o arquivo citado
Ctrl-w f
Mas lembre-se que posicionar o cursor sobre o nome do arquivo Veja tambm
mapeamentos na seo 10.6.
Captulo 8
Repetio de comandos
Para repetir a ltima edio saia do modo de Insero e pressione ponto (.):
.
Para inserir um texto que deve ser repetido vrias vezes:
#
#
#
#
#
Por exemplo, se voc quiser inserir oitenta traos numa linha, em vez de digitar
um por um, voc pode digitar o comando:
80i-<Esc>
Veja, passo a passo, o que aconteceu:
Antes de entrar em modo de insero usamos um quanticador
`80'
depois iniciamos o modo de insero
i
depois digitamos o caractere a ser repetido
<Esc>
Se desejssemos digitar 10 linhas com o texto
isto um teste
deveramos ento fazer assim:
49
Ctrl-y
Para repetir a linha abaixo (modo de insero)
Ctrl-e
Para copiar a linha atual
yy
Para colar a linha copiada
p
Para repetir uma linha completa
Ctrl-x Ctrl-l
O atalho acima s funcionar para uma linha semelhante, experimente digitar
8.2
8.3
stdio.h
fcntl.h
unistd.h
stdlib.h
e quer que ele que assim:
50
Repetio de comandos
#include
#include
#include
#include
"stdio.h"
"fcntl.h"
"unistd.h"
"stdlib.h"
digitamos
qa
No modo Normal. Tudo o que for digitado a partir da ser gravado no registro
a at que terminemos com o comando
<Esc>q
<Esc> .......
qa ..........
I ...........
#include " ..
<Esc> .......
A" ..........
<Esc> .......
j ...........
<Esc> .......
q ...........
Agora voc s precisa posicionar o cursor na primeira letra de uma linha como
esta
stdio.h
E executar a macro do registro a quantas vezes for necessrio, usando o comando
@a.
4@a
Este comando executa quatro vezes o contedo do registro a.
Caso tenha executado a macro uma vez pode repeti-la com o comando
@@
8.4
Repetindo substituies
:5,32s/isto/aquilo/g
Pode repetir esta substituio em qualquer linha que estiver apenas usando este
smbolo
51
&
O Vim substituir na linha corrente isto por aquilo.
Podemos repetir a
g&
8.5
Repetindo comandos
@:
8.6
Scripts Vim
Usando um
Crie um arquivo
%s/bgcolor="e"/bgcolor="e"/g
wq
Para executar um
:source nome_do_script.vim
8.7
vim *.html
:bufdo %s/bgcolor="e"/bgcolor="e"/g | :wall
Para fechar todos os arquivos faa:
:qall
O comando :wall salva write todos all os arquivos abertos pelo comando vim
*.html. Opcionalmente voc pode combinar l e l com o comando :wqall, que
salva todos os arquivos abertos e em seguida sai do Vim.
8.8
Observao: lembre-se
:^r/
Ctrl = ^
52
Repetio de comandos
8.9
8.10
^r:
Se preceder com :
:^r:
8.11
i<c-a>
Captulo 9
Comandos externos
O Vim permite executar comandos externos para processar ou ltrar o contedo
de um arquivo. De forma geral, fazemos isso digitando (no modo normal):
9.1
Ordenando
simplesmente
sort, digite
9.2
uniq
mais detalhes:
:h sort
sort
54
Comandos externos
9.3
:sort n
9.4
Beautiers
:%!tildy
9.5
*
Referncias
http://www.dicas-l.com.br/dicas-l/20070119.php
Captulo 10
Como editar preferncias no
Vim
O arquivo de preferncias do Vim vimrc, um arquivo oculto que pode ser
criado no
prole do usurio.
~/.vimrc
/home/seuusuario/.vimrc
Caso use o Windows o arquivo :
~\_vimrc
c:\documents and settings\seuusuario\_vimrc
10.1
/home/user/.vim
Nesta pasta '.vim' ou 'vimles' deve haver pastas tipo
vimfiles
|
+--color
|
+--doc
|
+--syntax
|
+--plugin
Na seo Plugins 13 pgina 73 esto descritos alguns plugins interessantes!
56
10.2
Comentrios
10.3
Set
.vimrc:
set nu
ou digitados como comandos:
:set nu
set nu
"mostra numerao de linhas
set showmode "mostra o modo em que estamos
set showcmd "mostra no status os comandos inseridos
set ts=4
"tamanho das tabulaes
syntax on
"habilita cores
set hls
"destaca com cores os termos procurados
set incsearch "habilita a busca incremental
set ai
"auto identao
set aw
"salvamento automtico - veja :help aw
set ignorecase "faz o Vim ignorar maisculas e minsculas nas buscas
set smartcase "Se comear uma busca em maisculo ele habilita o case
set ic
"ignora maiscula e minsculas em uma busca
set scs
"ao fazer uma busca com maisculos considerar case sensitive
set backup
set backupext=.backup
set backupdir=~/.backup,./
set cul
"abreviao de cursor line (destaca linha atual)
set ve=all
"permite mover o cursor para reas onde no h texto
set ttyfast
"Envia mais caracteres ao terminal, melhorando o redraw de janelas
set columns=88 "Determina a largura da janela.
set mousemodel=popup "exibe o contedo de folders e sugestes spell
O comando
gqap
57
" ****************************************************************
" *
*
" *
geralmente usamos ^I para representar uma tabulao
*
" *
<Tab>, e $ para indicar o fim de linha. Mas possvel
*
" *
customizar essas opes. sintaxe:
*
" *
*
" *
set listchars=key:string,key:string
*
" *
*
" *
*
" * - eol:{char}
*
" *
*
" *
Define o caracter a ser posto depois do fim da linha
*
" *
*
" * - tab:{char1}{char2}
*
" *
*
" *
O tab mostrado pelo primeiro caracter {char1} e
*
" *
seguido por {char2}
*
" *
*
" * - trail:{char}
*
" *
*
" *
Esse caracter representa os espaos em branco.
*
" *
*
" * - extends:{char}
*
" *
*
" *
Esse caracter representa o incio do fim da linha
*
" *
sem quebr-la
*
" *
Est opo funciona com a opo nowrap habilitada
*
" *
*
" ****************************************************************
"exemplo 1:
"set listchars=tab:>-,trail:.,eol:#,extends:@
"exemplo 2:
"set listchars=tab:>"exemplo 3:
"set listchars=tab:>"exemplo 4:
set nowrap
"Essa opo desabilita a quebra de linha
"set listchars=extends:+
Caso esteja usando o gvim pode setar um esquema de cores
set colo desert
10.4
:set list
58
10.5
@s
O Vim colocar no comando
:sort -u
Bastando pressionar
<Enter>.
Observao:
:5,20sort u
"da linha 5 at a linha 20 ordene e retire duplicados
:sort n
" ordene meu documento considerando nmeros
" isto til pois se a primeira coluna contiver
" nmeros a ordenao pode ficar errada caso no usemos
" o parmetro ``n''
10.6
Mapeamentos
Mapeamentos permitem criar atalhos de teclas para quase tudo. Tudo depende
de sua criatividade e do quanto conhece o Vim.
10.6.1
tecla
<c-x>
<left>
<right>
<c-m-a>
<cr>
<Esc>
<leader>
<bar>
<cword>
<cfile>
<cfile><
<sfile>
:
:
:
:
:
:
:
:
:
:
:
:
:
tecla mapeada
Ctrl-x
seta para a esquerda
seta para a direita
Ctrl-Alt-a
Enter
Escape
normalmente \
| pipe
palavra sob o cursor
arquivo sob o cursor
arquivo sob o cursor sem extenso
contedo do arquivo sob o cursor
10.6 Mapeamentos
<left>
<up>
<m-f4>
<c-f>
<bs>
<space>
<tab>
:
:
:
:
:
:
:
59
salta um caractere para esquerda
equivale clicar em 'seta acima'
a tecla alt -> m mais a tecla f4
Ctrl-f
backspace
espao
tab
:h index
No Vim podemos mapear uma tecla para o modo normal, realizando determinada operao e a mesma tecla pode desempenhar outra funo qualquer em
modo de insero ou comando, veja:
10.6.2
cmap.
,v
Os mapeamentos abaixo so teis para quem escreve cdigos html, permitem
inserir caracteres reservados do html usando uma barra invertida para proteger
os mesmos, o Vim substituir os "barra alguma coisa"pelo caractere correspondente.
60
O termo
\& &amp;
\< &lt;
\> &gt;
\. &middot;
inoremap
Enter.
10.6.3
A cada busca, se a opo `hls' estiver habilitada o Vim faz um destaque colorido,
mas se voc quiser limpar pode fazer este mapeamento
10.6.4
10.6.5
map ,d <Esc>:%s/\(^\n\{2,}\)/\r/g<cr>
No mapeamento acima estamos associando o atalho:
,d
. . . ao desejada, fazer com que linhas em branco sucessivas sejam substitudas por uma s linha em branco, vejamos como funciona:
map .........
,d ..........
<Esc> .......
: ...........
% ...........
s ...........
mapear
atalho que quermos
se estive em modo de insero sai
em modo de comando
em todo o arquivo
substitua
10.7 Autocomandos
\n ..........
{2,} ........
\r ..........
g ...........
<cr> ........
61
quebra de linha
duas ou mais vezes
trocado por \r Enter
globalmente
confirmao do comando
As barras invertidas podem no ser usadas se o seu Vim estiver com a opo
magic habilitada
:set magic
Por acaso este um padro portanto tente usar assim pra ver se funciona
map ,d :%s/\n{2,}/\r/g<cr>
10.6.6
Mapeamentos globais
Ctrl-(seta abaixo)
ou
Ctrl-(seta acima):
10.7
Autocomandos
au BufNewFile tipo ao
62
Veja um exemplo:
" http://aurelio.net/doc/vim/txt.vim
coloque em ~/.vim/syntax
au BufNewFile,BufRead *.txt source ~/.vim/syntax/txt.vim
Para arquivos do tipo txt `*.txt' use um arquivo de syntax em particular
O autocomando abaixo coloca um cabealho para scripts `bash' caso a linha 1
esteja vazia, observe que os arquivos em questo tem que ter a extenso .sh
10.8
10.8.1
Funes
Fechamento automtico de parnteses
10.8 Funes
63
set statusline=%F%m%r%h%w\
[FORMAT=%{&ff}]\
[TYPE=%Y]\
[ASCII=\%03.3b]\
[HEX=\%02.2B]\
[POS=%04l,%04v][%p%%]\ [LEN=%L]
Caso este cdigo no funcione acesse este link:
120126.
10.8.3
http://www.linux.com/feature/
Ctrl-w n
pode colocar esta funo no seu
.vimrc
10.8.4
10.8.5
http://vim.wikia.com/wiki/Number_a_group_of_lines
function! <SID>SwitchColorSchemes()
if exists(``e'')
if g:colors_name == 'native'
colorscheme billw
elseif g:colors_name == 'billw'
64
10.8.6
http://nanasi.jp/old/colorscheme_0.html
10.8 Funes
65
A funo abaixo til para ser usada quando voc vai editar um arquivo gerando
modicaes signicativas, assim voc poder restaurar o backup se necessrio
66
O atalho
<leader>
em geral a barra invertida \, na dvida
:help <leader>
10.9
path
do Vim?
http://vim.wikia.com/wiki/Automatically_add_Python_paths_to_
Vim_path Coloque o seguinte script em:
fonte:
* ~/.vim/after/ftplugin/python.vim
(on Unix systems)
%* $HOME/vimfiles/after/ftplugin/python.vim
(on Windows systems)
python << EOF
import os
import sys
import vim
for p in sys.path:
# Add each directory in sys.path, if it exists.
if os.path.isdir(p):
# Command 'set' needs backslash before each space.
vim.command(r``s'' % (p.replace(`` '', r`` '')))
EOF
Isto lhe permite usar 'gf ' ou
10.10
Criando um menu
Como no Vim podemos ter innitos comandos ca complicado memorizar tudo
a que entram os menus, podemos colocar nossos plugins e atalhos favoritos
em um menu veja este exemplo
:menu ....
:nmenu ...
:vmenu ...
:omenu ...
:menu! ...
:imenu ...
:cmenu ...
:amenu ...
10.12
67
Exemplo de menu
" cores
menu T&emas.cores.quagmire :colo quagmire<CR>
menu T&emas.cores.inkpot :colo inkpot<CR>
menu T&emas.cores.google :colo google<CR>
menu T&emas.cores.ir_black :colo ir_black<CR>
menu T&emas.cores.molokai :colo molokai<CR>
" Fontes
menu T&emas.fonte.Inconsolata :set gfn=Inconsolata:h10<CR>
menu T&emas.fonte.Anonymous :set anti gfn=Anonymous:h8<CR>
menu T&emas.fonte.Envy\ Code :set anti gfn=Envy_Code_R:h10<CR>
menu T&emas.fonte.Monaco :set gfn=monaco:h9<CR>
menu T&emas.fonte.Crisp :set anti gfn=Crisp:h12<CR>
menu T&emas.fonte.Liberation\ Mono :set gfn=Liberation\ Mono:h10<CR>
O comando
:update
Atualiza o menu recm modicado.
Quando o comando
:amenu
usado sem nenhum argumento o Vim mostra os menus denidos atualmente
Para listar todas as opes de menu para 'Plugin' por exemplo faa:
:amenu Plugin
10.13
Outros mapeamentos
<br>
68
espao
uma ou mais vezes
no final da linha
ou
espao (veja imagem acima)
uma ou mais vezes
at o fim
tabulao
10.14
"Word completion
"Complementao de palavras
set dictionary+=/usr/dict/words
set complete=.,w,k
"------ complementao de palavras ---"usa o tab em modo de insero para completar palavras
function! InsertTabWrapper(direction)
let col = col(``.'') - 1
1 http://guia-er.sourceforge.net
10.15 Abreviaes
69
10.15
Abreviaes
Tambm no
.vimrc
10.16
*
Referncias
http://www.dicas-l.com.br/dicas-l/20050118.php
Captulo 11
Um wiki para o Vim
inegvel a facilidade que um wiki nos traz, os documentos so indexados e
linkados de forma simples. J pesquisei uma poro de wikis e, para uso pessoal
recomendo o potwiki. O linkk do potwiki :
script.php?script_id=1018.
http://www.vim.org/scripts/
ciona localmente embora possa ser aberto remotamente via ssh . Para criar um
k no potwiki basta usar WikiNames, so nomes iniciados com letra maiscula
e que contenham outra letra em maisculo no meio.
Ao baixar o arquivo salve em
~/.vim/plugin.
call s:default('home',"~/.wiki/HomePage")
Outra forma de indicar a pgina inicial seria colocar no seu .virmc
11.1
Como usar
\ww.
<Leader> igual a \
- veja :help leader
\ww .... abra a sua HomePage
\wi .... abre o Wiki index
\wf .... segue uma WikiWords (can be used in any buffer!)
\we .... edite um arquivo Wiki
\\
.... Fecha o arquivo
<CR> .... segue WikiWords embaixo do cursor <CR> igual a Enter
<Tab>.... move para a prxima WikiWords
1 Sistema
de acesso remoto
71
11.2
:help potwiki
O valor que est em zero dever car em 1
call s:default(`autowrite',0)
11.3
Dicas
Como eu mantenho o meu wiki oculto .wiki criei um link para a pasta de
textos
ln -s ~/.wiki /home/sergio/docs/textos/wiki
Vez por outra entro na pasta
~/docs/textos/wiki
11.4
Atualmente uso o Ubuntu em casa e ele j usa utf-8. Ao restaurar meu backup
do wiki no Kurumin os caracteres caram meio estranhos, da z:
Captulo 12
Hbitos para edio efetiva
Um dos grandes problemas relacionados com os softwares sua subutilizao.
Por inrcia o usurio tende a aprender o mnimo para a utilizao de um programa e deixa de lado recursos que poderiam lhe ser de grande valia. O mante-
12.1
12.2
Use marcas
ma .....
'a .....
d'a ....
y'a ....
gg ...
G ....
0 ....
$ ....
fx ...
dfx ..
g, ...
g; ...
p ....
P ....
H ....
M ....
L ....
1 http://www.moolenaar.net
2 http://br-linux.org/linux/7-habitos-da-edicao-de-texto-efetiva
73
/argc
Digita `n' para buscar a prxima ocorrncia
n
Um jeito mais fcil seria:
12.3
Use quanticadores
10j .....
5dd .....
:50 .....
50gg ....
12.4
desce 10
apaga as
vai para
vai para
linhas
prximas 5 linhas
a linha 50
a linha 50
:wn
O w signica gravar e o n signica
next,
74
12.5
O Vim complementa com tab. Veja mais na seo 10.14 na pgina 65.
~/.vimrc.
Veja
12.6
Use dobras
O Vim pode ocultar partes do texto que no esto sendo utilizadas permitindo
uma melhor visualizao do contedo. Mais detalhes no captulo 4 pgina 24.
12.7
Use autocomandos
~/.vimrc
75
augroup html
au! <--> Remove all html autocommands
au!
au BufNewFile,BufRead *.html,*.shtml,*.htm set ft=html
au BufNewFile,BufRead,BufEnter *.html,*.shtml,*.htm so ~/docs/vim/.vimrc-html
au BufNewFile *.html 0r ~/docs/vim/skel.html
au BufNewFile *.html*.shtml,*.htm /body/+ " coloca o cursor aps o corpo <body>
au BufNewFile,BufRead *.html,*.shtml,*.htm set noautoindent
augroup end
Documentao sobre autocomandos do Vim
autocmd.html.
12.8
http://www.vim.org/htmldoc/
vim .
Voc pode usar j e k para navegar e
12.9
12.10
Referncias
http://www.moolenaar.net/habits_2007.pdf
http://vim.wikia.com/wiki/Did_you_know
Captulo 13
Plugins
Plugins so um meio de estender as funcionalidades do Vim, h plugins para
diversas tarefas, desde wikis para o Vim at ferramentas de auxlio a navegao
em arquivos com o caso do plugin
php?script_id=1658
http://www.vim.org/scripts/script.
13.1
:source <path>/<plugin>
Caso o plugin atenda suas necessidades voc pode instala-lo. Este procedimento
tambm funciona para temas de cor!
No GNU/Linux
~/.vim/plugin/
No Windows
~/vimfiles/plugin/
Obs: Caso no exista a pasta voc pode cri-la!
Exemplo no GNU/Linux
+ /HOME/USER
|
|
+ .VIM
|
|
+ PLUGIN
Obs: Alguns plugins dependem da verso do Vim, para saber qual a que est
atualmente instalada:
:ver
77
ATEX
Plugin para L
templates
net/
~/.vim/ftplugin/latex-suite/templates
13.3
ATEX
Criando folders para arquivos L
set foldmarker=\\begin,\\end
set foldmethod=marker
Adicionar marcadores (
.s/^\(\\section\)\({.*}\)/\1\2\r\\label\2
13.4
ATEX
Criando sees L
==seo==
por
\section{seo}
:.s/^==\s\?\([^=]*\)\s\?==/\\section{\1}/g
: .........
. .........
s .........
^ .........
== ........
\s\? ......
[^=] ......
* .........
\s\? ......
\\ ........
\1 ........
13.5
comando
linha atual
substitua
comeo de linha
dois sinais de igual
seguido ou no de espao
no pode haver = (^ dentro de [] negao)
diz que o que vem antes pode vir zero ou mais vezes
seguido ou no de espao
insere uma barra invertida
repete o primeiro trecho entre ()
13.6
Complementao de cdigos
templates.
www.vim.org/scripts/script.php?script_id=1318
http://
78
13.7
Plugins
Instalao
Um artigo ensinando como instalar o plugin snippetsEmu pode ser lido aqui:
http://vivaotux.blogspot.com/2008/03/instalando-o-plugin-snippetsemu-no-vim.
html
13.8
13.9
http://www.vim.org/scripts/script.php?script_id=1018.
http://www.vim.org/scripts/script.php?script_id=910
13.10
http://www.vim.org/scripts/script.php?script_id=2208&rating=helpful#
1.3
Veja como instalar o este plugin no captulo 11.
Captulo 14
Referncias
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=2914
VIM avanado (parte 1)]
http://www.rayninfo.co.uk/vimtips.html
http://www.geocities.com/yegappan/vim_faq.txt
http://br.geocities.com/cesarakg/vim-cook-ptBR.html
http://larc.ee.nthu.edu.tw/~cthuang/vim/files/vim-regex/vim-regex.
htm
http://aurelio.net/vim/vimrc-ivan.txt
http://vivaotux.blogspot.com/search/label/vim
http://www.tug.dk/FontCatalogue/seriffonts.html