vim


Conteúdo mais atualizado em wiki.silva.eti.br 

edicao de texto com vim

o vim eh um fork do vi e esta presente na maioria dos sistemas operacionais modernos, por isso o dominio basico vai ajudar muito o administrador de sistema a ter condicoes de trabalhar sem dificuldade em todos eles
o vim faz uso intensivo de teclado, o que na verdade, faz com que seja muito mais elegante e funcional
aqui coloco algumas dicas que fui colecionando ao longo do tempo:

modos de edicao de arquivos

vi -b arquivo –> abre arquivo no modo binario
vi -R arquivo –> abre no modo somente leitura
vi +10 arquivo –> abre o aquivo na linha 10
vi +/palavra arquivo –> abre o arquivo e procura palavra
vi +%s/velho/novo arquivo –> abre arquivo e troca palavra velho por novo

quebra de linha

%s/,/,\r/g (help sub-replace-special)
para inserir uma quebra de linha apos um delimitador como ”,”.
util quando voce tem um arquivo assim : 1,2,3,4
e quer um arquivo assim
1,
2,
3,
4

quebra de linha sem delimitador

%s/$/\r/
10,20s/$/\r/

trabalhando com abas:

abrir nova aba - :tabnew ou :tabnew /caminho/para/arquivo
ir para proxima aba - :tabnext
ir para aba anterior - :tabprevious
sair de todas as abas - :qall
sair de todas as abas ignorando mudancas - :qall!
salvar todas as abas - :wall
salvar e sair de todas as abas - : xall

dividindo a tela:

horizontalmente - :split
verticalmente - :vsplit
navegar entre as divisoes da tela - manter pressionado e digitar ww
fechar a divisao de tela atual - :q

em modo visual:

selecao visual, recortar, copiar, colar:
para comecar/encerrar o modo de selecao visual, va para o modo de visualizacao (esc) e tecle v
selecao da linha inteira: V (sim, V maiusculo, pode ser com shift ou caps lock)
recortar: no vim recortar e deletar sao a mesma coisa, pense como uma remocao que mantem o item removido em memoria:
deletar/recortar a linha inteira: dd
colar do cursor em diante: p (funciona em modo visual, substituindo o item selecionado)
colar do cursor para tras: p
copiar em modo nao visual: yy (copia a linha inteira)
copiar visualmente:y
desfazendo os acoes: u
refazendo o desfeito: r
:g/^$/d apaga as linhas em branco

auto-completion

enquanto estiver em modo de insercao tecle:
n ou p para autocompletar reaproveitando as palavras do arquivo atual
para autocompletar usando recursos do tipo de arquivo atual(javascript, html, python, css, ruby, etc):
mantenha pressionado e tecle xo

transformando tudo em Uppercase ou lowcase

:%s/./\U&/g –> Uppercase
:%s/./\L&/g –> Lowcase

inserindo comentarios

:1,10s/^/#/g –> insere comentario da linha 1 ate a linha 10
:.,+5s/$/./ –> insere comentario no final das proximas 5 linhas
para repetir na linha 11 por exemplo, digite
:11  &

apagar textos

x –> apaga texto sobre o cursor
a –> insere texto
dd –> apaga uma linha inteira
dw –> apaga palavra sobre o cursor
d$ –> apaga tudo do cursor atéo final da linha
dG –> apaga tudo do cursor ate o final do arquivo

alterando textos

R –> pressionando antes de uma palavra, basta digitar a palavra nova
r –> substitui um unico caractere no texto
~ –> altera um caractere para Mm (maiusculo/minusculo)
cw –> altera palavra ou parte da palavra a esquerda do cursor
cc –> altera linha
C –> altera parte da linha a direita do cursor
J –> junta linha corrente com a proxima linha
xp –> muda o caracter que o cursor esta posicionado com o caracter a direita
u –> desfaz o comando anterior
U –> desfaz todas as alteracoes da linha
:u –> desfaz o comando anterior da linha
:g/.*/mo0 –> inverte o texto
:g/^/mo0 –> coloca o texto invertido na ordem correta

comandos de movimentacao no texto

h –> esquerda
j –> para baixo
k –> para cima
l –> para direita
w –> move cursor para inicio da proxima palavra
b –> move cursor para comeco da palavra anterior
CTRL-F –> move o cursor uma pagina a frente
CTRL-B –> move o cursor uma pagina para tras
G – > move o cursor para o final do arquivo
55G –> move o cursor para a linha 55
|1| para navegar diretamente para uma posicao em um arquivo texto, use | n |, onde n eh o numero da posicao que deseja ir

copiar ou mover texto

yy ou Y –> marca linha a ser copiada
p –> copia linha marcada abaixo da linha corrente
P–> copia linha marcada acima da linha corrente
dd –> apaga linha
1,2 co 3 –> copia linha 1 e 2 e coloca apos a linha 3
4,5 m 10 –> move linha 4,5 colocando apos a linha 10

caracteres especiais em procuras

^ início de linha


$ final de linha

. qualquer caracter

* 0 ou mais caracteres

\+ uma ou mais ocorrência

^$ linhas em branco

\s,\S espaço em branco,não-espa

\d,\D dígito, não-dígit

\u,\U,\l,\L maiúsculas,não-maiúsculas,minúsculas,não-minú

\<,\> início,fim de uma palavr

/ \<.\{3}\> sequências de exatamente três caractere

/ \<\w\{,5} palavras (sem dígitos ou caracteres especiais) de até digitos

:bufdo BufferDo: realiza as substituições em todos os arquivos do buffer


executando comandos no linux

:!command
:!date
:!sh
:r !date
:!ls
:r arquivo
:1,10!sort –> ordena da linha 1 ate a 10

comandos com janelas

^Wn Nova Janela
^Wn Dividir a Janela
^Wn^^ Dividir para #
^Wv Dividir verticalmente
^Wc Fechar
^Wo Fechar outra(s)
^WR Girar para cima
^Wr Girar para baixo
^W= Mesmo Tamanho
^W_ Altura Maxima
^W1_ Altura Minima
^W| Largura Maxima
^W1| Largura Minima
^WK Mover para cima
^WJ Mover para Baixo
^WH Mover para esquerda
^WL Mover para Direita

Impressão com o vim

Para imprimir todo o texto :ha :ha –> hardcopy
Para imprimir um intervalo :10,50 ha

algumas referencias