Usando o vi

Iniciado por Alysson Neto, 03 de Março de 2006, 17:24

tópico anterior - próximo tópico

Alysson Neto

Apesar de muitos acharem um editor dificil de usar o vi é extremamente simples e poderoso, e uma ferramenta que se deve saber usar. Ele esta em praticamente qualquer linux e para se trabalhar em servidores aonde não se tem ambiente grafico ou outros editores (o que é normal) ele salva a patria, sem falar na agilidade que ele tem para edição quando se conhece seus atalhos. Por isso to colocando aqui um guia que achei no site do Aurelio para os que quiserem começar a aprender o vi usarem  como referência.

Entrar e Sair

   * vi arquivo.txt <ENTER>
   * :q <ENTER>

Entrar, Inserir Texto, Salvar e Sair

   * vi arquivo.txt <ENTER>
   * i
   * Minha primeira frase no VI.
   * <ESC>
   * :wq <ENTER>

Entrar, Alterar Texto e Sair sem Salvar

   * vi arquivo.txt <ENTER>
   * dd
   * :q! <ENTER>

Entrar, Alterar Texto, Salvar em Outro Arquivo e Sair

   * vi arquivo.txt <ENTER>
   * yy
   * p
   * :w arquivo-novo.txt <ENTER>
   * :q <ENTER>

Configurar o VI

   * vi ~/.vimrc <ENTER>
   * i
   * set vb ru nu <ENTER>
   * set ic is hls scs
   * <ESC>
   * :wq <ENTER>

Repetir a Primeira Linha 2 Vezes e Apagar a Última

   * vi arquivo.txt <ENTER>
   * gg
   * yy
   * p
   * p
   * G
   * dd

Repetir Comandos

   * vi arquivo.txt <ENTER>
   * A
   * FIM
   * <ESC>
   * j
   * .
   * j
   * .

Abrir Dois Arquivos Simultaneamente

   * vi arquivo.txt <ENTER>
   * :split ~/.vimrc <ENTER>
   * Ctrl+W
   * Ctrl+W
   * :q <ENTER>
   * :q <ENTER>

Obter Ajuda

   * vi arquivo.txt <ENTER>
   * :help <ENTER>

Comandos de Arquivo

:q Sai do VI
:w Salva alteraçoes feitas
:wq Salva aterações e sai do VI
:q! Sai sem salvar
:w abc Grava arquivo com o nome 'abc'
:r abc Insere o conteúdo do arquivo 'abc'
:e abc Edita o arquivo 'abc'

Modo de Inserção

i Entra no modo de Inserção
a Entra no modo de Inserção, após o cursor
o Entra no modo de Inserção, em uma nova linha
<ESC> Sai do modo de Inserção

Copiar, Cortar e Colar

yy Copia a linha inteira
5yy Copia as 5 próximas linhas
dd Apaga a linha
5dd Apaga 5 linhas
x Apaga uma letra
5x Apaga 5 letras
p Cola o trecho copiado ou apagado
V Seleção visual de linhas

Pulos

gg Pula para a primeira linha
G Pula para a última linha
44G Pula para a linha número 44
w Pula para a próxima palavra
b Pula para a palavra anterior
{ Pula para o parágrafo anterior
} Pula para o próximo parágrafo
( Pula para a frase anterior
) Pula para a próxima frase
f. Pula até o próximo ponto (.), na mesma linha
`` Desfaz o pulo, volta

Apagando com esperteza

dgg Apaga até o início do arquivo
d0 Apaga até o início da linha atual
dw Apaga a palavra
d4b Apaga as quatro palavras anteriores
df. Apaga até o próximo ponto
d) Apaga até o fim da frase

Outros

J Junta a próxima linha com a atual
u Desfaz o último comando
Ctrl+R Refaz o último comando desfeito
. Repete o comando anterior
hjkl Movimenta o cursor
/ Pesquisa um texto
n Vai para o próximo resultado da pesquisa
:%s/a/b/g Troca 'a' por 'b' em todo o texto
:!cmd Executa o comando externo 'cmd'
:r!cmd Insere o resultado do comando externo 'cmd'


Retirado de http://aurelio.net/curso/material/vim-ref.html
"Eu rejeito sua realidade e substituo pela minha" Adam Savage,

galactus

Muito bom. Agora aprendi! :)
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

cafecraft

Outra dica lega!..

esc :set number

Ele numbera as linhas!.. ajuda muito quando precisamos encontrar uma linha com erro.
[color=red]Assinatura removida conforme a regra 8. O prazo era até 13/02.[/color]

Xterminator

É isto é referente ao VIM acho que vale pro NVI e o ELVIS
mas o VI original é um saco.
note que a maioria das distros traz o VIM ao invés do VI

edson@Zumbi:~$ update-alternatives --display vi
vi - status is manual.
link currently points to /usr/bin/vim
/usr/bin/vim - priority 120
slave vi.1.gz: /usr/share/man/man1/vim.1.gz
Current `best' version is /usr/bin/vim.

Supermouse

sei la, eu acho o vi/vim meio sacal...

ele é muito bom pra programadores, mas pra quem quer apenas um editor de texto em modo texto, está pra nascer um que supere o nano...
Lembrando que essa é apenas a minha opinião, e se você discordar, você está errado.

agente100gelo

Eu acho o VI coisa de extra-terrestre. Exageradamente complicado.
Eu uso o nano e o Joe.
Advogado e analista de sistema cearense.
Twitter: @glaydson

Alysson Neto

Cara não tem nada de complicado, é tudo atalho de teclado se você ver.
"Eu rejeito sua realidade e substituo pela minha" Adam Savage,

agente100gelo

Eu sei, mas pra q decorar tanta coisa se tem outros com menu? :)

Eu estudei o VI no Unix na faculdade em 1993/94. Mas a vida tem tanta coisa pra aprender, q prefiro não perder tempo com isso ;)

Mas diz se não é extra-terrestre o modo de inserir um texto?


   * vi arquivo.txt <ENTER>
   * i
   * Minha primeira frase no VI.
   * <ESC>
   * :wq <ENTER>

Eu acho q quem gosta, tranquilo, eu só fico meio assim qdo sugerem o VI para iniciantes tendo o Nano, ou GEdit (quando possível).
Advogado e analista de sistema cearense.
Twitter: @glaydson

Alysson Neto

Eu acostumei com ele no slack tendo o mc pra usar. Mas o mesmo iniciante pode pegar uma distro que tenha somente ele.
"Eu rejeito sua realidade e substituo pela minha" Adam Savage,

tfmoraes

Outro truque:

<ctrl> + p = para autocompletar.

No Vim tem o modo visual. Estando no modo de comando, tecle v para seleção horizontal, e <ctrl> + v para seleção horizontal.
Um truque interessante:
Imagine que você programando ou editando um arquivo. E você precisa adicionar uma palavra no começo de várias linhas. Faça o seguinte:
<ctrl> + v e selecione as linhas, tecle <shift> + i e escreva a palavra(s) depois <esc>, mágica!
Este truque foi retirado de uma edição, não me lembro, da Linux Magazine.

zank

Citação de: "cafecraft"Outra dica lega!..

esc :set number

Ele numbera as linhas!.. ajuda muito quando precisamos encontrar uma linha com erro.


Eu particularmente so acho um problema para quem programa usando vi setar o number que nem acima, (quando temos que copiar e colar ele leva os números juntos)

para ir direto a uma linha eu uso (ESC para sair do modo de inserção se tiver)
:15 <enter>

no exemplo acima vai para a linha 15 :D

bom já que já to aqui no forum e estamos falando de dicas ae vai uma que eu usei bastante
Retirar linhas duplicadas de um arquivo
esc ->para tirar modo de inserção caso estiver
gg   ->vai para primeira linha
shift+v  ->selecionar linha
G    ->seleciona até a última linha
:(dois pontos)!(esclamação)     -> vai ficar algo tipo isso aparecendo ali na linha de comando ":'<,'>!" é isso ae mesmo
depois digite 'sort' vai ficar assim :'<,'>!sort
<enter>
bom até ae fizemos o primeiro passo (ele ordena o arquivo em ordem alfabética)

segundo passo
esc ->para tirar modo de inserção caso estiver
gg   ->vai para primeira linha
shift+v  ->selecionar linha
G    ->seleciona até a última linha
:(dois pontos)!(esclamação)     -> vai ficar algo tipo isso aparecendo ali na linha de comando ":'<,'>!" é isso ae mesmo
depois digite 'uniq' vai ficar assim :'<,'>!uniq
<enter>

Pronto agora apagamos as linhas repetidas , espero que seja útil para vocês como já foi muitas vezes para mim :D

stumm

pra comecar a usar o vim o cara leva um tempinho... mas depois q comeca, fica dificl de usar outro editor...

zank

ae vai outra dica pra facilitar a vida

:abbreviate teste isto é um teste

explicando o comando acima

sempre que digitar a palavra teste(modo de inserção) e der um espaço, o vim vai substituir por isto é um teste

ps: sempre que eu seto um abbreviate ele so fica no arquivo corrente, fechando o vim ele perde este abbreviate

ps2: se quizer setar um abbreviate fixo é so editar o arquivo :  vi ~/.vimrc

e colocar o abbreviate lá, vou colar um exemplo dos abbreviates do meu vimrc abaixo.
"alterações feitas por mim
abbreviate epre echo("<pre><hr>");print_r($);echo("</pre><hr>");die();
abbreviate abr  <br>
abbreviate fbr  </br>
abbreviate apre  <pre>
abbreviate fpre  </pre>
abbreviate atr   <tr>
abbreviate ftr   </tr>
abbreviate atd   <td>
abbreviate ftd   </td>
abbreviate eu Fernando Zank Correa Evangelista
abbreviate ti tabindex='<?=$cont++;?>'

bom eu uso estes pra programar e setar as tags para mim.

Era isso espero ter ajudado alguém, []'s

stumm

insira essas linhas no seu ~/.vimrc e a completação por tab no vim estará ativada...

function InsertTabWrapper()
     let col = col('.') - 1
     if !col || getline('.')[col - 1] !~ '\k'
         return "\<tab>"
     else
         return "\<c-p>"
     endif
endfunction
inoremap <tab> <c-r>=InsertTabWrapper()<cr>

zank

vim 7 agora tem lista de autocompletar e como criar tab, vale a pena atualizar, baixe em www.vim.org