You are on page 1of 22

Editor VI FAQ ------------Elaborado por: E. Larry Lidz <ellidz@eridu.uchicago.edu> Traduzido por: Daniel M. Silva <daniel.msilva@gmail.

com> Inicio: 16 de outubro de 2002 Fim: 21 de outubro de 2002 Atualizacao: 17 de fevereiro de 2006 0.00 - Introducao -- Como uso esse FAQ? Essa documentacao esta dividida em multiplas sessoes. Primeiro, uma geral introducao e discussao do que e o VI nas sessoes 0 e 1. A sessao 2 e uma coletanea de perguntas feitas por "novatos", perguntas que sao feitas geralmente por alguem sem muita experiencia com o VI. Esta incluida as diferencas entre comandos e modos de insercao, e continuando finalizando com questoes do tipo "Como eu recorto e colo?" Entao, a sessao 3 e destinada para o usuario intermedi ario de VI. Comecando com "Como eu localizo e substituo?", e continuando ate finalmen te terminar com uma breve discussao de como utilizar macros no VI. Tambem incluido o manual de referencia rapida do VI. Isto deve dar uma lista dos comandos. Proxima, uma lista dos comandos :set, todo s os macetes que podera colocar no arquivo .exrc para customizar o ambiente de seu ed itor. O manual de referencia rapida foi escrito em uma maquina rodando SunOS com a distribuicao do Sistema V (System V) do VI. (Traduzido em uma maquina Debian GNU/Linux utilizando VI). Estes comandos devem funcionar sobre o Sistema V (System V) e as versoes UCB do VI. Ao menos que especificado de outra forma esse documento assumira a forma que foi escrito em modo de comando. Atencao, isso foi uma tentativa de eu reunir muita informacao da documentacao original do VI, onde eu poderia recordar de onde era. Tambem, consultei frequentemente as expressoes regulares (chamadas frequenteme nte de regex's). Por favor, leia as "man pages" (man 5 regexp estara nos principais programas de Unix) or outra referencia (o livro O'Reilly Mastering Regular Expre ssions, por exemplo) para maiores informacoes do que sao e o que sao. Serao uteis e nao sera perda de tempo. Confie em mim. 0.1 - Indice 0.00 0.01 0.02 0.03 0.04 1.00 1.01 1.02 1.03 1.04 1.05 2.00 Introducao -- Como uso esse FAQ? - Indice - Posso distribuir esse FAQ? - Como posso ajudar nesse FAQ? - Onde posso ler esse FAQ em outros idiomas? O que e VI? - Essa e uma grande informacao sobre VI? Por que qualquer um deve usar? Mais importante, porque "EU" devo usa-lo? - Ei! Esse soa grande! Ha alguma razao de nao usar o VI? - Em que sistemas operacionais o VI esta disponivel? - OK, voce me convenceu. Eu estarei aprendendo o VI. Onde eu comeco? - Quais sao os clones de VI disponiveis? Aprendendo o VI

Que atrativos me ajudarao a aprender VI? Quais as diferencas entre Modo de Comando & Modo de Insercao? Espere, meu teclado nao possui a tecla <Esc>! O que faco? O que sao todos aqueles ~s? Eu nao quero usar hjkl, tem outras sugestoes? Como saio sem salvar? Como abro um arquivo? Como procuro pelo texto? Como procuro por uma sequencia de controle? Como formato o texto? Como eu copio o texto? Ahhhh!!! Eu usei dG e perdi meu texto! Que posso fazer? (Ou, cometi um erro, que devo fazer?) 2.13 - o VI parece estranho. O que devo fazer? (Tambem, nao posso comecar em alerta, o que e os dois pontos?) 2.14 - Estava escrevendo meu texto e foi dita o que tem cada sessao em um arqu ivo diferente. O que devo fazer? 2.15 - Que significa isso em todos os comandos : ? 2.16 - Argh! VI esta me deixando louco! Nada de comandos! E agora? 3.00 - Como voce vai localizar e substituir? 3.01 - Minha tecla </> esta quebrada! Como posso localizar e substituir? 3.02 - Como executo um programa pelo VI? 3.03 - Ahhh!! Eu estava escrevendo meu texto, e o computador travou! 3.04 - Alguma coisa para deixar o VI amigavel? 3.05 - Macros -- Como escrevo? 3.06 - Como faco uma tecla chamar uma Macro? 3.07 - Ha alguma maneira de abreviar o texto? 3.08 - Como Eu verifico o periodo do documento atual? 3.09 - Como me livro dos ^M's que estao no final da linha do meu arquivo? Como faco uma macro para isso? 3.10 - Eu tenho um "terminal burro", posso ainda usar o VI? 3.11 - Oh, OK, em que modo abro? Mas nao tenho um "terminal burro", e ainda inicio em modo de abertura! 3.12 - Como posso pegar o codigo fonte do VI? 4.00 - Mais topicos avancados do VI 4.01 - Eu vi que as sessoes sao definidas por SHNHH HU e paragrafos por IPLPPPQPPLIbp por padrao? Em que idioma e? O que significa nesse mundo? 4.02 - Mas quando eu programo, eu tenho visto que posso usar ]] e [[ para mover entre as funcoes. Minhas funcoes nao possuem a extensao .SH ou qualquer coisa no comeco, que funcionam? 4.03 - Como eu trabalho com multiplos arquivos ao mesmo tempo? 4.04 - Assim, eu tenho que iniciar o VI, mas agora eu tenha que editar outro arquivo. Como eu procedo? 4.05 - Como posso retornar ao primeiro arquivo? 4.06 - Mas eu queiro somente editar somente um arquivo. Eu tenho que abrir e queira ir para outro arquivo. Como faco? 4.07 - Como adiciono outro arquivo no meio do arquivo que estou editando? 5.00 - Onde obtenho documentacao online do VI? 6.00 - Truques e Macros 6.01 - Truques 6.02 - Macros 7.00 - Referencia rapida do VI em ordem alfabetica 7.01 - Opcoes para entrada de comandos ( comandos : ) 7.02 - Opcoes de Ajuste (Configuracao) 8.00 - Criando um arquivo .exrc 8.01 - Um arquivo .exrc simples 9.00 - Erros no VI 10.00 - Glossario

2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12

11.00 - Bibliografia Consultada 0.02 - Posso distribuir esse FAQ? Sim, mas que voce nao faca alteracoes, ou peca dinheiro algum por ele. Se voce colocar em um livro, CDROM, ou outro meio de publicacao, por favor entre em contato. 0.03 - Como posso ajudar nesse FAQ? Primeiro, me envie quaisquer erros que voce encontrar. Tambem, sugestoes que voce tenha serao ouvidas. Melhore ainda, qualquer coisa que pensa e util. Meu endereco de email: ellidiz@eridu.uchicago.edu * Caso voce encontre algum erro de sintaxe, ortografia, favor mandar email para: daniel.msilva@gmail.com (Terei maior satisfacao em atende-lo.) Tambem, use VI! Propague o mundo! Desculpas por nao poder colocar todos que contribuiram com esse FAQ, mas muitas, muitas pessoas tem me avisado e ajudado, mas temo se colocar, a lista de contribuintes porque o documento iria ficar extenso. 0.04 - Onde posso ler esse FAQ em outros idiomas? [Nota: Eu tenho uma lista de tradutores, se voce traduziu o FAQ para outro idioma e o seu nome nao esta listado, Por favor me avise. ] Marc Simon (msimon@astrolabe.frmug.org) traduziu o FAQ para o Frances. Esta disponivel em: <http://tux.u-strasbg.fr/doc/vim/vifaq.html>. Daniel M. Silva (daniel.msilva@gmail.com) traduziu o FAQ para o Portugues. Esta disponivel em: <http://www.linuxdicas.com.br/vifaq.txt> Se voce estiver interresado em traduzir este FAQ em outro idioma, me avise, eu estou sempre feliz por voce estar disponivel. Se voce me avisar antes de comecar posso estar certo que voce nao esta se aproveitando do esforco de outros. 1.00 - O que e VI? VI e o Editor Visual (por isso o nome - VI de Visual). Que e um editor visual (ou contrario de um nao visual)? Editores visuais sao uns que deixam voce ver varias linhas do documento que esta sendo editando como voce edita. Essas visoes consideravelmente comuns que a maioria dos editores de hoje, assim a ideia de um editor nao visual e um pouco estranha. Exemplos de editores nao visuais sao sed, ed, e o edlin (o ultimo um editor projetado para DOS ate que relativamente recente). VI foi programado por William Joy como parte da distribuicao BSD. Posteriormente usado pela AT&T, e foi inserido desde entao na base do Unix. 1.01 - Essa e uma grande informacao sobre VI? Por que qualquer um deve usar? Mais importante, porque "EU" devo usa-lo? VI e o editor visual comum do Unix, e sao colocados consequentemente nas versoes recentes. (Recentemente esta sendo definida mais ou menos como Bourne 1984.). Isto significa que sempre que voce tiver a sorte de executar suas tarefas atraves de uma maquina rodando Unix, voce sempre tera esse poderoso editor de textos na ponta de seus dedos. Porque? VI e um poderoso editor. Tambem, uma vez que voce conhece o VI, podera editar arquivos rapidamente, com uma extrema economia com as palavras chaves. Voce tera diferentes modos de insercao e emissao de comandos, e mais rapido que a maioria dos editores. Ele e tambem um editor muito pequeno. (A versao da minha maquina e de 200k). Tambem, podera fazer quase qualquer coisa, com do decorrer do tempo, voce comecara a fazer o que quiser.

Alem disso, como um editor ele permite a interacao com o sistema Unix em operacao. Permite que voce utilize comandos poderosos do Unix dentro do VI. E possivel, a partir do VI, dar um kill(matar) em uma lista de processos em execucao. Se voce nao der permissao de escrita ao arquivo que voce esta editando, voce pode alterar a permissao sem sair do VI. VI trabalha com comandos que trabalham com objetos. Aprendendo somente alguns comandos e alguns objetos, voce aprendera a fazer varias coisas apenas combinando comandos e objetos. Mesmo os comandos sao separados em subcategorias. Por exemplo, os comandos de movimento e os comandos de modificacao sao diferentes. Se voce sabe que o comando d serve para deletar, e o comando j serve para ir para a linha de baixo, voce pode deletar a linha de baixo. Quando voce usa numeros eles ficam mais poderosos. d5j deletara cinco linhas a partir da linha onde se encontra o cursor. Entao, uma vez que voce aprende o caracter de "paragrafo" (}), voce ja save como deletar cinco paragrafos. 1.02 - Ei! Esse soa grande! Ha alguma razao de nao usar o VI? Sim. Ha uma razao muito boa. Ele pode ser de dificil aprendizado, e ate assim, sera mais lento e doloroso. Uma vez que voce aprende, sera rapido, mas no processo de aprendizado sera vagaroso. Fui me perguntando se o VI era um editor facil de aprender, se era intuitivo ou nao. Geralmente minha resposta para esta questao e: "Sim, alguns pensam assim, mas a maioria das pessoas pensam que nos somos loucos!" 1.03 - Em que sistemas operacionais o VI esta disponivel? Unix. Que e isso. (Bem, tecnicamente, a versao 4.3 do BSD incuiu suporte para VMS tambem). Entretanto, ha muitos, muitos clones de VI que estao disponiveis para diferentes sistemas operacionais. Eu pessoalmente tenho usado clones do VI no: Unix, DOS, OS/2, Sistema MAC 7 (Veja abaixo uma lista especifica). 1.04 - OK, voce me convenceu. Eu estarei aprendendo o VI. Onde eu comeco? Bem... E complicado. Ha muitos livros excelentes fora desse tutorial; a maioria dos livros de Unix e variantes tem um capitulo dedicado a ele. Ha tambem muitos livros especificamente sobre VI. Eu nao tenho nenhuma preferencia, assim voce escolhera melhor quem vai ser seu guru de VI no seu aprendizado. Tambem, olhe ao redor. Veja o VI como um documento sem importancia (sua dissertacao NAO e um bom documento para aprender VI...) e olhe ao redor. Eu nao posso imaginar qualquer um que aprendendo VI sem olhar ao redor um bocado. Relembrando, se voce esta confuso, apenas aperte a tecla <Esc>, e voce entrara no modo de comando. Devo mencionar que de algum modo, e eu suponho um bom exemplo, que pessoas que pensam em adiminstrar sistemas Unix, ou qualquer tipo de configuracao em maquinas rodando Unix provavelmente tambem queiram aprender ed ou ex, porque algumas versoes do Unix nao podem ter o VI no diretorio do root, e pode ser inviavel sem ele em algum lugar. Ed e uma boa escolha. 1.05 - Quais sao os clones de VI disponiveis? Apenas uma pequena lista: STvi (Stevie), elvis, vile, vim e nvi, xvi elvis esta disponivel para: Amiga, DOS, OS/2, Unix, VMS, Atari, Psion3a Handheld. Maquinas Stratus que rodam VOS podem baixar o elvis em: ftp://ftp.stratus.com/pub/vos/tools/tools.html Lemmy esta disponivel para Win95/NT em: http://www.accessone.com/~jai nvi e o VI que vem com o BSD 4.4

STevie esta disponivel para: Atari ST, DOS, Unix, Macintosh. MacOS esta disponivel em qualquer mirror do mac em /info-mac/text (Como ftp://ftp.hawaii.edu/pub/mac/info-mac/text) Maquinas Stratus que rodam VOX podem baixar STevie em: ftp://ftp.stratus.com/pub/vos/tools/tools.html vile esta disponivel para: BeOS, DOS, OS/2, Unix, VMS, Windows95, Windows NT O codigo esta disponivel em: http://dickey.his.com/vile/vile.html Vim esta disponivel para: AmigaOS, Atari MiNT, BeOS, DOS, MacOS, OS/2, Unix, VMS, Windows Informacoes gerais, documentacao e muito mais sobre Vim esta em: http://www.vim.org/ A pagina do Vim Uma lista de sites mirrors do Vim esta disponivel em: http://www.vim.org/dist.html Pagina de distribuicao do Vim Ha uma lista de discussao para Vim: "Lista de Anuncios do Vim" vim-announce@vim.org "Lista de ajuda do Vim" vim@vim.org "Lista de desenvolvedores do Vim" vim-dev@vim.org Informacoes na pagina http://www;vim.org/mail;html viper esta disponivel para GNU Emacs. ftp://ftp.cs.sunsb.edu/pub/TechReports/kifer/viper.tar.Z xvi esta disponivel para: DOS, Unix Mortice Kern Systems (support@mks.com), que eu nao tenho absolutamente nenhum vinculo, oferece uma versao comercial do VI para DOS/Windows, OS/2 e Windows NT. Esta incluso parte do MKS Toolkit (ajuste de ferramentas Unix-like para Windows) a nao pode ser comprado separado. Ha algumas diferencas entre os diferentes clones do VI. Muitos melhoria mas permite o uso dos comandos listados nesse documento, mas podem haver algumas diferencas. Consulte a documentacao que vem com o clone para mais detalhes. 2.00 - Aprendendo o VI Ha alguns conceitos basicos para os novatos no VI. Primeiro, mantenha um sumarios dos comandos com voce por bastante tempo. Uma referencia rapida e sumario dos comandos estao uncluidos no final deste. Segundo, pegue um bom livro que fale do VI. Este documento nao e a melhor maneira para aprender (nao ainda). Eu nao estou certo se esse documento ensina as pessoas a usar o VI a risca, porque ha muitos livros bons. Entretanto, ha algumas sugestoes aqui. Quanto a escolher um livro, as seguintes regras se aplicam: leia por cima antes de compra-lo. Veja se alguns servem para voce. Certifique-se quanto aos exercicios que voce podera praticar. Compare isso com outros livros -- apos tudo, VI pode ser muito confuso, e voce pode se certificar que o livro e confuso, e nao apenas que voce nao entendeu a dificuldade de aprender VI. Tambem, veja outros "Aprenda VI" ou "Tutorial de VI", programas designados para o aprendizado do basico do VI. 2.01 - Que atrativos me ajudarao a aprender VI? Isso pode parecer um pouco estranho, mas ha muitos jogos no Sistema Unix que podem te ajudar no aprendizado do vi. Ajudam particularmente sobre os principios. Embora eu nao saiba sobre qualquer jogo que ensine cada comando do VI, eu sei que poucos que ajudam a aprender como usar hjkl para movimento do cursor. NetHack, um jogo rogue-like, e perticularmente bom para isso,

porque e um jogo grande e pode entrete-lo completamente por uma hora. Nethack esta disponivel em ftp.uu.net em /pub/games/nethack. Para nao desmerecer outros jogos, mas alguns sao: rogue, moria, omega, worm, e snake. 2.02 - Quais as diferencas entre Modo de Comando & Modo de Insercao? Frequentemente citado como um dos principais problemas do VI, e igualmente citado frequentemente como uma de suas melhores forcas, VI tem diferencas entre o "Modo de Comando" e o modo de "Insercao". Entenda essas diferencas VITAIS para o aprendizado do VI. Quando inicia o VI e iniciado o modo de comando. Nesse modo, podera se movimentar pelo arquivo, e utilizar comandos para alterar certas areas do texto, recortar, copiar e colar sessoes no texto e muito mais. Modo de Insercao e onde pode realmente inserir texto. Em outras palavras, modo de comando e usado para se movimentar pelo documento, e modo de insercao e usado para escrever um texto no documento. Comandos como: a, i, c, C, O, o e outros sao para alternar de modo de comando para modo de insercao. <Esc> ou <ctrl-c> parara o modo de insercao e voltara para o modo de comando. Comece usando essa distincao. Essa e uma das coisas que faz o VI diferente da maioria dos outros editores. Tambem permite que faca muitas coisas sem verificar a configuracao padrao do teclado. Para novatos, e frequentemente agradavel saber em que modo esta. Se voce digita: "echo set showmode >> $HOME/.exrc" na linha de comando do Unix, a proxima vez que o vi for iniciado, sera mostrado no canto inferior direito da te la em que modo se encontra, o de comando ou de insercao. (Para entender que isso significa, veja as sessoes "Criando um .exrc" e "Opcoes de Ajuste"). Se nao aparecer nada no canto inferior direito, significa que voce esta no modo de coma ndo. E chamado em poucos modos diferentes (adicionar, abrir e inserir) "modo de inser cao" no documento. 2.03 - Espere, meu teclado nao possui a tecla <Esc>! O que faco? Tente usar <ctrl-[>. Se seu teclado possui a tecla <Meta>, tente essa. Se voce nao possui a tecla <Meta>, muitos tecladous usam <Alt>,<Diamond>,<Start> ou <Men u> e a tecla <Meta> (entretanto, se voce nao tem nenhuma dessas teclas, voce tem qu e ter a tecla <Esc>). Se ainda nao tiver, use <crtl-3>. Alguns terminais DEC usar a te cla F11 e a mesma coisa que <Esc>. 2.04 - O que sao todos aqueles ~s? Eles tem apenas se voce ver no final dos seus arquivos, eles nao atuam no docu mento, e voce nao precisa se preocupar com eles. 2.05 - Eu nao quero usar hjkl, tem outras sugestoes? Primeiro, se seu terminal esta ajustado apropriadamente e voce tem uma boa conexao, voce podera usar as teclas direcionais. Entretanto, se voce estiver usando o VI em outro estado, tentao tera que se contentar em aprender hjkl, e e mais rapido para digitar. Tambem, tem ocasioes onde voce pode ter uma pessima conexao e as sequencias de Escape podem funcionar. Este e um simples ajuda para relembrar: j para baixo, e k para cima. 2.06 - Como saio sem salvar? :q! saira do arquivo 2.07 - Como abro um arquivo?

:r <nome_do_arquivo> Por exemplo, para abrir o arquivo /etc/motd, digite: :r /etc/motd

Este abrira o arquivo em sua localizacao corrente para voce trabalhar. Se voce especificar o numero antes do r, sera aberto na localizacao do arquivo. 2.08 - Como procuro pelo texto? /<texto> procurara para frente. ?<texto> procurara para tras. ?? ou // repetira a ultima procura. Vale a pena notar que esses sao os padroes do Unix. Adicionalmente, no VI, n repetira a ultima busca na mesma direcao da busca original. N repetira a ultima busca so que dessa vez na direcao oposta da busca original. Por exemplo /foo encontrara a proxima ocorrencia de "foo" a partir de onde se encontra o cursor. n encontrara uma apos ele. N procurara ate encontrar a primeira ocorrencia. Colocando N novamente, pegara o mesmo resultado de ?foo teriamos no primeiro caso. Expressoes regualares podem ser usadas com as buscas. 2.09 - Como procuro por uma sequencia de controle? /<ctrl-v><ctrl-<seq>> <ctrl-v> dira ao VI para examinar literalmente o proximo caracter, e nao como um comando. 2.10 - Como formato o texto? Se seu computador tem o programa fmt, voce precisa toda vez digitar !}fmt no modo de comando (sem o : antes). Este formatara o texto na localizacao corrente enquanto nao chegar o final do paragrafo. Se sua maquina nao tem o fmt, voce precisa encontrar um programa similar. (Eu conheco muitos programas disponiveis como de dominio publico, mas nao quero mais eles). Voce pode tambem querer verificar o Par. Par e um programa similar ao fmt, mas tem suas caracteristicas. Par pode ser baixado em: http://www.cs.berkeley.edu/~amc/Par 2.11 - Como eu copio o texto? OK, isso e um pouco complicado. Pegue essa sessao que voce pode, e releia por poucos minutos. Tambem, experimente. "<letra>yy copiara uma linha do texto no registro <letra>. (O registro e VI-lingo para colar o dado que fora recortado ou copiado). <letra> obrigatoriamente de a ate z. "<letra>dd deletara uma linha e copiara ate o registro <letra>. Voce pode usar numeros antes do yy or dd para especifica r o numero de linhas. Usando <letra> maiuscula adicionara o texto saindo que nem anteriormente. "<letra>p colara o texto apos o cursor. "<letra>P colara antes do cursor. Se o registro contem o inicio ou o fim da linha, a linha sera substituida por outra linha apropriada. Y pode ser usada como um recorte curto para yy. Adicionalmente , y$, yH, yM, etc. sao validos, sao equivalentes para os comandos d. Para rapidos recortar e colar, nenhum registro precisa ser especificado. Neste caso, nao e permitido adicionar, e o registro sera removido se outro comando de delecao for especificado (Incluindo x). Por exemplo, se mova ate o paragrafo anterior, va ate o inicio do paragrafo, digite "a13dd", movera ate a posicao ou uma posicao onde se encontra o paragrafo , e digite "ap" para colar antes da linha. Agora, presumindo que voce queira recortar e colar em areas que no sao apenas o final da linha. Na ordem disso, use m<letra> para marcar a area. Essa letra

pode ser mesmo um recortar/copiar registro, ele fica alocado em uma area diferente da memoria. Entao, digite "<registro>[y or d]<letra>". Onde <registro> e o registro da informacao do texto pego, <letra> e a letra usada para marcar, e y ou d como apropriado. onde se encontra o cursor. 2.12 - Ahhhh!!! Eu usei dG e perdi meu texto! Que posso fazer? (Ou, cometi um erro, que devo fazer?) u desfazera o ultimo comando. U desfazera as alteracoes feitas na linha corrente. (Concedido, uma explicacao de uma linha nao seria muito.) :e! recarregara o documento corrente sem salvar quaisquer alteracoes. Adicionalmente , deletara os textos alocados nos registradores numerados de 1 a 9. "<n>p colara o ultima delecao de nth. Voce pode rapidamente tentar localizar os regist ros, digitando u, e tentando o proximo. (Na ordem de expedicao, usos de vi, ligeirame nte diferente do normal. Repetindo instantaneamente o ultimo comando, tentara o prox imo registro, assim voce precisara de todos estes: 1p u, u ., etc. Enquanto voce des fazer a delecao.) 2.13 - o VI parece estranho. O que devo fazer? (Tambem, nao posso comecar em alerta, o que e os dois pontos?) Se o VI parece estrano, que voce nao tem pressionado <ctrl-S> para ver o erro. Na ordem de desfazer um <ctrl-S>, aperte <ctrl-q>. Se haver dois pontos voce nao pode se livrar deles, voce tem entrado no ex acidentalmente. Geralmente basta digitar "Q"no modo de comando. Apenas digite VI para voltar para o VI. 2.14 - Estava escrevendo meu texto e foi dita o que tem cada sessao em um arquiv o diferente. O que devo fazer? :[m],[n]w <nome_do_arquivo> salvara entre as linhas m e n para <nome_do_arquiv o>. Estas linhas trabalham para quase cada : comando. Se voce usa :[m],[n]w >> <nome_do_arquivo> adicionara no arquivo. 2.15 - Que significa isso em todos os comandos : ? Os comandos que seguem de : sao comandos do editor ex. Estes permitem a flexib ilidade e poder. Por exemplo, la de muitas maneiras diferentes para localizar e substitu ir, todos tem semelhanca (de fato, de alguma maneira sao os mesmos...) 2.16 - Argh! VI esta me deixando louco! Nada de comandos! E agora? O momento mais comum para se agir insanamente no VI enquanto estiver ativada a tecla caps lock acidentalmente. Muitos teclados para servidores Unix tem o caps lock em posicao invertida de muitos PC's, causando com que as pessoal ocasionalmente pressionem. Apenas para diversao, tente usar o VI com o caps lock ativado. 3.00 - Como voce vai localizar e substituir? Pode ter poucos metodos. O mais simples: :s/old/new/g Mas, esse apenas na linha corrente... Assim: :%s/old/new/g

Geralmente: :[range]s/old/new/[cgi] Onde [range] e qualquer linha selecionada, incluindo linhas de numeros, $ (fim do arquivo),.(localizacao corrente), ou apenas dois numeros com virgula ou ponto e virgula entre eles. (Ou assim: .,+5 no meio das proximas 5 linhas). [cgi] e qualquer c, g, i, ou nenhum. c diz no prompt do VI antes de alterar, g altera todas as ocorrencias da linha (sim diz para o VI alterar) i diz ao VI que fara uma busca minunciosa. O g apos o ultimo encontrado diz para substituir apenas a primeira ocorrencia de cada linha. Outro metodo e: :g/foobar/s/bar/baz/g Este procura por foobar, e altera para foobaz. Deixara os jailbars sozinhos e no outro metodo nao. Infelizmente, se os jailbars aparecerem em uma linha que contem foobar, serao substituidos. Claro que voce pode tambem usar expressoes regulares padroes de busca, e poucos comandos para substituir partes do texto. Se voce usa \( e \) como padrao para escapara da sequencia (e usa \1, \2, etc., voce pode fazer finitas coisas. Por exemplo: :g/foo/s/^\([^ ]*\) \([^ ]*\)/\2 \1/ Trocara as primeiras e segundas palavras de toda a linha que conter "foo". Sequencias especiais permitidas sao: & Tudo que for igual na busca \[1-9] O conteudo do primeiro ate o nono \(\) par \u O proximo caracter sera maiusculo \U Os caracteres ate \e ou \E serao maiusculos \l O proximo caracter sera minusculo \L Os caracteres ate \e ou \E serao minusculos \[eE] Final da selecao para conversao para maiusculo ou minusculo 3.01 - Minha tecla </> esta quebrada! Como posso localizar e substituir? OK, pode, realmente nao e necessaria a tecla /. As coisas funcionaram bem (letras, numeros, e poucas coisas nao...) 3.02 - Como executo um programa pelo VI? :!cd ira executar o comando cd. :sh ira chamar uma shell interativa Com essa shell, voce pode, se voce quiser, abrir outro VI. Isso particularmente e utilizado quando voce edita makefiles e arquivos de configuracao para programa s na tentativa de uma compilacao. A vantagem sobre :e e que voce nao precisa salva r o arquivo, e tera o mesmo assi que sair da shell (Eu recomendo salvar de qualque r maneira ...) 3.03 - Ahhh!! Eu estava escrevendo meu texto, e o computador travou! Voce pode comecar a falar sobre isso, mas voce recuperar o arquivo digitando na console vi -r <nome_do_arquivo> onde <nome_do_arquivo> e o nome do arquivo que voce estava editando antes de acontecer a catastrofe. vi -r te dara uma list a de arquivos que estao para ser recuperados. 3.04 - Alguma coisa para deixar o VI amigavel? :set ai criara uma identificacao para voce. :set sw=# onde # e um numero que sera ajudado pelo comprimento da linha (tabu lacao). Voce pode usar <<, >> para alogar a linha para esquerda ou pra direita. Isso, voce pode usar <% para deslocar a {, ( ou [ ajustando a esquerda ou a direita (c

om >%). Voce especificara obrigatoriamente {, ( ou [ enquanto o par nao for eles. :set sm mostrara a combinacao {, ( ou [ enquanto voce nao finalizar. :set lisp fara com que as alteracoes sejem utilizadas quando for programar em lisp. () movera expressoes em excesso para frente ou para tras, e {} movera sem parar. 3.05 - Macros -- Como escrevo? :map <lhs><rhs> onde <lhs> e ate dez caracteres e <rhs> ate cem caracteres. Esse fara assim que sempre voce colocar <lhs> substituira por <rhs>. Todas as macros sao iniciadas no modo de comando (exceto aqueles definidos como mapa!), mas pode terminar onde desejar. Relembrando use <ctrl-v> antes de qualquer caracter de controle que possa usar. Se voce esta usando um comando Ex, tais como |, precisara apertar <Esc> enquanto o VI estiver lendo a linha. Voce cria um mapa :map foo <ctrl-v><ctrl-v>|. :unmap <lhs> apagara a macro. :map <lhs><rhs> criara <lhs> inserindo <rsh> no documento. map! pode ter macros lhs's que sao muito longas. 3.06 - Como faco uma tecla chamar uma Macro? Se <lhs> e #n onde n e de 0-9, podera mapear uma tecla de atalho apropriada. 3.07 - Ha alguma maneira de abreviar o texto? Sim, claro. Esse e o VI, ele pode fazer qualquer coisa. :ab email ellidz@eridu.uchicago.edu fazera com que assim que voce digitar "email", ele entendera como o seu endereco de email. :una email retira a abreviacao. 3.08 - Como eu verifico o periodo do documento atual? Aqui tem uma macro. Estes devem ser colocados em seu arquivo .exrc (Adiante explicado). Essa e consideravelmente uma macro simples, apenas chama "ispell" no arquivo corrente. Claro, para usar voce precisa do ispell no seu sistema. Para usar, apenas coloque V no VI (V nao e usado pelo VI, assim faremos de uma tecla de atalho a macro.) map V :w<enter>:!ispell % <enter>:e!<enter><enter> O segundo <enter> faz com que nao precise apertar o <enter> apos checar a sintaxe. 3.09 - Como me livro dos ^M's que estao no final da linha do meu arquivo? Como faco uma macro para isso? Isso geralmente aparece em arquivos do DOS que sao convertidos para o Unix. Eles sao faceis de remover :%s/<ctrl-v><enter>//g removera A macro e um bocado complicado. Nao que a maioria das pessoas possam se superar. Aqui esta: map v :%s/<ctrl-v><ctrl-v><ctrl-v><ctrl-v><ctrl-v><enter>//g Sim, muito bom. Eles 5. O ultimo escapa. Dois dos outros quatro escaparao de outros <ctrl-v>'s. Desde que a macro comece a ler a linha, voce precisa ter dois <ctrl-v>'s (desde que voce localiza pelo <ctrl-v><enter> para substituir por espaco em branco). No geral, voce tera problemas com a macro, voce precisa escapar de varias coisas. As vezes, e mais rapido utilizar repetidamente <ctrl-v>. 3.10 - Eu tenho um "terminal burro", posso ainda usar o VI? OK, OK, assim nao esperava que qualquer um pedisse isso ... Mas, eu pensei

que ficaria bizarro demais exlplicar de qualquer maneira (E, responder realmente a uma pergunta comum...) VI sera iniciado em um modo especificado, chamado "modo de abertura" nessa situacao. As coisas trabalham mais ou menos mesmo. Deletar caracteres apareceram para voce como \'s. VI trabalhara achando que o tamanho da janela e de somente u ma linha. ^r formatara a linha atual. z redesenhara a janela de acordo com a linha corrente. 3.11 - Oh, OK, em que modo abro? Mas nao tenho um "terminal burro", e ainda inicio em modo de abertura! Bem, o que esta acontecento aqui e que o vi nao sabe o tipo de terminal que voce esta utilizando. Decida-se que nessa situacao o melhor a fazer e supor que voce possui um terminal. Isso nao pode parecer util, mas muitas pessoa precisam dele aberto, quanto menas informacao sobre seu terminal, melhor. Agora, como lidar com ele. Isso e possivel se alterarmos as especificacoes da sessao, mas no geral, nao vai ter utilidade alguma. Se voce sabe seu tipo de terminal, voce pode ajustar atraves do prompt do Unix (setenv TERM <tipo_termina l> sobre o shell csh e suas variaveis, e: TERM=<tipo_terminal>; mandara TERM para o shell sh e suas variantes.). O melhor a fazer e editar seu .profile ou .cshrc para incluir essas informacoe s assim automaticamente carregaram a partir do proximo login. (Claro, voce precisa saber o ed ou habilitar atraves do prompt antes de editar um arquivo...) Se voce nao sabe seu tipo de terminal, coloque vt100. A maioria dos terminais modernos e emuladores poder emular vt100. Se nao funcionar, procure ajuda. 3.12 - Como posso pegar o codigo fonte do VI? Partes do codigo fonte (parte oriunda do ed) e controlada pela SCO. O resto e controlado pela REgents of the University of California. Voce pode ter uma licensa do codigo por $100 da SCO. Detalhes estao disponiveis em: http://minnie.cs.adfa.edu.au/PUPS/getlicense.html Voce pode querer tambem dar uma olhada no codigo dos clones do vi, entretanto , a maioria deles sao de dominio publico. 4.00 - Mais topicos avancados do VI 4.01 - Eu vi que as sessoes sao definidas por SHNHH HU e paragrafos por IPLPPPQPPLIbp por padrao? Em que idioma e? O que significa nesse mundo? As paginas de manuais (man pages) sao escritas em uma linguagem chamada nroff/troff. Nroff e uma texto geralmente com a finalidade de um formato, similar ao TeX. Que isso tem a ver com o VI e as sessoes? Use mais os comandos do Unix e olhe a pagina de manual (caminho, /usr/man/man1/vi ou algo assim). Voce vera partes da pagina dividida por sessoes, tudo extensao .sh. A extensao .SH define a sessao da pagina de manual. Note que SH sao os dois primeiros caracteres de ajuste das opcoes da sessao. A sessao e os paragrafos sao definidos por uma listagem de pares de macros para nroff/troff. A proxima sessao comecara com um periodo a entao os pares de letras serao definidos. Paragrafos funcionam da mesma maneira - exceto que uma linha em branco tambem e considerada um paragrafo. 4.02 - Mas quando eu programo, eu tenho visto que posso usar ]] e [[ para mover entre as funcoes. Minhas funcoes nao possuem a extensao .SH ou qualquer coisa no comeco, que funcionam? Sorte para os muitos programadores em C, que uma funcao aberta no comeco da l

inha e tambem definida como fim da sessao. 4.03 - Como eu trabalho com multiplos arquivos ao mesmo tempo? VI permite que varios arquivos sejam abertos ao mesmo tempo. Diferente de muitos editores, voce somente vera um arquivo. Se voce iniciar o VI com varios arquivos na linha de comando sera aberto todos. Voce iniciara a partir de um primeiro arquivo, e voce podera mover para o proximo arquivo digitando :n. Se voce tem alteracoes no arquivo atual que voce nao quer manter, voce pode usar :n !. Note que este descartara as alteracoes que voce tenha. Se voce quer salvar , voce precisa usar primeiro :w. 4.04 - Assim, eu tenho que iniciar o VI, mas agora eu tenha que editar outro arquivo. Como eu procedo? :n <nome_do_arquivo> carregara o arquivo no VI. Voce precisara salvar o arqui vo corrente 4.05 - Como posso retornar ao primeiro arquivo? :e # editara o ultimo arquivo que voce esta editando. Voce pode usar isso par a voltar para a swap e rapidamente entre dois arquivos diferentes. Se voce esta ed itando muitos arquivos, voce pode usar :n para circular entre eles. 4.06 - Mas eu queiro somente editar somente um arquivo. Eu tenho que abrir e queira ir para outro arquivo. Como faco? Apenas use :e <nome_do_arquivo> e sera carregado. 4.07 - Como adiciono outro arquivo no meio do arquivo que estou editando? :r <nome_do_arquivo> carregara um novo arquivo no diretorio corrente. Vale a pena anotar que Unix em geral que comando de saida como arquivo importante. Por isso, voce pode ler facilmente a saida do comando no arquivo. :r <comando>! ira ler a saida 5.00 - Onde obtenho documentacao online do VI? Este FAQ (na versao original) e postado frequentemente em listas onde todos os arquivos online do VI. Tambem postado em uma lista de discussao com varios mirrors (espelhos). O endereco principal e ftp://alf.uib.no/pub/vi, mas esta arquivado em muitos, muitos sites. O VI FAQ arquivo e todo listado. Por favor verifique esse FAQ antes de baixa-lo, porque ha definitivamente um mais perto de voce, do que este situado na Noruega. Os poucos espelhos sao: ftp://ftp.uwp.edu/pub/vi ftp://ftp.uu.net/pub/text-processing/vi ftp://ftp.cc.monash.edu.au/pub/vi ftp://ftp.s.u-tokyo.ac.jp/misc/vi-archive O site tem muitos, muitos arquivos de VI, incluindo poucos clones. Tambem contem uma Distribuicao UCB do VI, e arquivos de macros. Verifique. 6.00 - Truques e Macros Esta sessao trata dos truques e macros no VI. Atualmente, qualquer interesse em Truques e macros do VI sao aceitos, que nao sao muito longos. Eu adicionei algumas sugestoes que me foram passadas das quais sao razoaveis. 6.01 - Truques

Note: Tambem cheque as Macros abaixo. Muitas macros e truques sao inalteraveis . xp Este deletara o caracter onde se encontra o cursor, e colocara adiante. Em outras palavras, ela troca a localizacao de dois caracteres. ddp yyp Similar ao xp, mas troca linhas. Duplica a linha

uu Desfaz e refaz a ultima alteracao. (Este pega a ultima modificacao do arquivo sem alterar qualquer coisa.) Voce pode tamber usa-lo para comparar as alteracoes na linha. Faca alteracoes na linha, pressione U para desfazer as alteracoes na linha corrente, e entao pressione u para ver a diferenca entre as duas versoes. :g/.*/m0 Este inverte a ordem das linhs no arquivo corrente. m0 e um comando ex que move a linha para a linha 0. :v/./d ou :g/^$/d Remove todas a linhas em branco. :g/^[ <ctrl-v><tab>]*$/d Remove todas as linhas que contem somente espacos em branco. :v/./$s/$/<ctrl-v><enter>./|'';/./-1j|$d Substitui varias linhas em branco por apenas uma linha em branco. 6.02 - Macros Nota: <ctrl-x> significa manter o controle baixo e teclar x. Troca caracter acima: map * kxjphxkP Dobre uma linha que seja demasiadamente longa. map g $80<ctrl-v><ctrl-v>|F r<ctrl-v><enter> Altere conforme a maioria das palavras map v ywmno<ctrl-v><esc>P:s/./\~/g<ctrl-v><enter>0"nDdd`n@n Coloque ` e ' ao redor da palavra atual map *` i`<ctrl-v><esc>ea'<ctrl-v><esc> Coloque ' e ' ao redor da palavra atual map *' i'<ctrl-v><esc>ea'<ctrl-v><esc> Coloque " e " ao redor da palavra atual map *" i"<ctrl-v><esc>ea"<ctrl-v><esc> Coloque ` e ` ao redor da palavra atual map! `` <ctrl-v><esc>bi`<ctrl-v><esc>ea' Separe a linha onde esta o cursor, e coloque > no comeco da proxima linha. (Para citar Usenet, etc). Eu tenho mesmo um problema com minha versao antiga desde sobre a mesma versao, assim eu o tenho, e penso que devo trabalhar. map g may00<ctrl-v><esc>P`ao<ctrl-v><esc>P:s/./ /g<ctrl-v><enter>0i><ctrl-v> <esc>$mb`ay$`bP'add

Inserir um caracter map g i$<ctrl-v><esc>r Formatando um paragrafo sem o programa fmt (Para usar, use J poucas vezes, entao esse poucas vezes) map K 0721Bhr<ctrl-v><enter> Ou, um pouco elegante, mas sem precisar usar J e K varias vezes map K {vma}b:'a,.j<ctrl-v><enter>:s/\(...................................... ........\)/\1<ctrl-v><ctrl-v><enter>/g<ctrl-v><enter> Faca ctrl-x para recortar, ctrl-v para colar, ctrl-p para copias. Voce marcaria o inicio da area com m (use mm). (ctrl-c nao podera remapear enquanto e definido o caracter de interrupcao do Unix.) map <ctrl-v><ctrl-x> "zd`m map <ctrl-v><ctrl-p> "zy`m map <ctrl-v><ctrl-v><ctrl-v><ctrl-v> "zP`m Salvar um arquivo de somente leitura. Cuidado, ele altera as permissoes. Quando acabar, sao alterados para leitura/gravacao do proprietario, leitura para os demais. Note que este nao pode mesmo alterar as permissoes originais. map K :!chmod 666 %<ctrl-v><enter>:w!<ctrl-v><enter><ctrl-v><enter>:!chmod 6 44 %<ctrl-v><enter> Status da linha no VI (ordenado de ...) [Nota: Ele e demorado...] map <ctrl-v><up-arrow> k<ctrl-v><ctrl-g> map <ctrl-v><down-arrow> j<ctrl-v><ctrl-g> map k k<ctrl-v><ctrl-g> map j j<ctrl-v><ctrl-g> map <ctrl-v><ctrl-f> <ctrl-v><ctrl-f><ctrl-v><ctrl-g> map <ctrl-v><ctrl-b> <ctrl-v><ctrl-b><ctrl-v><ctrl-g> map H H<ctrl-v><ctrl-g> map M M<ctrl-v><ctrl-g> map L L<ctrl-v><ctrl-g> map G G<ctrl-v><ctrl-g> map <ctrl-v><ctrl-u> <ctrl-v><ctrl-u><ctrl-v><ctrl-g> map <ctrl-v><ctrl-d> <ctrl-v><ctrl-d><ctrl-v><ctrl-g> Centralizar a linha map = 080i <ctrl-v><esc>$78hd0^D:s/ / /g<ctrl-v><enter>$p Redefinir para 5 espacos para marcar a tabulacao map! <ctrl-v><ctrl-i> <space><space><space><space><space> Verifique a linha atual e a anterior (repita o inverso para arquivo) map v Gdd''Pj Copie enquanto for final de arquivo, execute ele na shell e leia o resultado map v y$o<ctrl-v><esc>pI:r!<ctrl-v><esc>"add@a Permita que no VI o backspace funcione map! <ctrl-v><ctrl-?> $<ctrl-v><esc>Xs map! <ctrl-v><ctrl-h> $<ctrl-v><esc>Xs Imprima o documento para a impressora padrao (para BSD substitua lp por lpr) map v 1G!Glp<ctrl-v><enter>u Ajuste # para ligar e desligar a numeracao de linhas: map \o# o:se nu<ctrl-v><enter>:se nonu<ctrl-v><esc>-:map \o# "wp<ctrl-v><ent er>

map \d# "w2dd map \x# "xdd@x"xpk map # ma3L\o#\x#\d#`a:<ctrl-v><enter> Cite o paragrafo corrente com '>'s map Z> mc{jma}kmb:'a,'bs/^ /> /<ctrl-v><enter>'c Permita <ctrl-z> para suspender processos no modo de insercao map! <ctrl-v><ctrl-z> <ctrl-v<esc>:stop<ctrl-v><enter> Faca todos os espacos tabulados map! <ctrl-v><ctrl-v><ctrl-v><ctrl-i> <ctrl-v><ctrl-v><space> Substitua todas as tabulacoes com o espacamento apropriado para parar tabulaco es. Removendo os dois ultimos caracteres (4<enter>) permitira que voce especifique o nde para sua tabulacao: #t4<enter> map #t 1G!Gpr -t -e4<ctrl-v><enter> map #T !}pr -t -e4<ctrl-v><enter>} Insira uma regra acima da linha atual map #r O<ctrl-v><esc>i....+....1....+....2....+....3....+....4....+....5.... +....6....+....7....+....8<ctrl-v><esc> Esta e um macro que se redefine: (mais por razoes heursticas do que qualquer outra coisa) introduz o foo na primeira vez que funcionado, e barra todas as vezes subsequentes. map K ifoo<ctrl-v><esc>:map K ibar<ctrl-v><ctrl-v><ctrl-v><esc><ctrl-v><ente r> Isso fas as notacoes finais. Ele ira inserir um [#] na localizacao corrente e colocara o [#] no rodape do documento e deixara voce digitar. Digitando ` voce retornara para a localizacao original uma vez que voce finalizou suas notificacoes finais. [#] se ra um numero de notacao final, nao um caracter literal #. (Muito louco, hum? map K ma1GO[0]<ctrl-v><esc>G$?\[[0-9]*\]<ctrl-v><enter>lyt]`aa<ctrl-v><enter ><ctrl-v><esc>O<ctrl-v><esc>pI:r!echo '1 <ctrl-v><esc>A + p' <ctrl-v><ctrl-v>| d c<ctrl-v><ctrl-v><ctrl-v><ctrl-v><ctrl-v><ctrl-v><ctrl-v><enter><ctrl-v><esc>0"y D@y0i[<ctrl-v><esc>A]<ctrl-v><esc>kkJJJmb1Gdd`bF[yf]Go<ctrl-v><esc>pA 7.00 - Referencia rapida do VI em ordem alfabetica ... significa que algo deve ser especificado antes ou depois do comando, como apropriado. Este e normalmente as teclas de movimento do cursor (h,j,k,l,w,b, etc.) or o numero da linha. # e ) ( } { ]] [[ 0 $ ^ + (onde # e um numero) tempos seguido do comando n ... vai para o modo de comandos proxima sequencia sequencia anterior proximo paragrafo paragrafo anterior proxima sessao sessao anterior inicio da linha fim da linha primeiro caracter sem espaco em branco primeiro caracter da proxima linha

primeiro caracter da linha anterior (barra de espaco) proximo caracter (enter/return) proxima linha / localiza da linha para frente ? localiza da linha para tras % procura nos parenteses correntes, apoiando, or suportando , direcao reversa dos ultimos f, F, t, ou T ; repete ultimo f, F, t, ou T . repete ultimo comando ` vai para a proxima marcacao ' vai para o inicio da linha marcada `` retorna para a marcacao anterior ou localizacao encontrada anteriormente '' vai para o inicio da linha da marcacao anterior ou localizacao encontrad a anteriormente ~ altera o modo do caracter atual (ex: l vira L e L vira l, juntamente com a (barra de espaco)) * verifica registro @ executa comando no registro ! envia proximo comando, substituindo a saida (por exemplo !} formato pass a o paragrafo atual ao formato do comando, e substitui a saida ao formato retorna) !! envia linha de comando >> desloca a largura do deslocamento a direita << desloca a largura do deslocamento a esquerda >% desloca enquanto combinar (, [, ou { a direita <% desloca enquanto combinar (, [, ou { a esquerda a adiciona apos o cursor A adiciona no final da linha ^a nao utilizado b inicio da palavra anterior B inicio da palavra anterior, ignorando pontuacao ^b volta uma tela (usar <ctrl>+<b>) c altera enquanto ... C altera ate o final da linha ^c termina modo de insercao, nao usado em modo de comando (usar <ctrl>+<c>) d deleta enquanto ... D deleta ate o final da linha ^d desce a tela uma linha f procurar ... F procurar antes da linha onde se encontra o cursor ^f proxima tela (usar <ctrl>+<f> g nao utilizado G ... ir para (por padrao ir para o fim do arquivo) ^g mostra o status da linha h movimenta o cursor a esquerda H primeira linha da tela ^h backspace em modo de insercao, a esquerda em modo de comando i inserir antes da localizacao do cursor I inserir antes do primeiro caracter diferente de espaco na linha ^i Inserir tabulacao, comando nao utilizado j abaixo J unir a proxima linha com a linha onde se encontra o cursor ^j para baixo, criando uma nova linha k acima K nao utilizado ^k nao utilizado l direita L ultima linha da tela ^l redesenha a tela m marca posicao no registro

M meio da tela ^m retorno de carro (mesmo que <Enter>) n repete ultima busca N repete ultima busca, na direcao reversa ^n abaixo o nova linha abaixo da que se encontra o cursor O nova linha acima da que se encontra o cursor ^o nao utilizado p colar acima da linha atual P colar abaixo da linha atual ^p acima q sair Q sair e executar ex (.exrc) ^q nao utilizado r substituir caracter atual R substituir caracteres enquanto modo de insercao estiver ativado ^r redesenha a tela em modo de comando s substituir S substituir toda a linha ^s nao utilizado t ate ... T ate antes ... ^t mover para o proximo deslocamento u desfazer ultima alteracao U desfazer ultimas alteracoes ^u subir ate o topo da janela v nao utilizado V nao utilizado ^v comando nao utilizado, proximo caracter inserido w inicio da proxima palavra W inicio da proxima palavra, ignorando pontuacao ^w comando nao utilizado, vai ate o inicio da palavra anterior x remover o caracter onde se encontra o cursor X remover caracter anterior onde se encontra o cursor ^x nao utilizado y copiar Y copia a linha corrente ^y sobe a tela uma linha z posiciona a tela na linha (retorna para o topo da tela, para o meio, par a o final) ZZ grava (somente se for alterado o documento) e sai ^z nao utilizado 7.01 - Opcoes para entrada de comandos ( comandos : ) (Nota: esta nao e uma lista canonica, apenas as mais importantes.) :r <arquivo> :r!<comando> :nr <arquivo> :! <arquivo> :sh :so <arquivo> :x :wq :l1,l2w <arquivo> l2 nao especificado, assume o arquivo inteiro (mesmo que :w ) ler <arquivo> no texto corrente ler a saida do comando <comando> no texto corrente ler o numero da linha executa comando, retorna executa shell ler e executar comandos do <arquivo> gravar (somente se forem feitar alteracoes) e sai grava e sai grava entre as linhas l1 e l2 no <arquivo>. Se <arquivo> nao for especificado, assume o arquivo corrente. Se l1,

:w >> <arquivo> :w! :q :q! :e <arquivo> :e! :n :e +n <arquivo> m :n <arquivos> tar :e# ternado :args :rew :map m n :map! m n :unmap m :unmap! m :ab <1> <2> do :unab <1> :cd <diretorio> :set <opcao>

adiciona no <arquivo>. Pode usar numero de linhas salva as alteracoes no arquivo corrente sair sair, ignorando as alteracoes edita o <arquivo> sem sair do VI Ignora alteracoes desde ultima escrita Edita proximo arquivo Edita o <arquivo> ate linha n, se nao for fim, assume fi do arquivo Especifica <arquivos> na nova lista de arquivos para edi Edita arquivos alternados (se :e <arquivo> e usado, e al para o arquivo original) Mostra os arquivo que sao editados Rebobina a lista de arquivos no topo Cria uma macro (faca m ate n) Cria uma macro em modo de insercao (faca m ate n) Remove macro m Remove macro em modo de insercao m Abreviacao - substitua <1> por <2> sempre que for digita como uma palavra Nao abrevie <1> vai para o <diretorio> Ajusta <opcao> ...

7.02 - Opcoes de Ajuste(Configuracao) As abreviacoes em parenteses podem ser usadas. Sintaxe: :set <opcao> <parametro> (Se parametro for especificado) Multiplas opcoes podem ser especificadas em uma linha. :set <opcao>? mostra o valor da opcao :set all mostra o valor de todas as opcoes Para opcoes sem valor, set no <opcao> desligara. Opcao autoindent (ai) nte Padrao noai Significado Insere novas linhas automaticame identificando a posicao acima ou autoprint (ap) inado autowrite (aw) quivo beautify (bf) ntrole ova linha, directory= (dir=) o buffer. edcompatible bstituicao errorbells (eb) /tmp noedcompatible errorbells alimentacao de formulario) Nome do diretorio que e colocado Use ed com caracteristicas de su Emite um som de erro ap noaw nobf abaixo Mostra as alteracoes apos determ comando Automaticamente salva antes o ar :no, :! Ignora todos os caracteres de co durante a entrada (exceto tab, n

exrc (ex) iretorio hardtabs= (ht=) ignore case (ic) res lisp list inal das magic es mesg terminal number (nu) quivo open optimize (opt) iando exto paragraphs= (para=) } prompt ompt readonly (ro) for usado redraw ditado remap outras macros report= inhas scroll to for recebido linha. Tambem,

no exrc 8 noic nolisp no list magic mesg nonumber open optimize

Permite arquivos .exrc fora do d base Ajusta limites de tabulacoes Ignora caso em expressoes regula Alterna para modo lisp Mostra todas as tabulacoes, no f linhas Habilita mais expressoes regular Permites mensagens enviadas via Mostra o numero das linhas no ar Permite abertura e visualizacao Otimiza posicao do texto nao env retorno de carro ao imprimir o t

IPLPPPQPPLIbp prompt noro noredraw remap 5 1/2 janela

Ajusta os delimitadores para { & Modo de entrada de comandos : pr Nao pode escrver ao menos que ! Redimensiona a tela enquanto e e Permite que macros apontem para Altera relatorios afetados > x l Mostra a tela ate o final enquan o comando para ir para a proxima e impresso o numero de linhas po

r z. (z imprime sections= ]] shell= (sh=) . shiftwidth= (sw=) nto SHNHH HU /bin/sh 8 2*linha) Define o fim da sessao para [[ e Shell padrao. Use ambiente SHELL Caracteres de deslocamento enqua se usa comandos de deslocamento Mostra combinacoes {, }, (, ), [ Mostra o modo que voce esta. Nao atualiza a tela imediatament Ajusta o tamanho da tabulacao Numero de caracteres significant todos os caracteres) Define o caminho (path) de arqui Ajusta o modo do terminal Mostra mensagens de erro curtas

showmatch (sm) nosm , or ] showmode noshowmode slowopen (slow) e apos uma insercao tabstop= (ts=) 8 taglength= (tl=) 0 es para tags (0 significa tagz= vos que contem tags term= terse tag, /usr/lib/tags noterse

timeout (to) teclado apos um

timeout

Mapeamento do tempo de espera do segundo Ajusta o tipo de terminal Mostra mensagens "Nao escreva de Numero de linhas na janela em mo Ajusta a margem da direita. Maio n espacos a partir da borda da t

ttytype= warn warn sde que o ultimo altere" window= (w=) do visual wrapmargin= (wm=) 0 r que 0 sera ajustado ela wrapscan (ws) ivo writeany (wa) ws nowa

Busca correr ate o final do arqu Permite salvar alguns arquivos.

8.00 - Criando um arquivo .exrc Todos os comandos que posso usar pelo modo de entrada de comandos (comandos : ), pode ser usado em um .exrc, sempre carregado automaticamente quando voce inicia o VI. Adicinados, o comando de origem (so), abreviacoes (ab), e macros podem ser usadas. Remova de la todas as linhas em branco no seu .exrc. A " na primeira col una pode ser usado e o vi interpretara como um comentario. 8.01 - Um arquivo .exrc simples Esse arquivo .exrc e real. meu. Porque daquela, nao ajusta tantas opcoes como pode desejar fazer para comecar uma ideia boa de o que pode ser usado. Entretanto, deve comecar a ideia basica do exemplo baixo, e e completamente direto. Primeiro, note que voce nao precisa especificar o :, ele e assumido. * Ignore a busca set ic * Ajuste espacamento de 9 caracteres a direita set wm=9 * Mostre parenteses combinados set sm * Ajuste o shell para zsh set sh=/nfs/kimbark/k4/ellidz/bin/zsh * Uma abreviacao do meu email ab zidlle E. Larry Lidz - ellidz@eridu.uchicago.edu ab --l -Larry * V maiusculo acionara -x (-x diz para nao salvar backups) do arquivo corrente map V :w<ctrl-v><enter>:!ispell -x %<ctrl-v><enter>:e!<ctrl-v><enter><ctrl-v><en ter> * = centralizar a linha ... se eu posso usar map = 80I <ctrl-v><esc>$78hd0:s/ / /g<ctrl-v><enter>$p * v formatara o paragrafo corrente map v {0!}fmt<ctrl-v><enter> * Separe a linha dois caracteres apos o cursor, entre com > no inicio da linha map g may0O<ctrl-v><esc>P`ay$:s/./ /g<ctrl-v><enter>0i><ctrl-v><esc>`aPa <ctrl-v ><esc>D * Altere a palavra corrente map K ywmno<ctrl-v><ctrl-v><ctrl-v><esc>P:s/./\~/g<ctrl-v><ctrl-v><ctrl-v><enter >0"nDdd`n@n 9.00 - Erros no VI

Eu gostaria de dizer que o VI e livre, mas informamente, nao e. Esses erros sao erros do VI original, nao necessariamente em todos os clones. 10.00 - Glossario Esse glossario sera atualizado enquanto as pessoas sugerirem os termos que nao sao compreendidos. Por favor avise-me se tiver qualquer sugestao. modo de comando Modo de comando e o modo dentro do VI que os usuarios digitam comandos. (Incluindo comandos de movimentacao do cursor, comandos de edicao, etc.) ed Editor nao-visual do Unix <Esc> A tecla de escape. A tecla e marcada normalmente no teclado por Escape, as vezes ^[ e usada em seu lugar. Se la nao tem a tecla de escape, as vezes a tecla Meta sera utilizada. ex Um editor do Unix, todos os comandos sao precedidos de : sao passados. modo de insercao Modo de insercao e o modo dentro do vi onde o texto e inserido no documento . macro Uma macro e uma combinacao de teclas de atalho. Por exemplo, uma macro permitira o uso de uma letra e tera que executar diferentes comandos. modo de abertura Modo de abertura e o modo que o VI sera iniciado se nao poder determinar o tipo de terminal, ou voce acredita ter um hardware ou um terminal glass-tube. expressaoes regulares (RegEx) (RE) Expressoes regulares, geralmente chamadas "RegEx" ou "REs" sao as configura coes de combinacoes de teclas que permitem as pessoas terem uma extensa variedade de controle que nos estamos procurando. RegEx e usado no Unix, e e comum entre varios programas. sed Stream Editor. Um editor que nao tem interface. Todos os comandos sao passa dos na forma de linha de comando. vi O editor que este FAQ e dedicado 11.00 - Bibliografia Consultada VI QUICK REFERENCE/HELP CARDS Specialized System Conultants, Inc. (206)-367-8649 P.O. Box 55549 Seattle, WA 98155 Unix Programming Tools,

Eric Foster-Johnson M and T Books, 1997. ISBN 1-55851-482-1 Includes a CD-ROM containing vim. http://www.pconline.com/~erc/Unixprog.htm The ULTIMATE GUIDE to the VI and EX Text Editors Hewlett Packard Company (authors) The Benjamin/Cummings Publishing Company, Inc. ISBN 0-8053-4460-8 A PRACTICAL GUIDE TO THE Unix SYSTEM Mark G. Sobell Benjamin Cummings Publisher LEARNING THE VI EDITOR Linda Lamb O'Reilly & Associates ISBN 0-937175-67-6 Unix POWER TOOLS (particularly for macros) O'Reilly & Associates MASTERING REGULAR EXPRESSIONS (for RegEx) Jeffrey Friedl O'Reilly & Associates, 1997 ISBN 1-56592-257-3 Unix TEXT PROCESSING Hayden Books, 1987 Dale Dougherty and Tim O'Reilly ISBN 0-8104-6291-5 An Introduction to Display Editing with Vi' & 'EX reference Manual' in Unix programmers Manual vol. II Bill Joy Berkeley Software EL EDITOR VI. MANUAL DE REFERENCIA RA-MA Editorial. Por favor coloquem sugestoes mas estes livros sao os mais usados para aprender VI. Eu adicionarei livros para a sessao como as pessoas me sugerem. Copyright, E. Larry Lidz, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001. Todos os Direitos Reservados.

You might also like