Vim: mudanças entre as edições
Linha 254: | Linha 254: | ||
o comando acima aplica 3x o registro ''a'' | o comando acima aplica 3x o registro ''a'' | ||
===Scripts vim=== | |||
Usando um script para modificar um nome em vários arquivos: | |||
Crie um arquivo chamado "subs.vi" contendo os comandos de substituição e o comando | |||
de salvamento :wq | |||
:%s/bgcolor="white"/bgcolor="#eeeeee"/g | |||
:wq | |||
Execute o script em todos os arquivos que deseja modificar: | |||
foreach i ( *.let ) vim -s subs.vi $i | |||
==Veja Também== | ==Veja Também== |
Edição das 01h17min de 1 de fevereiro de 2006
Introdução
O Vim é um melhoramento do editor vi, um editor dos sistemas Unix. Possui uma série de melhoramentos em relação a este último. O próprio slogan do vim é IMPROVED VI. Ou seja, vi melhorado.
É capaz de reconhecer mais de 400 sintaxes de linguagens de programação e marcação. mapeamento para teclas, macros, abreviações, busca por 'expressões regulares' entre outras facilidades. Conta com uma comunidade bastante atuante, totalmente configuravel é, ao lado do Emacs um dos editores mais usados no mundo GNU, mas pode ser também instalado no windows e mac.
site oficial: http://www.vim.org/
Para chamar a ajuda do vim use F1 Para navegar na ajuda do vim use CTRL-], e para voltar use CTRL+O
Movendo-se no Vim
Para mover-se no vim use:
k h l 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.
Para entrar em Modo de Edição pressione
i ................inicia o modo insert na posição atual I ................inicia o modo insert no início da linha atual a ................inicia o modo insert após o caractere atual A ................inicia o modo insert no final da linha atual o ................inicia o modo insert na linha abaixo O ................inicia o modo insert uma linha acima
Para retornar ao modo normal pressione ESC
Desfazendo
Pressione
u
Salvando
:w<enter> :sav! novo_nome (salvar como) :wq (salva e sai)
Modos de Operação
Os Modos de Operação do Vim |
|
---|---|
Normal |
Neste modo podemos colar o que está no "buffer", uma espécie de área de transferência. Podemos ter um buffer para cada letra do alfabeto, também é possível apagar linhas, e colocar trechos no buffer. Quando se inicia o vim já estamos neste modo, caso esteja em outro modo basta pressionar 'ESC' |
Insert |
Neste modo é feita a inserção de texto, para entrar neste modo basta pressionar a tecla i de insert ou a tecla a de append. |
Visual |
Neste modo podemos selecionar blocos verticais de texto. É exibido um destaque visual. É uma das melhores formas de se copiar conteúdo no vim. |
Comandos |
Neste modo digitamos comandos como o de salvar :w ou para ir para uma linha qualquer :100 |
Editando
Apagando linhas (modo normal)
dd - apaga a linha atual 5dd - apaga as próximas 5 linhas dgg - apaga até o início do arquivo dG - apaga até o final do arquivo d0 - apaga até o início da linha atual dw - apaga uma palavra diw - apaga uma palavra mesmo que não esteja no início dip - apaga o parágrafo atual d4b - apaga as quatro palavras anteriores dfx - apaga até o próximo x
Copiando linhas
yy - copia a linha atual 5yy - copia as próximas 5 linhas "add - deleta a linha atual para o registro a "ap - cola o registro atual
Edições complexas
Apaga linhas vazias
:%g/^$/d
Remove não dígitos (não pega números)
:%s/^\D.*//g
Trocando palavras de lugar
coloque o cursor no espaço antes da 1ª palavra digite: deep
Trocando letras de lugar
xp
Trocando linhas de lugar
ddp
Indentando
>> - Indenta a linha atual ^T - Indenta a linha atual em modo insert ^D - Remove indentação em modo insert >ip - indenta o parágrafo atual
Usando marcas
As marcas são um meio eficiente de se pular para um local no arquivo. Para criar uma, estando em modo normal faça:
ma
Onde m indica a criação de uma marca e a é o nome da marca. Para pular para a marca a faça:
`a
Marcas Globais
Durante a edição de vários arquivos defina uma marca global com o comando
mA
Onde 'm' cria a marca e 'A' (maiúsculo) define uma marca 'A' acessível a quaquer momento com o comando
'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. Para abrir varios arquivos uma solução seria:
vim *.txt
Para ir para o próximo arquivo:
:bn
Para ir para o arquivo anterior
:bp
Os Saltos
Para ir para o começo do arquivo digite:
gg
Para ir para o fim do arquivo digite:
G
Para ir para o começo de uma linha digite o caractere
0 zero
Para ir para o final de uma linha digite o caractere
$ cifrão
Para ir para a próxima ocorrência de uma letra faça:
f<letra> - sentido inverso F<letra>
Para colocar o cursor uma letra antes da desejada
t<letra> - sentido inverso T<letra>
Iniciar a inserção no fim da linha
A
Iniciar a inserção no começo da linha
I
Fazendo Buscas
Para fazer uma busca certifique-se de que está em modo normal, em seguida pressione / e digite a palavra a ser buscada
/end\(if\|while\|for\)
buscará "endif", "endwhile" and "endfor".
Procurando por uma quebra de linha
/quebra\nde linha
Procurando outras ocorrências da busca anterior
n N (em sentido inverso)
Dividindo a janela
CTLR + w + n Abre uma nova janela (divide) CTRL + w + s Divide o documento atula CTRL + w ++ Aumenta o espaço da janela atual CTRL + w +- Diminui o espaço da janela atual CTRL + w + w Alterna entre janelas CTRL + w + r gira janelas
O arquivo de configuração do vim
O arquivo que você deve editar é o vimrc, não deixe de visitar este link!
Repetição de Comandos
Para repetir a ultima edição saia do modo inset e pressione ponto (.)
.
Para repetição de comandos faça:
1. Posicionando no local desejado; 2. Indique o número de repetições no teclado numérico, ex: 3; 3. Entrar em modo de inserção; 4. Digitar o texto; 5. Sair do modo de inserção (tecle ESC).
Usando registros
Imagine que você tem o seguinte trecho de código
stdio.h ~ fcntl.h ~ unistd.h ~ stdlib.h ~
e quer que ele fique assim:
#include "stdio.h" ~ #include "fcntl.h" ~ #include "unistd.h" ~ #include "stdlib.h" ~
É aí que entram os registros, que podem ser 26, um para cada letra do alfabeto
para iniciar um registro faça:
qa
onde q inicia o registro e a é o próprio registro
partir do comando qa tudo que for digitado e todos os comandos
serão gravados no registro. Vamos à solução do problema proposto acima
qa Inicia a gravação do registro - Macro ^ Move para o começo da linha. i#include "<Esc> Insere a string #include " no começo da linha. $ Move para o final da linha. a"<Esc> Adiciona (append) aspas (") ao final da liha. j Vai para a próxima linha. q Para a gravação da macro.
Agora você só precisa posicionar o cursor na primeira letra de uma linha como esta
stdio.h ~
e aplicar quantas vezes for necessário o registro, para aplicar 3x faça:
3@a
o comando acima aplica 3x o registro a
Scripts vim
Usando um script para modificar um nome em vários arquivos:
Crie um arquivo chamado "subs.vi" contendo os comandos de substituição e o comando de salvamento :wq
:%s/bgcolor="white"/bgcolor="#eeeeee"/g :wq
Execute o script em todos os arquivos que deseja modificar:
foreach i ( *.let ) vim -s subs.vi $i