terça-feira, 18 de setembro de 2007

Usando o Vi para programar e tb editar textos

Editor Vi (vi-ai)

O editor VI (visual) é um dos mais utilizados nos Unix, e derivados; apesar conter comandos enigmáticos, com o tempo torna-se simples, operá-lo.

Command Mode - Input Mode
Basicamente o VI trabalha em dois modos, Command Mode onde você digita parâmetros, como salvar, sair, copiar etc..., e o Input Mode Onde você digita o conteúdo, modo de inserção.

Por quê de utilizar o VI?
Apesar de hoje as interfaces gráficas do Gnu/Linux serem bastante robustas, e evitarem ao máximo que o usuário final precisa conhecer as linhas de comando do Unix, você ainda deve dominar algum editor de texto em modo-caracter, Exemplo:
Você tentou iniciar o X (Interface gráfica) e pôr algum motivo travou, e você só tem a linha de comando ao seu alcance. O problema pode ser fácilmente resolvido editando o arquivo /etc/X11/XF86config , caso não conheça nenhum editor de texto em modo-caracter, VI , E-macs, etc... como resolver isto?:-).


INTRODUÇÃO
"vi" é a sigla para "Visual Interface". A origem desse nome se deve ao seguinte fato: quando o vi foi criado (começo da década de 80), não era comum existirem editores de textos como nos dias de hoje. Naquela época, você digitava um texto mas não podia vê-lo! Isso mesmo! Em 1992, foi criado o vim (Vi IMitator), um clone fiel ao vi, porém com muitas outras funcionaliades, que só foram sendo adicionadas. Algum tempo depois, o vim passou a ser chamado de `Vi IMproved' (vi melhorado).

O vim é um dos editores de textos mais utilizados no mundo Unix. Em alguns sistemas, existe um link simbólico (/bin/vi) apontando para o /usr/vim. Em outros, o /bin/vi é o executável, só que executa diretamente o vim. Muita gente acha que usa vi, mas na verdade utiliza o vim, e eles têm algumas diferenças:-)

O vim é um editor de textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo, possui sistema de autocorreção, auto-identação, seleção visual, macros, seleção vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais. Ele não é exclusivo do Unix, ou seja, pode ser executado em outras plataformas, como Amiga, MacOS, Sun, Windows entre outras. Existe também o gvim, que é o vim em modo gráfico, com todas as funcionalidades do vim em pleno funcionamento, o que muda é apenas o modo gráfico mesmo.

Editor de HTML? Shell Script ? C+ etc...
Sim, é possivel utilizar o VI para programar, na verdade muitos fazem isto, já que ele é um editor puro.

Editando um pequeno Texto no VI
Abra um terminal e digite VI, caso não obtenha resposta pode ser que o sistema não esteja instalado, apesar de ele existir em quase todas as distribuições linux, você deve instalá-lo de acordo com o sistema de instalação da distro que estiver usando.

1º) Você pode abrir um arquivo diretamente com o VI, ou abrir o VI e carregar um arquivo, no entanto a primeira opção é muito mais simples.
Para criar um arquivo, basta digitar na linha de comando do Shell

darkstar:~# vi nome_do_arquivo

Quando o Editor VI iniciar digite a tecla (i) de insert, ou mesmo a tecla insert; neste momento você está no modo de edição, basta digitar um conteúdo qualquer.
Suponho que já tenha digitado bastante, vamos conhecer o modo command line, você tem várias opções, como gravar, sair, sair sem gravar, etc... Para entrar no modo de comando digite a tecla ESC, e depois : (dois pontos).Segue abaixo as opções para o command line:

:w => Salva o arquivo que está sendo editado no momento
:q => Sai sem salvar
:wq => Salva e sai
:x => Idem
ZZ => Idem
:w! => Salva forçado
:q! => Sai forçado
:wq! => Salva e sai forçado

Com o tempo, você vai sentir saudades do famoso comando utilizado pelos alunos de hoje em dia, o CTRL + C e o CTRL + V . :-) Pois bem, o VI permite que você copie e cole também.
Para copiar uma linha, aperte ESC somente , caminhe com o as setinhas do teclado até a linha que você deseja copiar, e digite y depois caminhe ao lugar onde deseja copiar e digite p.

Para voltar desfazer uma operação, o famozo CTRL + Z, digite Esc + u , segue abaixo algumas outras sintaxes:

Subcomandos para localização de texto /palavra => Procura pela palavra ou caracter acima ou abaixo do texto.
?palavra => Move para a ocorrência anterior da palavra (para repetir a busca use "n")
n => Repete o último comando utilizando / ou ?
N => Repete o último comando / ou ? ao contrário (baixo para cima)
Ctrl+g => Mostra o nome do arquivo, o número da linha corrente e o total de linhas

Mais opções para remoção de caracteres x => Apaga o caracter onde o cursor estiver
dd => Apaga a linha inteira onde o cursor estive
D => Apaga a linha a partir da posição do cursor até o fim
J => Une a linha corrente à próxima
:5dd => Removeas próximas 7 linhas a partir da posição do atual do cursor (qualquer número)

Mais para copiar e colar

:yy => Copia a linha onde o cursor se encontra
:5yy => Copia as próximas 5 linhas a partir da posição atual do cursor
:p => Cola o que foi copiado na linha abaixo do cursor atual

Opções para substituição de textos

rCARACTER => Substitui o caracter onde o cursor se encontra pelo caracter especificado em CARACTER
RTEXTO => Substitui o texto corrente pelo texto digitado (sobrepõe)
cw => Remove a palavra corrente para substituição
cc => Remove a linha corrente para substituição
C => Substitui o restante da linha corrente, esperando o texto logo após o comando
J => Une a linha corrente à próxima
:s/velho/novo => Substitui a primeira ocorrência de "velho" por "novo" na linha corrente
:% s/velho/novo => Substitui em todo o arquivo (%) a primeira ocorrência de "velho" por "novo" em cada linha
:% s/velho/novo/g => Substitui em todo o arquivo (%), todas (g) as ocorrências de "velho" por "novo"
:% s/velho/novo/gc => Igual ao anterior, mas pedindo confirmação para cada substituição
:% s/^String[0-9]//gc => Expressões regulares também funcionam, como no sed
:% s/./\u&/gc => Converte para maiúsculas (\u) o primeiro caracter (.) de cada linha

Você pode conhecer um pouco mais sobre o VI no site:
http://howto.linux.org.ba/howto/vi.htm