You are on page 1of 16

UnderLinux

Guia para utilização do Editor VI
Autoria de 24 de março de 2005

O objetivo deste documento é mostrar a potencialidade do editor de textos VI e servir como guia de consulta para os usuários. Ele é propositadamente incompleto, evitando informação excessiva e grande custo para a sua elaboração sem retorno efetivo. Para uso mais avançado, recomendo o manual do clone do VI denominado ELVIS, que é muito bom e completo ( este programa é gratuito e pode ser instalado em micros. Para os que gostarem do VI, eu recomendo ... ). Por outro lado, procurei colocar uma grande quantidade de exemplos, com o objetivo de torná-lo um guia de consulta, pois essa é uma grande carência de todos os manuais a que tive acesso ( e foram vários pois, a não ser o do ELVIS, nunca consegui informações de forma compacta e completa em um único documento ).

Comandos para editar texto ( inserir, escrever por cima e substituir ) ·Comando para inserir texto antes da posição corrente ==> i Uso: inserir texto antes da posição corrente. Quando terminar de inserir teclar Esc. Pode-se inserir um texto através do mouse, desde que tenhamos guardado no “buffer do mouse” e estejamos em modo de inserção. O comando I insere texto no início da linha corrente.

·Comando para inserir texto após a posição corrente ==> a Uso: inserir texto após a posição corrente. Quando terminar de inserir teclar Esc. Pode-se inserir um texto através do mouse, desde que tenhamos guardado no “buffer do mouse” e estejamos em modo de inserção. O comando A insere texto ao final da linha corrente.

·Comando para inserir uma linha e abri-la para edição ==> o ou O Uso: inserir linha na linha seguinte à linha corrente ( comando o ) ou antes da linha corrente (comando O). Quando terminar de inserir teclar Esc.

·Comando para escrever em cima do texto corrente ==> R Uso: Tudo que for teclado substituirá o texto já existente. Quando terminar teclar Esc.

·Comando para substituir um certo trecho do texto por um novo texto ==> c Funciona como um comando de eliminação ( comando d ) seguido de um comando de inserção ( comando a ou i ). Quando terminar de inserir teclar Esc. Exemplos: cc ( substitui toda a linha corrente ) 3cc ( substitui a linha corrente e as 2 próximas ) cw ( substitui a palavra onde o cursor se situa ) cW ( substitui a palavra onde o cursor se situa ) Obs: a diferença entre w e W é a seguinte: o w considera como final da palavra qualquer caracter da acentuação, enquanto que o W só considera a palavra finalizada quando encontra um caracter branco )
http://underlinux.com.br Powered by Joomla! Gerado em: 21 March, 2006, 22:09

equivalente ao cc ) Obs: o comando u ( undo ) desfaz a operação do comando s. Não entra em insert mode ) Obs: este comando é útil para substituir rapidamente um caracter sem entrar em insert mode ) ·Comando para trocar de letra maiúscula para minúscula e vice versa ==> ~ Este comando. 2006. Exemplo: ra (substitui o caracter corrente pela letra a. Exemplos: 7s ( substitui os 7 primeiros caracteres. substitui a letra maiúscula pela letra minúscula e vice versa. não entra em insert mode ) 5r= (substitui 5 caracteres pela símbolo de igualdade. Este comando é equivalente ao comando C c^ ( substitui todos os caracteres da primeira coluna até a posição corrente ). ·Comando para substituir um certo número de caracteres por um novo texto ==> s Ele funciona como um comando de eliminação ( comando d ) seguido de um comando de inserção. 22:09 . armazenar no buffer.br Powered by Joomla! Gerado em: 21 March. seguido pelo caracter que substituirá. c_f ( substitui todos os caracteres da posição atual até a primeira aparição de um “underscore” na linha corrente ) 3cft ( substitui todos os caracteres da posição atual até a terceira aparição de uma letra t na linha corrente ) 7cl ( substitui os 7 primeiros caracteres ) C ( substitui tudo da posição corrente até o final da linha. Comandos para posicionar o cursor. quando teclado sobre uma letra. O símbolo $ indica final de linha. Equivale ao c$ ) Obs: o comando u ( undo ) desfaz a operação do comando C.UnderLinux 4cw ( substitui a palavra corrente e as 3 próximas ) 3cW ( substitui a palavra corrente e as próximas 2 ) c$ ( substitui todos os caracteres da posição corrente ao final da linha ). equivalente a 7cl ) S ( substitui toda a linha corrente. ·Comando para substituir um certo número de caracteres por um outro caracter ==> r Uso: um número ( opcional ) seguido pela letra r. copiar ( pequeno número de linhas ) ·Comando para posicionar o cursor em uma linha ==> G http://underlinux. apagar. O símbolo ^ indica início de linha. Quando terminar de inserir teclar Esc.com.

que permitirá que posteriormente seja copiada. Caso a coluna não exista. o total de linhas e o nome do arquivo sendo editado ==> CtrlG ( tecla control e letra G apertadas simultaneamente ) ·Comando para marcar uma linha para posterior referência ==> m Utilizado para colocar uma identificação em uma linha. movida.UnderLinux Uso: colocar o numero da linha seguido da letra G Exemplo: 121G ( vai para a linha 121 ) G ( vai para a última linha ) ·Comando para posicionar o cursor em uma coluna ==> | Uso: colocar a coluna seguido pelo caracter |. Exemplo: ´a ( posiciona o cursor na linha que foi anteriormente marcada com ma ) ´´ ( posiciona o cursor na posição em que estava antes da posição atual ) ·Comando para colocar no buffer anônimo um conjunto de caracteres ou linha(s) ==> y Este comando permite armazenar caracteres para posterior utilização. ·Comando para saber qual o número da linha em que está o cursor. dar um comando p para repeti-los em outro local. Exemplo: 12| ( posiciona o cursor na coluna 12 da linha corrente ). a seguir. Ver comando ´ ) ·Comando para posicionar o cursor em uma linha que já foi previamente marcada ==> ´ Uso: colocar o plic seguido da letra referente à linha que marcamos anteriormente. O uso mais freqüente é guardá-los e.com. 2006. Uso: colocar a letra m seguido de uma única letra que identificará a marca associada a linha. seguido da letra y. 22:09 .br Powered by Joomla! Gerado em: 21 March. seguido de um identificador dos caracteres a serem armazenados. Exemplos: http://underlinux. apagada ou que se retorne a ela. Exemplos: ma ( marca a linha aonde o cursor está. A letra a servirá para referenciá-la. Uso: Um número ( opcional ). o comando posiciona no último caracter da linha.

yf_ ( coloca no buffer se nome todos os caracteres da posição atual até a primeira aparição de um “underscore” na linha corrente ) 3yft ( coloca no buffer sem nome todos os caracteres da posição atual até a terceira aparição de uma letra t na linha corrente ) 7yl ( coloca os 7 primeiros caracteres no buffer anônimo ) ·Comando para inserir o buffer anônimo em alguma posição do texto ==> p ou P Serve para inserir o que foi gravado no buffer anônimo após a posição do cursor ( letra p ) ou antes ( letra P ).UnderLinux yy ( coloca toda a linha corrente no buffer anônimo ) 3yy ( coloca a linha corrente e as 2 próximas no buffer anônimo ) yw ( coloca a palavra onde o cursor se situa no buffer anônimo ) yW ( coloca a palavra onde o cursor se situa no buffer anônimo ) Obs: a diferença entre w e W é a seguinte: o w considera como final da palavra qualquer caracter da acentuação. O uso mais freqüente é guardá-los e a seguir dar um comando p para repeti-los em outro local. Uso: Um número ( opcional ). Exemplos: “ayy ( coloca toda a linha corrente no buffer a ) “B2yy ( adiciona ao buffer b a linha corrente e a próxima ) Para trazer algumas linhas de um outro arquivo podemos executar os seguintes comandos: :w ( salva o arquivo que está sendo editado ) :e arquivo2 ( abre para edição o arquivo de nome arquivo2 ) /SUBROUTINE ( procura a palavra SUBROUTINE ) http://underlinux. significa que acrescentaremos ao buffer a informação do comando atual. 22:09 . seguido de y. caso contrário insere um texto ( ex: o último comando para colocar no buffer foi yW ) ·Comando para colocar em um buffer com nome um conjunto de caracteres ou linha(s) ==> “ay ou “by etc. seguido da letra que dá nome ao buffer ( minúscula ). 2006. Caso coloquemos a letra que identifica o buffer em maiúscula. A vantagem deste comando com relação ao y puro é que como o buffer aonde são armazenados os caracteres ( ou linhas ) tem nome. conforme pode ser visto no exemplo. este pode ser utilizado posteriormente sem risco de perder a informação ( lembre que o buffer anônimo é atualizado a cada vez que colocamos algo no buffer ou a cada vez que alteramos alguma coisa no texto ). seguido de um identificador dos caracteres a serem armazenados. Se o buffer contiver linhas ( ex: foi dado comando yy ) este comando insere linhas. y^ ( coloca todos os caracteres da primeira coluna até a posição corrente no buffer anônimo ). Este comando permite armazenar caracteres para posterior utilização. O símbolo $ indica final de linha. Além disso.com. enquanto que o W só considera a palavra finalizada quando encontra um caracter em branco 4yw ( coloca a palavra corrente e as 3 próximas no buffer anônimo ) 3yW ( coloca a palavra corrente e as próximas 2 no buffer anônimo ) y$ ( coloca todos os caracteres da posição corrente ao final da linha no buffer anônimo ). O símbolo ^ indica início de linha. permite que passemos informação de um arquivo para outro.br Powered by Joomla! Gerado em: 21 March.

insere as linhas do buffer na linha seguinte à linha corrente ) ·Comando para apagar um conjunto de caracteres ou linhas ==> d Uso: Um número ( opcional ). enquanto que o W só considera a palavra finalizada quando encontra um caracter em branco. Ver comando anterior para exemplo de uso. 4dw ( apaga a palavra corrente e as 3 próximas ) 3dW ( apaga a palavra corrente e as próximas 2 ) d$ ( apaga todos os caracteres da posição corrente ao final da linha ). seguido de um identificador dos caracteres a serem apagados. caso contrário insere um texto.UnderLinux “k20yy ( coloca no buffer k a linha corrente e as próximas dezenove ) :e# ( retorna para o arquivo que estávamos editando anteriormente ) 200G ( posiciona o cursor na linha 200 ) “kp ( copia o buffer k para após a linha corrente ) ·Comando para inserir um buffer com nome em alguma posição do texto ==> “ap ou “aP ou “bp etc Serve para inserir o que foi gravado em um buffer com nome após a posição do cursor ( letra p ) ou antes ( letra P ). seguido da letra d. O símbolo $ indica final de linha. Uso: devem ser colocadas aspas seguidas da letra que indica o nome do buffer. Caso seja um conjunto de linhas. O símbolo ^ indica início de linha.com. 22:09 . 2006.br Powered by Joomla! Gerado em: 21 March. d^ ( apaga todos os caracteres da primeira coluna até a posição corrente ). Exemplos: dd ( apaga toda a linha corrente ) 3dd ( apaga a linha corrente e as 2 próximas ) dw ( apaga a palavra onde o cursor se situa ) dW ( apaga a palavra onde o cursor se situa ) Obs: a diferença entre w e W é a seguinte: o w considera como final da palavra qualquer caracter da acentuação. seguida pela letra p ( inserção após a posição corrente ) ou letra P ( inserção antes da posição corrente ). df_ ( apaga todos os caracteres da posição atual até a primeira aparição de um “underscore” na linha corrente ) 3dft ( apaga todos os caracteres da posição atual até a terceira aparição de uma letra t na linha corrente ) 7dl ( apaga os 7 primeiros caracteres após a posição do cursor ) D ( apaga tudo da posição corrente até o final da linha ) http://underlinux. Exemplo: “ap ( caso o conteúdo do buffer a seja um conjunto de caracteres insere-o na posição a seguir da posição atual do cursor. Se o buffer contiver linhas ( ex: foi dado comando yy ) este comando insere linhas.

Uso: barra seguido pelo conjunto de caracteres a ser encontrado.Uso de”. qualquer http://underlinux.com. Este pode ser uma “regular expression”. Neste exemplo. Se alcançar o final do arquivo continua a procura. indica que qualquer caracter satisfará a busca. O símbolo $ indica final de linha ) /^ *DO WHILE ( procura a linha que comece com 1 ou mais brancos e que depois tenha o conjunto de caracteres “DO WHILE”. O símbolo . Obs: o comando U refaz a linha corrente para a última situação. O símbolo * indica zero ou mais aparições do caracter que o antecede.Uso de ( procura o conjunto de caracteres “Capitulo “. /^CC ( procura o conjunto de caracteres “CC” no texto no início da linha. Obs: da mesma forma que o comando y o comando d também coloca o que foi apagado no buffer anônimo. O símbolo ^ indica início de linha ) /^CC ( procura o conjunto de caracteres “^CC” no texto. É muito útil para mover texto de um local para outro do arquivo ( apaga e na nova posição usa o comando p ) Obs: para apagar um conjunto grande de linhas deve-se utilizar o comando :d ·Comando para apagar um número conhecido de caracteres ==> x O comando x apaga o caracter corrente e o comando X apaga o caracter anterior.Brasil” no texto ). seguido do conjunto de caracteres “ . a barra invertida indica que o seu significado não deve ser levado em conta ) /de 1995$ ( procura o conjunto de caracteres “de 1995” no texto no final da linha. Obs: da mesma forma que o comando y o comando x também coloca o que foi apagado no buffer anônimo. Muito útil para o caso de apagar erradamente. 22:09 .Brasil ( procura o conjunto de caracteres “Petrobras . Exemplos: x ( apaga o caracter corrente ) 2X ( apaga os 2 caracteres antes da posição corrente ) Obs: o comando x é equivalente ao comando dl e o comando X é equivalente ao dh Obs: o comando u ( undo ) desfaz a última operação realizada.UnderLinux Obs: o comando u ( undo ) desfaz a última operação realizada. . que neste caso é o branco ) /Capitulo . 2006.br Powered by Joomla! Gerado em: 21 March. Muito útil para o caso de apagar erradamente. Apesar de ^ indicar início de linha. É muito útil para mover texto de um local para outro do arquivo ( apaga e na nova posição coloca um p ) Comandos para procurar e repetir operações ·Comando para procurar um dado grupo de caracteres para frente ==> / Este comando procura um grupo de caracteres para frente a partir da posição em que o cursor se encontra. que permite ao usuário procurar com maior grau de liberdade. Obs: o comando U refaz a linha corrente para a última situação. Exemplos: /Petrobras . seguido de um caracter qualquer.

UnderLinux que fosse o número do capítulo com 1 algarismo que fosse seguido por “ . Permite que uma operação seja repetida com facilidade. mover. o Capitulo 12 não seria aceito. copiar.Uso de”. A seguir tecle n para procurar a próxima aparição de mapa e . 2006. Este pode ser uma “regular expression”. Para desativá-lo tecle :set noignorecase Para repetir a procura basta usar o comando n. a-z significa todas as letras entre a e z. O ponto repete o último comando executado que alterou algo no texto. ao invés do meio da tela.Uso de ( procura o conjunto de caracteres “Capitulo “. Exemplo: Se quisermos substituir a palavra mapa pela palavra seção ao longo de um texto podemos realizar o seguinte procedimento: Tecle /mapa e depois Enter. ·Comando para procurar um dado grupo de caracteres para trás ==> ? Este comando procura um grupo de caracteres para trás a partir da posição em que o cursor se encontra. Neste exemplo. como usual. Obs: o comando :set ignorecase permite que as procuras sejam feitas sem considerar se as letras são maiúsculas ou minúsculas. rapidamente. pois tem mais que um caracter numérico ) /Secao [a-z] ( procura o conjunto de caracteres “Secao “ seguido de uma letra do alfabeto. Se teclar N a busca será repetida na direção oposta ( isto permite que retornemos rapidamente às palavras achadas anteriormente ) ·Comando para repetir a última alteração no texto ( inserção. O > indica fim de palavra. Comandos para apagar. gravar em arquivos e trazer outros arquivos ( grande número de linhas ) http://underlinux. Teclando n. satisfazem a procura. Uso: interrogação seguido pelo “conjunto de caracteres” a ser encontrado. O ^ dentro do colchete indica que não é para aceitar a letra a. caso sejam encontrados . Obs: Quando encontra o final do arquivo o comando começa a procurar a partir do início. cada aparição de mapa. a linha que ele mostra está posicionada no topo da tela.br Powered by Joomla! Gerado em: 21 March.com. Se alcançar o final do arquivo. O cursor ficará sobre a palavra mapa. Nesta situação. eliminação. Tecle cw para substituir a palavra.Uso de” seria encontrado ) /Capitulo [123456789] . substituirá. continua a procura. 22:09 . que permite ao usuário procurar com maior grau de liberdade. seguido do conjunto de caracteres “ . /test[^a] ( procura o conjunto de caracteres “test” que não seja seguido pela letra a. Os caracteres que estão entre colchetes são tais que. para que esta seja substituída por “secao”. Tem a mesma sintaxe do comando anterior ( / ). Exemplos: ?TIME ( procura a palavra “TIME” da posição corrente para trás ) Uma maior variedade de exemplos pode ser vista no comando / ·Comando para repetir procura ==> n ou N Tecle n para que a última busca efetuada seja repetida. seguido de um caracter numérico. substituição etc ) ==> . Também são válidas faixas numéricas ) / ( procura palavra terminada pelo conjunto de caracteres “ndez”. teclando a seguir secao e um Esc para encerrar a edição.

-5..co´b ( copia de 2 linhas antes da linha marcada com o comando ma até a linha corrente para após a linha marcada com o comando mb ) :/SUBROUTINE/.com. 22:09 . equivalente a “:1. isto é. repete a linha. Estas linhas são copiadas após a centésima linha ) http://underlinux. ( copia a linha corrente após a linha corrente. inclusive.co$ ( copia todas as linhas desde a linha que foi marcada com o comando ma até a linha corrente ( o ponto indica linha corrente ) para após o final do arquivo ( o $ indica final de arquivo ) :.$d” ) Obs: O comando u desfaz o comando :d ·Comando para copiar um conjunto de linhas ==> :co Exemplos: :co.UnderLinux Os comandos desta seção começam todos por :.-5. sendo seguidos por um endereço ( opcional ).´bco/main()/ ( copia as linhas entre a linha que foi marcada com o comando ma e a linha que foi marcada com o comando mb para após a primeira aparição do conjunto de caracteres “main()” ) :´a.d ( elimina todas as linhas da primeira até a linha corrente ) :%d ( elimina todas as linhas do arquivo. pelo nome do comando e seus parâmetros.+4d :´a-2./RETURN/+5d ( elimina as linhas de 3 linhas antes da linha marcada com o comando mc até a quinta linha após a que tenha o conjunto de caracteres RETURN a partir da linha corrente ) :. O caracter $ indica última linha ) :1. O ponto indica linha corrente ) :5co. inclusive ) :´c-3..+3 ( copia a quinta linha para a terceira linha após a posição corrente ) :´a.br Powered by Joomla! Gerado em: 21 March./END/co.$d ( elimina todas as linhas a partir da linha corrente até a última linha do arquivo. 2006.+4co0 ( copia da linha corrente menos 5 linhas até a linha corrente mais 4 linhas para o início do arquivo ) :´a-2../RETURN/+5c100 ( copia as linhas desde 3 linhas antes da linha marcada com o comando mc até a quinta linha após a que tenha o conjunto de caracteres “RETURN”.. até a primeira aparição da palavra END a partir da linha corrente.d ( elimina da linha corrente menos 5 linhas até a linha corrente mais 4 linhas ) ( elimina de 2 linhas antes da linha marcada com o comando ma até a linha corrente ) :/SUBROUTINE/..../END/d ( elimina as linhas entre a primeira aparição da palavra SUBROUTINE a partir da linha corrente.´bd ( elimina as linhas entre a linha que foi marcada com o comando ma e a linha que foi marcada com o comando mb ) :´a.-1 ( copia as linhas desde a primeira aparição da palavra SUBROUTINE a partir da linha corrente ( inclusive) até a primeira aparição da palavra END a partir da linha corrente ( inclusive) para antes da linha corrente ) :´c-3. ·Comando para apagar um conjunto de linhas ==> :d Exemplos: :d ( elimina a linha corrente ) :5d ( elimina a quinta linha do arquivo ) :´a.d ( elimina todas as linhas desde a linha que foi marcada com o comando ma até a linha corrente ( o ponto indica linha corrente ) ) :..

bkp ( grava desde a linha que foi marcada com o comando ma até a linha que foi marcada com o comando mb no arquivo “parcial. Exemplos: :w ( salva o arquivo que está sendo editado ) :w file.bkp”.UnderLinux :. mesmo que este arquivo já exista ) :´a.txt” para a linha após a quarta linha que segue a marcada com o comando ma ) :r! ls *. Exemplos: :r file. 2006. ( move da linha 1 até a linha 4 após a linha corrente ) Obs: o comando u desfaz o comando :m ·Comando para gravar um conjunto de linhas em um arquivo ==> :w O comando :w serve para salvar o arquivo atual. Todos os exemplos do comando :co são válidos ( bastando substituir o “co” por “m” ). Exemplo: :1.ext” para a linha após a posição corrente do cursor ) :0r cabecalho.co0 ( copia todas as linhas desde a primeira até a linha corrente para o início do arquivo ) :%co$ ( copia todas as linhas do arquivo para após o final do arquivo. Este comando só será aceito pelo VI caso o arquivo não exista ) :w! file.bkp” ) :wq ( salva o arquivo corrente e finaliza a execução do VI ) Obs: Os endereços que podem vir antes do caracter w seguem as mesmas regras dos comandos :d. Veja os exemplos do comando :d para gerar situações mais complexas.ext ( serve para trazer o arquivo “file. gravar sobre arquivo já existente etc. coloca o arquivo externo antes do arquivo sendo editado ) :´a+4 insere.. isto é.txt” para após a linha zero do arquivo sendo editado.4m. equivalente a :1.$co$ ( copia todas as linhas a partir da linha corrente até a última linha do arquivo para posição no final do arquivo. :co e :m. criar novo arquivo a partir do arquivo sendo editado.f ( serve para trazer para a linha corrente do arquivo sendo editado o resultado do comando UNIX “ls *. isto é..bkp ( grava o arquivo que está sendo utilizado no arquivo “file. traz para o arquivo sendo editado o nome de todos os fontes Fortran no diretório atual ) http://underlinux. O símbolo de dólar indica última linha ) :1. Obs: o comando u desfaz o comando :co ·Comando para mover um conjunto de linhas ==> :m A sintaxe é equivalente à do comando anterior ( comando :co ). ·Comando para ler um arquivo externo no arquivo que está sendo editado ==> :r O comando :r serve para trazer um arquivo externo para o arquivo que está sendo editado.txt ( serve para trazer o arquivo “insere. 22:09 .$co$ ).f”. Este comando repete todo o arquivo.txt ( serve para trazer o arquivo “cabecalho.br Powered by Joomla! Gerado em: 21 March.bkp”.´bw! parcial.com.bkp ( grava o arquivo que está sendo utilizado no arquivo “file.

Caso queiramos sair do VI e abandonar as alterações realizadas devemos utilizar o comando :q!. permite retornar ao arquivo que estava sendo editado anteriormente sem ter de reescrever o nome novamente. o que é útil para comparar arquivos diferentes ou para ter acesso a arquivos referenciados no arquivo que está sendo editado ) :e arquivo*.br Powered by Joomla! Gerado em: 21 March. devemos o comando :n ) ·Comando para encerrar a execução do VI ==> :q ou :q! ou :wq O comando :q encerra a execução do VI.f ( abre para edição o primeiro arquivo com final em “. Para que o VI o execute. mas permite que sejam editados diversos arquivos.f”.f ( edita o arquivo cujo nome comece por “arquivo” e termine por “. Ver comando :e para verificar a necessidade do ponto de exclamação ) :n ( abre para edição o próximo arquivo da pilha definida em um comando como o acima ou então quando o VI foi invocado com um padrão de arquivo em que mais de 1 arquivo satisfazia ) :N ( equivalente ao comando :n.arq ( termina a edição do arquivo atual e começa a edição do arquivo “novo. que tem seus nomes guardados em uma pilha. Neste caso selecionaríamos os arquivos e depois os alteraríamos um a um. permitindo que passemos de um para outro. O comando :wq salva o arquivo sendo editado e sai do VI em uma única operação.c” ou em “.f” que for encontrado no diretório corrente e os outros ficam em uma pilha. 2006.arq”. Exemplos: :e novo. 22:09 . apenas procura o arquivo anterior e não o posterior ) :rew ( retorna ao primeiro arquivo da fila ) :arg ( mostra o nome de todos os arquivos da fila ) Comandos para substituir conjunto de caracteres em grande quantidade ou para identificar linhas em que aparece um dado conjunto de caracteres ·Comando para substituir uma sequência de caracteres por outra em uma quantidade grande de linhas ==> :s http://underlinux. Além disso. O VI só aceita este comando se houver um único arquivo que satisfaça a substituição. Pode ser útil quando queremos alterar uma dada palavra em todos os arquivos fonte de um projeto. Exemplo: :n *.c *. o VI não executa o comando. ·Comando para abrir diversos arquivos simultaneamente para edição ==> :n ou :n! ou :N ou :N! ou :rew ou :arg O comando :n é equivalente ao :e. Caso tenha alterações no arquivo que está sendo editado que ainda não tenham sido salvas. o arquivo já deve ter sido salvo anteriormente ou não ter sido alterado. exigindo um ponto de exclamação após a letra e para que o arquivo atual seja abandonado sem ser salvo ) :e! novo. Caso queiramos editar mais de um arquivo simultaneamente.com.UnderLinux Obs: O comando u desfaz o comando :r ·Comando para abrir outro arquivo para edição sem terminar a execução do VI ==> :e Este comando permite abrir outro arquivo para edição sem necessitar sair do VI. É uma boa solução para abandonar algum arquivo em que tenha sido cometido um erro de edição que não pôde ser consertado com o comando u ( undo ) ) :e# ( retorna a edição para o arquivo que estava sendo editado antes do arquivo atual.arq” ) :e! ( abandona a edição do arquivo atual sem salvá-lo e o edita novamente.arq ( termina a edição do arquivo atual ( sem salvá-lo ) e começa a edição do arquivo “novo. Este comando permite que fiquemos alternando dois arquivos em uma única edição.

com.UnderLinux O comando :s serve para substituir um conjunto de caracteres em um arquivo.Brasil/PETROBRAS/cg ( é equivalente ao exemplo anterior. Exemplos: :%s/Petrobras .+5s/[a-z]/U&/g ( procura as letras minúsculas de a até z e as substitui por maiúsculas da linha corrente até a quinta linha após a linha corrente ).$s/. não assumindo seu significado usual de qualquer caracter. :. pois não foi acrescentado o /g ao final. ) :%s/ *$// ( este comando retira todos os brancos no final de cada linha. O caracteres U& passam para letra maiúscula o texto encontrado. Basta lembrar que o asterisco significa 0 ou mais aparições do caracter anterior e o dólar significa final de linha. O símbolo dólar no espaço para endereço indica última linha e o mesmo símbolo no conjunto de caracteres a ser encontrado indica final de uma linha). A seguir vem o conjunto de caracteres a ser procurado ( que pode ser uma “regular expression” ) precedido por uma barra e o conjunto de caracteres que substituirá ( que não pode ser uma “regular expression ). http://underlinux. O endereço antes do comando s indica que deve ser procurada da primeira até a última linha ( símbolo dólar significa última linha ). 2006. :%s/[A-Z]/L&/g ( procura as letras maiúsculas de A até Z e as substitui por minúsculas ao longo de todo o texto ). Qualquer uma das letras entre colchetes pode ser aceita ( ou a letra i ou a letra m ou a s ). :´a.$s/de 1995$/de 1996 ( procura o conjunto de caracteres “de 1995” que apareça ao final de uma linha desde a linha inicial até a linha corrente e o substitui por “de 1996”. Caso ocorra mais de uma vez em uma dada linha. Quando ativamos a opção de confirmação o editor mostra cada linha em que encontrou o conjunto de caracteres e. respectivamente ). Se não for colocada a letra g ao final.$s/Petrobras .´bs/^CC/CC ( procura o conjunto de caracteres “^CC” no texto desde a linha anteriormente marcada com o comando ma até a linha marcada com o comando mb e o substitui por “CC”. O símbolo * indica zero ou mais aparições do caracter que o antecede. A letra g ao final significa que caso apareça mais de um conjunto de caracteres em uma dada linha. que neste caso é o branco.[ims]rf/U&/g ( procura a sequência de caracteres “. Finalmente. A procura só é realizada da linha 20 até a linha corrente mais 20 linhas. por isso ele encontra todos os brancos no final de uma linha e os substitui por nada. O símbolo de dólar indica última linha.br Powered by Joomla! Gerado em: 21 March.Brasil/PETROBRAS/cg ( procura o conjunto de caracteres “Petrobras . caso contrário pula esta substituição.s/^CC/ /g ( procura o conjunto de caracteres “CC” no texto no início da linha ( o símbolo ^ indica início de linha ) e o substitui por brancos.srf” ao longo de todo o texto e os substitui pelas sequências “. Podemos também acrescentar a letra c ao final do comando para indicar que desejamos que o editor deve exigir confirmação para cada substituição. Procura em todas as linhas da linha inicial até a linha corrente ( onde está o cursor ). Obs: ver o comando / na página 4 para ter mais exemplos de buscas e o comando :d na página 5 para mais exemplos de endereços. Se não for colocada a letra g ao final. Obs: o comando u desfaz a operação de substituição realizada anteriormente.Brasil” no texto em todas as linhas ( o percentual indica todas as linhas ) e o substitui por “PETROBRAS”.. todos serão substituídos ( o default é substituir apenas o primeiro ).. substitui todos ( letra g ao final do comando ). Caso tenha mais que um em alguma linha. :1. :1. Lembremos que a barra invertida impede que o acento circunflexo a seguir assuma o seu significado usual de início de linha ) :1. será substituída apenas a primeira letra de cada linha. pois o default é apenas a linha corrente. a barra invertida indica que o caracter a seguir é o símbolo ponto.+20/^ *DO WHILE/C / ( procura a linha que comece com 1 ou mais brancos e que depois tenha o conjunto de caracteres “DO WHILE” e substitui por “C “. “.IRF”.SRF”. A letra c após a última barra significa que toda substituição terá de ser confirmada.irf” ou “. O U& significa que o texto encontrado deve ser passado para letras maiúsculas e a letra g ao final indica que todas as aparições em cada linha serão convertidas ( o default é converter apenas a primeira aparição de cada linha ). se o usuário teclar y.. 22:09 .MRF” ou “. Recomendamos que seja lido o resumo do comando :d para maiores exemplos de uso do sistema de endereçamento do comando :s.mrf” ou “. :1. O caracteres L& passam para letra minúscula o texto encontrado. Deve ser precedido pelas linhas que queremos que sejam procuradas. será substituída apenas a primeira letra de cada linha. faz a alteração. :20.. O percentual significa todas as linhas. devemos terminar o comando com /g. eliminando-os. caso queiramos que a alteração seja feita mais de uma vez em cada linha ( que é o que normalmente queremos ). também precedido por uma barra. apenas a primeira aparição será substituída.

ao invés de mostrar de uma vez o comando :g. executa um outro comando. Recomendamos também que seja estudado o comando / para maiores esclarecimentos sobre padrões de busca de sequência de caracteres. Caso queiramos restringir a busca devemos informar o endereço da linha inicial e da final separadas por vírgula antes da letra g. Caso queiramos restringir a busca devemos informar o endereço da linha inicial e da final separadas por vírgula antes da letra g. final de linha etc ). Este exemplo serve para identificar em um programa Fortran o nome das subrotinas em que a variável vazão foi alterada.500g/^[cC]/p ( procura todas as linhas começadas pelas letras c ou C entre a linha 1 e a linha 500 e as mostra na tela ). Recomendamos também que seja estudado o comando / para maiores esclarecimentos sobre padrões de busca de sequência de caracteres. :g/SUBROUTINE/nu ( procura todas as linhas com a palavra SUBROUTINE e as mostra na tela precedidas pelo número ) :1. caso contrário. Os principais comandos que podem ser executados são: impressão das linhas em que encontrou o caracter ( p ou nu ).com. uma nova barra e a outra sequência de caracteres que antecede ou precede a anteriormente encontrada. colocar uma barra ao invés da interrogação. Caso queiramos uma busca para trás.UnderLinux ·Comando que mostra na tela todas as ocorrências de um determinado caracter ==> :g/conjunto_de_ caracteres/p ou :g/conjunto_ de_ caracteres/nu O comando :g procura um conjunto de caracteres e. neste caso o caracter branco. uma nova barra e a letra p. O símbolo do dólar indica final de linha.$g/END *$/nu ( procura todas as linhas que terminem pela palavra END. A seguir.br Powered by Joomla! Gerado em: 21 March. 22:09 . procura de outros caracteres ( comando / ou ? ). A barra invertida indica que o caracter que a segue deve utilizado literalmente. O asterisco indica zero ou mais repetições do caracter que o antecede. :g/VAZAO = /?SUBROUTINE?/nu ( procura todas as linhas com a sequência “VAZAO = “ e. achando. neste caso o branco. Ver o comando / ou o comando :s para saber como definir uma sequência de caracteres mais abrangente ( por exemplo: considerando brancos. O acento circunflexo significa início de linha. tem como default procurar em todas as linhas do arquivo. colocar um sinal de interrogação antes e depois da última sequência.$g/*PERF *123 //TIME//p ( procura todas as linhas com a sequência “*PERF 123 “ ( sendo que o número de brancos entre o PERF e o 123 é qualquer ) e. procura para frente a ocorrência mais próxima da palavra TIME e a mostra na tela sem ser precedida pelo número ). substituição de caracteres ( s ). Os principais comandos que podem ser executados são: impressão das linhas em que encontrou o caracter ( p ou nu ). deve ser informada a sequência de caracteres a ser procurada ( que pode ser uma “regular expression” ) precedido por uma barra e. indica zero ou mais ocorrências do caracter anterior. substituição de caracteres ( s ). colocar outra barra e a letra p ( para mostrar as linhas com a segunda sequência de caracteres sem número da linha ) ou nu ( equivalente ao p. ao encontrar. Neste documento vou analisá-los um a um. para mostrar as linhas aonde foi encontrada a sequência de caracteres ou nu para mostrá-las precedidas pelo número da linha. ao encontrar. ao contrário do comando :s. finalmente. O comando :g. :. executa um outro comando. :. ·Comando que mostra na tela ocorrências de uma determinada sequência de caracteres que precede ou antecede uma outra sequência de caracteres ==> :g/string1/?string2?/p ou :g/string1//string2//p ou :g/string1/?string2?/nu ou :g/string1//string2//nu O comando :g procura um conjunto de caracteres e. http://underlinux. Os exemplos abaixo mostram a utilidade deste comando. início de linha. A seguir.. procura para trás a ocorrência mais próxima da palavra SUBROUTINE e a mostra na tela precedida pelo número da linha ). Recomendamos que seja lido o comando :d para maiores exemplos de uso do sistema de endereçamento. Finalmente. da linha atual até a última linha ). O comando :g tem como default procurar em todas as linhas do arquivo. procura de outros caracteres ( comando / ou ? ). achando. seguida ou não de brancos. 2006. mostrando adicionalmente o número da linha ). deve ser informada a sequência de caracteres a ser procurada ( que pode ser uma “regular expression” ) precedido por uma barra e. finalmente. quando não precedido pela barra invertida. Este exemplo serve para identificar em um arquivo de dados de um simulador todas as datas em que foram feitas alterações na completação de um dado poço. O caracter asterisco. Recomendamos que seja lido o comando :d para maiores exemplos de uso do sistema de endereçamento..

A letra g ao final indica que pode ser substituída mais de uma ocorrência da palavra em cada linha. ao contrário do comando :s. uma alteração na coluna pode causar sérios problemas. ·Comando que mostra se está em modo de inserção ==> :set showmode Se este comando estiver ativado. 2006. O comando :g tem como default procurar em todas as linhas do arquivo. o ponto de interrogação.br Powered by Joomla! Gerado em: 21 March. mostra à direita da última linha da tela uma mensagem que indica se o editor está em modo de inserção ou não. Após a sequência a ser procurada inserir o comando s como já foi explicado. Não vemos necessidade de utilizar esta forma de substituir ao invés do comando :s diretamente. 22:09 . executa um outro comando. De toda forma o seu uso é muito similar. Como não foi informado endereço antes do comando g. São diversos os comandos e citaremos os que julgamos mais úteis. Observe que se usarmos a letra p ao final do comando :s só aparecerá a última linha alterada. ao encontrar. pois muitas vezes é difícil indentificar o modo do editor ( modo de http://underlinux. Recomendamos que nos programas Fortran e nos arquivos de dados de programas quaisquer seja evitado o uso de tabulações.com. Os principais comandos que podem ser executados são: impressão das linhas em que encontrou o caracter ( p ou nu ). :g/Petrobras/s//PETROBRAS/gp ( substitui todas as ocorrências da palavra Petrobras pela palavra PETROBRAS ). omitindo apenas a sequência a ser substituída. Ver comando :set list para identificar sinais de tabulação e comando :set autotab para inserção automática de sinais de tabulação. O prefixo no desativa uma opção e a sua retirada ativa. Para alterá-los basta teclar o comando :set seguido pela nova opção desejada. Recomendamos ver o comando :s para maiores exemplos de uso. Ver próximos comandos como exemplos. substituição de caracteres ( s ). pois podem causar problemas pelo desajuste das colunas ( no caso do Fortran ) ou porque a caracter de tabulação não é reconhecido pelo programa.UnderLinux ·Comando para substituir uma sequência de caracteres por outra em uma quantidade grande de linhas ==> :g/conjunto_de_caracteres/s//novo_conjunto O comando :g procura um conjunto de caracteres e. O default é de 8 caracteres. procura de outros caracteres ( comando / ou ? ). Além disso. pois em outras edições com o VI o comprimento retornará ao default e tudo ficará desalinhado. os compiladores usam o comprimento default e. Comandos para adaptar o editor aos gostos pessoais e outros comandos Os comandos :set são utilizados para adaptar o editor ao gosto pessoal dos usuários. Não recomendamos alterar este valor. Para desativar esta opção use :set noignorecase ·Comando para alterar o número de caracteres de tabulação ==> :set tabstop=8 Altera o número de caracteres para tabulação com a tecla Tab. o editor assume que deve procurar em todas as linhas. ·Comando para que a busca de sequências de caracteres não leve em conta se uma letra é maiúscula ou minúscula ==> :set ignorecase O seu uso permite que as buscas com a barra. Esta é uma vantagem do uso do comando :g ao invés do :s. no caso do Fortran. A letra p ao final indica que devem ser mostradas na tela todas as linhas em foram feitas alterações. Aconselhamos o seu uso. ·Comando para verificar todas as opções existentes e seus valores atuais ==> :set all Este comando lista todas as opções existentes e os valores atuais. o comando :g ou o comando :s não leve em conta se uma letra é maiúscula ou minúscula.

Para exemplificar o seu uso vamos propor um problema: http://underlinux. :co. ao inserir uma linha.com. Esta opção é útil para identificar linhas pelo seu número. Muitas vezes. pois as linhas novas iniciam na mesma coluna que a linha anterior. :m. Ver comandos :set tabstop e :set list para definir tamanho da tabulação e identificar os símbolos de tabulação. Para desativá-la utilizar o comando :set nonumber O comando CtrlG ( teclas Ctrl e g apertadas simultaneamente ) fornece o total de linhas do arquivo e o número da linha corrente sem ativar a opção de numeração de linhas. Se no comando quisermos utilizar o Enter ou o Esc devemos precedê-lo com a sequência Ctrlv ( teclas Ctrl e v apertadas simultaneamente ). A letra que segue o comando :map perderá a sua função usual no VI e assumirá a função que programamos. respectivamente. Para desativar esta opção usar o comando :set noshowmode. que não utilizadas pelo editor. reduzindo o trabalho de identação. ocorre que um símbolo de tabulação no arquivo faz com que o programa tenha problema ao encontrá-lo no lugar dos brancos esperados. Como a tabulação não se distingue dos brancos no modo usual de edição. Pode ser bastante útil para realizar operações repetitivas. Recomendo que sejam utilizadas as letras v e V. ·Comando que permite visualizar os símbolos de tabulação e final de linha em um arquivo ==> :set list Este comando é útil quando temos arquivos que não estão sendo interpretados corretamente por programas e não identificamos nenhum problema. Quando o comando :set list é ativado aparecem na tela o símbolo de tabulação na forma de um ^I e a marca de final de linha como um $.UnderLinux comando ou modo de inserção ). cremos que a sua ativação não representa um aumento de produtividade. Ver discussão do comando :set tabstop para maiores detalhes. coloca o cursor na mesma coluna que o primeiro caracter da linha anterior ==> :set autoindent Este comando é útil quando se está programando. Isto dá maior segurança ao usuário sobre as operações realizadas. Outras vezes temos brancos ao final da linha que não são necessários ou são insuficientes. :s etc. 2006. 22:09 . Número tem de ser maior ou igual que 1. Para os usuários mais acostumados com o editor. ·Comando para que cada linha seja precedida pelo seu número de ordem ==> :set number Este comando faz com que antes de cada linha apareça o seu número de ordem ( estes números não fazem parte do arquivo ). Isto evita que o editor interprete o Enter ou Esc como final do comando :map. Recomendamos que esta opção seja desativada quando se tratar de arquivos com dados para programas pois os sinais de tabulação podem não ser compreendidos. Para desativar a opção utilizar o comando :set nolist ·Comando que faz com que o editor informe o número de linhas eliminadas ou que foram para um buffer a cada operação ==> :set report=número Este comando faz com que o editor mostre na parte inferior da tela uma emensagem a cada vez que um número maior que o número especificado de linhas for apagada ou colocada em algum buffer. ·Comando para associar uma letra a um comando ==> :map letra comando Este comando permite que utilizemos uma letra para realizar uma sequência de comandos de VI. ·Comando que. Deve ser ativado junto com o comando :set noautotab caso queiramos que os brancos inseridos não contenham sinais de tabulação. devido às diversas outras opções que servem para identificar o intervalo de linhas em que os comandos devem atuar. A desativação é feita pelo comando :set noautotab. é necessário identificá-la. ·Comando que permite que os brancos inseridos pelo editor contenham sinais de tabulação ==> :set autotab Este comando deve ser utilizado junto com o comando :set autoindent quando queremos que os brancos inseridos contenham símbolos de tabulação.br Powered by Joomla! Gerado em: 21 March. permitindo fácil manuseio em operações como :d.

Isto permite que o arquivo de configurações se torne ativo pois a variável EXINIT foi desativada. para encerrar a inserção. que neste caso é o nome do arquivo a ser renomeado. 2 .old e. que neste caso é um caracter branco seguido pelo CtrlvEsc. o yW coloca no buffer a próxima palavra. CtrlvEsc. Nesta altura teríamos a linha original precedida por “mv “.br Powered by Joomla! Gerado em: 21 March. Caso o número de arquivos fosse grande seria complexo realizar esta operação arquivo a arquivo. Finalmente.f ( traz para o arquivo sendo editado todos os arquivos do diretório corrente que terminem com . apenas tecle comando a comando e verifique o que ocorre. O símbolo de dólar significa que o cursor deve ser posicionado ao final do arquivo e a letra a indica inserção de texto.de. pois é importante. Quando terminamos de editar o comando devemos teclar o Enter para que o VI aceite o mapeamento e.old”. para facilitar o trabalho podemos posicionar o cursor no início da linha seguinte através da letra j seguida do acento circunflexo.. Um exemplo de arquivo seria: set directory=/scratch/vi set ignorecase http://underlinux. Neste caso. Aparecerá na tela uma sequência de nomes seguidos do sinal de igual. anote este comando. teclar a letra v sobre a linha que desejamos alterar.diferente. pois o Ctrlv só é necessário para que o comando :map não seja encerrado prematuramente por um Enter ou Esc.profile no diretório principal e acrescentar a linha EXINIT= após a linha PATH=.oldCtrlvEscj^ ( este comando.Editar o arquivo . Caso tenha retirado o set directory=/scratch/vi inclua-o como primeira linha do arquivo. pois basta alterar a linha já editada. Na nossa instalação atual aparece EXINIT=set directory=/scratch/vi ( isto para que a área em que o vi grava suas informações fique neste diretório ). Quando isto acontece. a opção de ativação automática de um arquivo para configurar o VI antes de cada execução não é mais válida. Resta acrescentar ao final o sufixo “. Isto equivaleria a mapear a tecla v e dar o comando v a seguir. ) Caso queira testar este exemplo recomendamos que inicie sem mapear a letra v.old”. Vamos utilizar o mesmo exemplo do comando :map para mostrar a semelhança. apesar de parecer excessivamente complexo não o é. Podemos usar o VI para gerar um script que poderá ser executado e realizará a tarefa automaticamente. apenas acrescido de “. o Esc indica final da inserção no texto. A vantagem da execução por macros ( comando @ seguido pela letra que identifica o buffer ) é a facilidade de correção caso ocorra algo de errado. Neste caso. Tem vantagem sobre o comando :map porque permite que corrijamos eventuais enganos com mais facilidade. Ctrlv significa que as teclas Ctrl e v devem ser apertadas simultaneamente e serve para evitar que a tecla Esc a seguir seja interpretada pelo VI como final do comando :map.UnderLinux Suponha que queiramos alterar o nome de todos os arquivos terminados em “. desde que o usuário tenha bastante com o editor.com. A sequência a ser adotada seria: :r !ls *. Nesta altura temos a linha precedida por “mv “ e com o nome do arquivo repetido e separado por um caracter em branco. Não esqueça de substituir os CtrlvEsc por Esc.. Vejamos como interpretá-lo: O acento circunflexo inicial manda o cursor para a primeira coluna da linha atual.Teclar. Para executá--lo basta teclar o símbolo @ seguido do nome do buffer.oldCtrlvEscj^ ( ver exemplo do comando :map ). Feito isto. a letra i a seguir significa o início de uma inserção. O procedimento a ser adotado é o seguinte: Insira uma linha com o comando ^imv CtrlvEsclyW$a CtrlvEscp$a.f” do diretório corrente para nome idêntico. da mesma forma que foi feito anteriormente.exrc no diretório principal do usuário. Caso exista EXINIT=comando. que é feito de forma similar ao que já descrevemos através do símbolo $ seguido pela letra a . o usuário deve editar o arquivo . ·Comando para executar como uma sequência de comandos o conteúdo de um buffer com nome ==> @nome_do_buffer Pode ser usado para executar uma sequência de comandos do editor. Depois posicione o cursor no local aonde será realizada a alteração e tecle o comando @z. colocá-la novamente no buffer e tornar a executar. São válidos todos os comando de VI. executá-lo.. utilize o comando “zyy para colocar a linha no buffer z. isto pode ser realizado utilizando o seguinte procedimento: 1 . em UNIX o comando env. A seguir inclua todas as opções e mapeamentos que julgar importantes. pelo . sendo um em cada linha. 2006. 22:09 . neste caso inserimos as letras mv seguidas de um branco.f ) :map v ^imv CtrlvEsclyW$a CtrlvEscp$a.branco. a seguir. A idéia básica consiste em colocar um conjunto de linhas em um buffer com nome e. feito isso. A letra l a seguir posiciona o cursor uma coluna à direita. Caso o usuário deseje que alguns dos comandos acima sejam executados a cada vez que o editor VI for chamado.

2006. O valor máximo para o número que indica a posição é 9. ·Comando para colocar a linha corrente da forma que estava anteriormente ==> U Serve para retornar a linha à situação em que estava antes de um comando de inserção ou alteração. para trazer as linhas da penúltima operação de eliminação deve-se utilizar o comando “2p ( ou “2P ).br Powered by Joomla! Gerado em: 21 March. 22:09 . Ivo Fernandez Lopez http://underlinux. o editor antes executará o arquivo . apenas a última operação pode ser desfeita.UnderLinux set report=1 set showmode map g G A única novidade seria o mapeamento da letra g ( minúscula ) como sendo a letra G (maiúscula ). ·Comando para trazer linhas que foram apagadas anteriormente ==> “1p ou “2p etc Permite que linhas que foram apagadas anteriormente sejam recuperadas. uma edição etc. ·Comando para abandonar a edição do arquivo atual e retornar à situação em que estava anteriormente ==> :e! Este comando abandona a edição do arquivo atual e carrega novamente o arquivo.com. Isto é útil pois o g não tem função no VI e a maiúscula serve para ir para linhas. De forma análoga. uma substituição de palavras. Todas as linhas apagadas são colocadas em uma pilha de armazenamento com 10 posições. Isto facilita o uso do editor ao tornar as duas equivalentes. seja uma eliminação de linhas. Os principais comandos para estes casos são: ·Comando para desfazer a última operação realizada ==> u Este permite desfazer a última operação realizada. Recomendações para as situações críticas O editor permite em muitas situações corrigir enganos cometidos. Sempre que for editar um arquivo com o VI. configurando o ambiente da forma desejada.exrc. É equivalente a sair do VI abandonando ( :q! ) e editar novamente o arquivo atual. No entanto. Para trazer de volta a última linha apagada deve-se colocar aspas seguidas do número 1 e da letra p ( caso queiramos que fique posicionada após a linha corrente ) ou da letra P ( para anteceder a linha corrente ) ( “1p ou “1P respectivamente ).