Você está na página 1de 6

1.

Modos de trabalho do Vi
O Vi possui dois modos de trabalho: modo de insero e modo
de comando. Ao ser iniciado, o programa estar sempre em
modo de comando. Para alternar do modo de comando para o
modo de insero, h duas maneiras:
a -> Ao pressionar a tecla a, o modo de insero ativado e
o cursor de texto posicionado logo aps o caractere
corrente;
i -> Ao pressionar a tecla i, o modo de insero ativado e
o cursor de texto posicionado esquerda do caractere
corrente.
Para alternar do modo de insero para o modo de comando,
basta pressionar a tecla ESC.

2. Salvando arquivos e saindo


do editor
Entrar no Vi fcil. Sair, primeira vista, um dilema,
podendo causar claustrofobia digital. :P
Os seguintes comandos devem ser executados em modo de
comando, claro.
:w -> salva o arquivo corrente. possvel passar um
argumento, para definir o nome do arquivo. Por exemplo:

:w

arq1.txt

ZZ -> salva o documento e sai do Vi. conhecido como o


comando Zalva e Zai. :)
:wq -> Salva o arquivo e sai do Vi
:w! -> O arquivo ser salvo mesmo se aberto no modo somente
leitura (readonly)
:q -> Sai do Vi. Se o arquivo no foi salvo, o programa emitir
um alerta.
:q! -> Fora a sada, mesmo que o arquivo tenha sido
modificado e no tenha sido salvo anteriormente
Os comandos :wq e ZZ fazem praticamente a mesma coisa.
Porm, ZZ mais rpido de se digitar e mais fcil de
lembrar (Zalva e Zai!). ;)

3. Movimentando o cursor

Isso parece fcil. Basta usar as setas. Mas e se voc estiver


num teclado sem as teclas das setas? Pode parecer jurssico,
mas pode acontecer. Nesse caso, use os seguintes comandos:
h -> Desloca para a esquerda
j -> Desloca para baixo
k -> Desloca para cima
l -> Desloca para a direita
possvel digitar um nmero antes desses comandos,
informando o nmero de deslocamentos desejado.

4. Navegao no texto
[n]$ -> Move o cursor para o fim da linha. Se especificado um
nmero antes do $ (cifro), move para o final da linha com o
nmero especificado (a linha corrente 1; a conseguinte 2 e
assim sucessivamente)
^ -> Move o cursor para o incio da linha corrente. Se o
teclado for ABNT ou similares, com teclas para acentuao,
voc ter de digitar a tecla duas vezes, para o Vi compreender
o comando literalmente, no como um acento para outra letra.
0 (nmero zero) -> Equivale ao comando ^.
[n]A -> Move o cursor para o fim da linha e entra em modo de
insero. possvel inserir um numero antes do A, como no
comando $.
[n]G -> Se no for especificado o nmero n, o cursor ser
movido para o fim do arquivo. Caso contrrio, desloca o cursor
para a linha n.

5. Movimentando textos
OBS:

^LETRA

corresponde combinao das teclas CTRL e a

letra especificada.
^e -> Move o texto para cima, independentemente da posio
do cursor.
^y -> Move o texto para baixo, independentemente da posio
do cursor.

6. Apagando texto
[n]x -> Apaga o caractere sob o cursor. possvel especificar
o nmero de caracteres a serem removidos.
[n]X -> Apaga o caractere esquerda do cursor. possvel

especificar o nmero de caracteres a serem removidos.


[n]dd -> Apaga a linha corrente. possvel especificar o
nmero de linhas a serem removidas aps a linha corrente.
D -> Apaga todos os caracteres da posio corrente at o final
da linha.
d$ -> Equivale ao comando D.
d^-> Apaga todos os caracteres da posio corrente at o
incio da linha.
dw -> apaga os caracteres da posio corrente at o final da
palavra.

7. Copiando e colando textos


Para copiar uma linha de textos, usamos o comando yy.
possvel usar [n]yy para definir o nmero de linhas a serem
copiadas.
Para colar o texto copiado, usa-se [n]p para colar direita
do cursor ou [n]P para colar esquerda do cursor. O nmero
n (opcional) determina o nmero de vezes que o texto ser
colado.

8. Desfazendo aes
No existe o famoso CTRL+Z no Vi. Mas h como desfazer
comandos.
u -> Desfaz o ltimo comando
U -> Desfaz todos os comandos executados na linha corrente

9. Localizando textos
/texto -> Busca pela ocorrncia da palavra texto a partir da
posio corrente do cursor at o fim do arquivo.
?texto -> Busca pela ocorrncia da palavra texto a partir da
posio corrente do cursor at o incio do arquivo.
n -> Repete o ltimo comando de busca (next)

10. Localizando e substituindo


textos
Os comandos abaixo assemelham-se sintaxe dos comandos
de substituio do

sed .

:s/busca/troca -> Encontra a primeira ocorrncia de busca e


a modifica para troca, na linha corrente.
:s/busca/troca/g -> Faz a mesma coisa que o comando acima,
porm o executa em toda a linha.
possvel definir o intervalo de linhas onde a busca ser
feita, da seguinte forma:
:inicio,fims/busca/troca.
Por exemplo:
:1.42s/busca/troca -> Executa a troca no intervalo das linhas
1 a 42
:..42s/busca/troca -> Executa a troca a partir da linha atual
at a linha 42
:..$s/busca/troca -> Executa a troca a partir da linha atual at
o fim do arquivo
A busca pode ser feita usando Expresses Regulares.

11. Executando comandos no


Shell sem sair do Vi
Para executar um comando no shell sems air do Vi, basta
proceder da seguinte forma:
:! comando_shell
Por exemplo:
:! ls -l

12. Inserindo no texto a sada


de um comando Shell
O comando anterior executa uma ao no Shell, mas descarta
a sada. Se voc pretende inserir a sada do comando no texto
que est editando no Vi, basta proceder assim:
!! comando_shell
Por exemplo
!! ls -l

13. Facilidades para


programadores e
desenvolvedores
Indentao
Para inserir indentao, primeiro devemos definir o tamanho
da tabulao, usando o comando

:set

(mais a frente

detalharei esse comando).


:set sw=n
Onde n o tamanho da tabulao.
Feito isso, poderemos utilizar os seguintes comandos:
[n]>> -> Indenta n linhas (ou apenas a linha corrente se n
for omitido)
[n]<< -> Retira a indentao de n linhas (ou apenas da linha
corrente se n for omitido)

Correspondncia entre parnteses,


colchetes e chaves
Com o cursor sobre um sinal de parnteses, colchete ou
chave, execute o comando %. Se houver um caractere
correspondente, o cursor ser movido para ele.

14. Configurao do ambiente


(comando
set

:set <opco> -> Ativa <opo>


:set no<opo> -> Desativa <opo>
:set <opo>=<valor> -> Define <valor> <opo>
:set <opo>? -> Exibe o valor de <opo>
:set all -> Exibe todas as opes
Algumas opes do comando set:
ai -> Autoindent. Indentao automtica
ic -> Ignore case. Ignora maisculas e minsculas numa
busca.
nu -> Numerao de linhas

s w - > s h i f t w i d t h . Tam a n h o d a t a b u l a o
sm -> show match. Ao fechar um parntese, colchete ou chave,
o Vi mostra onde ele foi aberto. Caso no haja
correspondncia, um bip ser emitido.
Para no precisar definir todas essas configuraes sempre
que iniciar o Vi, voc pode criar um arquivo de configurao.
O Vi busca no arquivo ~/.exrc (arquivo oculto exrc na home do
usurio) as configuraes iniciais. Logo, voc pode criar um
arquivo assim:

set
set
set

sw=4
ai
nu

Você também pode gostar