SlideShare uma empresa Scribd logo
1 de 85
Baixar para ler offline
VIM
23 de abril de 2007
Sumário
I Sobre essa Apostila 2
II Informações Básicas 4
1 O que é o Vim 9
2 Plano de ensino 10
2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Guia do Curso (Início da semana 1) 16
4 Guia de comandos 17
5 Sobre o Vim 25
6 Trabalhando com o Vim 29
7 Modos de operação 33
8 Lição 1 - Interagindo com o Editor 37
8.1 Entrando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Saindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.3 Escrevendo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.4 Saindo sem salvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.5 Salvando 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.6 Salvando 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.7 Salvando e saindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.8 Abrindo um arquivo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.9 Salvando 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.10 Abrindo um arquivo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
9 Lição 2 - Sintaxe dos comandos 41
9.1 Parte 1 / 7 | Operadores de controle . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9.2 Parte 2 / 7 | O paradigma Vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9.3 Parte 3 / 7 | Objetos de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9.4 Parte 4 / 7 | Verbos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
9.5 Parte 5 / 7 | Valores de quantidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
9.6 Parte 6 / 7 | Os direcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
9.7 Parte 7 / 7 | Construindo comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
10 Lição 3 - Acesso ao texto: Movendo-o 45
10.1 Parte 1 / 7 | Iniciando uma sessão somente leitura . . . . . . . . . . . . . . . . . . . 45
10.2 Parte 2 / 7 | linha a linha para baixo . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
10.3 Parte 3 / 7 | linha a linha para cima . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
10.4 Parte 4 / 7 | tela a tela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
10.5 Parte 5 / 7 | linhas escolhidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
10.6 Parte 6 / 7 | posição da tela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
10.7 Parte 7 / 7 | posição da tela escolhida . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11 Lição 4 - Acesso ao texto: Movendo o cursor 48
11.1 Parte 1 / 7 | direcionais e texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
11.2 Parte 2 / 7 | tela e página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11.3 Parte 3 / 7 | linha, parênteses e chaves . . . . . . . . . . . . . . . . . . . . . . . . . 50
11.4 Parte 4 / 7 | caractere com linha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
11.5 Parte 5 / 7 | coluna com linha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
11.6 Parte 6 / 7 | caractere com sentença e parágrafo . . . . . . . . . . . . . . . . . . . . 51
11.7 Parte 7 / 7 | palavra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
12 Lição 5 - Acesso ao texto: Buscando ocorrências (Início da semana 2) 54
12.1 Parte 1 / 7 | buscando (na linha) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
12.2 Parte 2 / 7 | buscando (na linha) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
12.3 Parte 3 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
12.4 Parte 4 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
12.5 Parte 5 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
12.6 Parte 6 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
12.7 Parte 7 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
13 Lição 6 - Transitando entre os modos 62
13.1 Parte 1 / 7 | Entrando em modos de inclusão . . . . . . . . . . . . . . . . . . . . . . 62
13.2 Parte 2 / 7 | Os modos derivados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
13.3 Parte 3 / 7 | Modo Normal de inclusão . . . . . . . . . . . . . . . . . . . . . . . . . . 64
13.4 Parte 4 / 7 | Modos visual e visual de inclusão . . . . . . . . . . . . . . . . . . . . . . 65
13.5 Parte 5 / 7 | Modos de seleção e seleção de inclusão . . . . . . . . . . . . . . . . . 66
13.6 Parte 6 / 7 | Modo ex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
13.7 Parte 7 / 7 | As ruelas e usos dos modos . . . . . . . . . . . . . . . . . . . . . . . . 68
2
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
14 Lição 7 - Editar o texto 70
14.1 Apagar o texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
14.2 Copiar o texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
14.3 Colar o texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
14.4 Fazer e desfazer comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
14.5 Substituir ocorrências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
15 Lição 8 - Configuração do Vim e ferramentas especiais 74
15.1 Configurando o Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
15.2 Ferramentas de consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
15.3 Ferramentas de edição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
16 Exemplo de .vimrc 80
17 Notas Finais 82
3
Parte I
Sobre essa Apostila
4
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Conteúdo
O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in-
ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br.
O formato original deste material bem como sua atualização está disponível dentro da licença
GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de
mesmo nome, tendo inclusive uma versão traduzida (não oficial).
A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro
de 2006. Críticas e sugestões construtivas são bem-vindas a qualquer tempo.
Autores
A autoria deste é de responsabilidade de Tomas Ribeiro Cardoso (tomas@cdtc.org.br).
O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento, que
vem sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto com
outros parceiros institucionais, atuando em conjunto com as universidades federais brasileiras
que tem produzido e utilizado Software Livre, apoiando inclusive a comunidade Free Software
junto a outras entidades no país.
Informações adicionais podem ser obtidas através do email ouvidoria@cdtc.org.br, ou da
home page da entidade, através da URL http://www.cdtc.org.br.
Garantias
O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi-
lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizam
direta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.
Licença
Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br) .
Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.1 or any later version published by
the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS-
TILA. A copy of the license is included in the section entitled GNU Free Documentation
License.
5
Parte II
Informações Básicas
6
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Sobre o CDTC
Objetivo Geral
O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina-
ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito do
desenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira.
Objetivo Específico
Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário e
de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os
servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado
nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios
de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo
treinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários,
criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar como
incentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe-
recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento de
produtos de software não proprietários e de seu código fonte livre, articulando redes de terceiros
(dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro-
dutos de software livre.
Guia do aluno
Neste guia, você terá reunidas uma série de informações importantes para que você comece
seu curso. São elas:
• Licenças para cópia de material disponível
• Os 10 mandamentos do aluno de Educação a Distância
• Como participar dos foruns e da wikipédia
• Primeiros passos
É muito importante que você entre em contato com TODAS estas informações, seguindo o
roteiro acima.
Licença
Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br).
7
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos
da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior
públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA
APOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-
mentação Livre GNU".
Os 10 mandamentos do aluno de educação online
• 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado é
pré-requisito para a participação nos cursos a distância.
• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-
tica é necessário para poder executar as tarefas.
• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-
cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,
dos colegas e dos professores.
• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seus
colegas de turma respeitando-os e fazendo ser respeitado pelo mesmo.
• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão
e a sua recuperação de materiais.
• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e
realizá-las em tempo real.
• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre.
• 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagens
e descobertas.
• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente é
ponto - chave na comunicação pela Internet.
• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual não
controla a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.
Como participar dos fóruns e Wikipédia
Você tem um problema e precisa de ajuda?
Podemos te ajudar de 2 formas:
A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:
. O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informações
que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a
8
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação que
interesse ao grupo, favor postá-la aqui.
Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do
curso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais
efetivos para esta prática.
. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo
para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas
a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem
ajudar.
Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a
formalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópico
é recomendável ver se a sua pergunta já foi feita por outro participante.
A segunda forma se dá pelas Wikis:
. Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-
ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podem
ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um
ótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-
dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, por
pessoas de todas as partes do mundo. Acesse-a em português pelos links:
• Página principal da Wiki - http://pt.wikipedia.org/wiki/
Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!
Primeiros Passos
Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:
• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;
• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das
ferramentas básicas do mesmo;
• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;
• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.
Perfil do Tutor
Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.
O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivos
valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as
idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.
9
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,
para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutor
ou instrutor:
• fornece explicações claras acerca do que ele espera, e do estilo de classificação que irá
utilizar;
• gosta que lhe façam perguntas adicionais;
• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-
que motivo a classificação foi ou não foi atribuída’;
• tece comentários completos e construtivos, mas de forma agradável (em contraste com um
reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de
ameaça e de nervossismo’)
• dá uma ajuda complementar para encorajar um estudante em dificuldade;
• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;
• ajuda o estudante a alcançar os seus objetivos;
• é flexível quando necessário;
• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,
talvez numa fase menos interessante para o tutor);
• escreve todas as correções de forma legível e com um nível de pormenorização adequado;
• acima de tudo, devolve os trabalhos rapidamente;
10
Capítulo 1
O que é o Vim
O Vim é um editor de textos baseado no Vi com suporte a diversos formatos de texto e com
ferramentas extensas de consulta, edição e formatação de textos. Além disso também oferece
ferramentas de configuração de uso. Não somente sua licença é compatível com a GPL como
também contribui socialmente, repassando o suporte financeiro voluntário que recebe para um
programa social da Uganda! Ele é um editor de texto livre (e até libertário), atual e poderoso!
11
Capítulo 2
Plano de ensino
2.1 Objetivo
O objetivo deste curso é qualificar usuários de Linux a utilizar de forma avançada o editor Vim.
Isso significa que ao término deste curso você será capaz de se virar rapidamente com qualquer
edição de texto, seja qual for seu tamanho.
No entanto, para maior esclarecimento, vou dizer o que você não vai aprender com ele: Não
espere aprender a fazer um currículo bonito ou um texto com justificação, fontes, cores e margens
primorosas para sua apresentar sua tese de pós-doutorado. Para isso, você precisa usar um bom
processador de textos como o OpenOffice Writer, por exemplo. O Vim não codifica seu texto, ou
seja, este entra plano e sai plano: sua funcionalidade máxima se aplica à scripts, arquivos de
configuração, códigos fonte e também, é claro, à textos de e-mail, lista de compras, arquivos de
anotações pessoais, de trabalho ou à qualquer texto que não se pretenda parecer uma imagem,
com estilizações de caracteres e de cores, com figuras, margens barrocas e etc.
2.2 Público Alvo
Para novatos no Linux:
• Se você está se aventurando pela linha de comando e não sabe com que escrever bem os
textos, este curso pode ser do seu interesse;
• Se você está estudando Linux e quer conhecer e entender de um dos editores modo texto
mais consagrados (se não for o mais) do universo do software livre, este curso pode ser do
seu interesse;
• Se você já ouviu falar do editor vi ou da sua família de editores e é curiosa(o) por compreendê-
la, este curso pode ser do seu interesse.
Para usuários regulares, estudantes e programadores:
• Se você utiliza um clone do vi, mas não se conforma com suas limitações ou com a sua
licença, este curso pode ser do seu interesse;
• Se você é um entusiasta da linha de comando e sempre quis ou tem vontade de ter controle
sobre o tradicional editor vi ou de algum semelhante, este curso pode ser do seu interesse;
12
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• Se você frequentemente tem de editar arquivos de configuração e precisa dominar algum
bom editor de texto, este curso pode ser do seu interesse;
• Se você pretende estudar e entender bem de Linux, mas sempre achou o vi um editor
exótico, misterioso e de difícil compreensão, este curso pode ser do seu interesse;
• Se você escreve scripts em perl, bash scripts ou o que quer que seja e precisa estudar um
editor modo texto rápido, leve, versátil e configurável, este curso pode ser do seu interesse;
• Se você programa centenas de linhas e necessita de um editor que além de reconhecer sua
sintaxe lhe auxilie na difícil organização e edição das suas várias páginas de código, este
curso pode ser do seu interesse;
2.3 Pré-requisitos
A resposta rápida é: o único pré-requisito, na verdade até somente preferencial, é o uso básico
do linux em modo de comando. Ou seja, em princípio, todo estão.
Agora a resposta longa. Eu devo admitir, usar o Vim intuitivamente não é fácil. O esforço
depositado na tarefa de se familiarizar com as ferramentas e com a filosofia Vim de se editar
textos pode ser comparado ao de aprender uma linguagem de programação nova. Ou seja, exige
paciência com os caprichos do programa. Se você só quiser escrever um e-mail de natal para
o seu tio, provavelmente as poderosas ferramentas do Vim irão parecer a você pouco mais úteis
que uma pinça.
Porque então aprender a usar o Vim? Não é melhor simplesmente usar o emacs para es-
crever meus textos e scripts? Aprender a usar o Vim não seria como querer aprender a usar
uma calculadora cujo uso é mais complicado que os próprios cálculos operados? Sim. Se você
não tem sugurança ou não é convicto sobre a utilidade de saber manipular bem textos planos,
provavelmente você irá se entediar e se desmotivar frente à aparente gratuidade do difícil estilo
de edição do Vim.
2.4 Descrição
Em princípio, nada de mal. Só que talvez você se apaixone. Pelo editor, é claro, não por mim.
Aqui descreverei o programa do curso, porém, se estiver interessado somente na ementa, ou
seja, a lista de passos do curso, consulte "Ementa do curso".
[se estiver perdido, leia "Ambientação do Moodle".]
A primeira parte
Após serem apresentadas as noções preliminares, estudaremos o Vim como um programa
(antes de um editor) como interagir timidamente com o editor em suas funções fundamentais
de operação, como abrir um arquivo, salvá-lo e sair do Vim. Imediatamente depois, para que
se possa inciar o aprendizado das ferramentas e dos comandos do Vim, serão apresentados os
princípios da sintaxe Vi de comandos padrão. Enfim, para terminar a primeira parte, aprende-
remos a consultar, ler e pesquisar, ou, se quiser, a navegar por um texto utilizando ferramentas
específicas de movimentação de texto, de cursor e de busca de ocorrências.
A segunda parte
Visto o editor como um todo, sua sintaxe e suas ferramentas de visualização e de acesso ao
texto, vamos estudar com detalhes como transitar entre os modos de operação e seus derivados,
13
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
como pré-requisito para o passo seguinte. Sabendo disto tudo, estamos prontos para aprender
a fazer aquilo que é mais central em qualquer editor de texto: a editar um texto. Aprenderemos
a realizar no Vim (ou seja, de todas as maneiras imagináveis) os comandos básicos de edição
como copiar, colar e deletar, para tanto, farei uma breve vistoria sobre como manipular comandos.
Por fim, na medida do possível, os iniciarei nos bastidores do Vim, e veremos o que faz do Vim
mais do que um editor de texto plano muito versátil, mas praticamente um processador de texto
sem codificação. Ou seja, apresentarei os princípios da configuração do Vim e alguns recursos
especiais.
2.5 Metodologia
O curso está dividido da seguinte maneira:
2.6 Cronograma
• Descrição das atividades
• Semana 1
• Guia de comandos
• Sobre o Vim
• Noções preliminares
• Modos de operação
• Lição 1 - Interagindo com o editor
• Lição 2 - Sintaxe dos comandos
• Lição 3 - Acesso ao texto: Movendo-o
• Lição 4 - Acesso ao texto: Movendo o cursor
• Semana 2
• Lição 5 - Acesso ao texto: Buscando ocorrências
• Lição 6 - Transitando entre os modos
• Lição 7 - Editar o texto
• Lição 8 - Configuração do Vim e ferramentas especiais
• Material: Dicas de Vim
• Material: Meu .vimrc
• Material: Notas finais
• Avaliação de aprendizagem
14
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
As lições contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem ne-
cessárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberá
uma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição,
pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menor
do que 6.0, sugerimos que você faça novamente esta lição. Ao final do curso será disponibilizada
a avaliação referente ao curso. Tanto as notas das lições quanto a da avaliação serão considera-
das para a nota final. Todos os módulos ficarão visíveis para que possam ser consultados durante
a avaliação final.
Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de
Ensino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma.
2.7 Programa
Noções preliminares:
Portabilidade, história do editor e licença GPL;
Sobre o Vim:
• Como usar?
• Interface.
Modos de operação do Vim:
• Modo de comando;
• Modo de linha de comando;
• Modo de inserção;
• Modo de substituição;
• Modo visual;
• Modo de seleção;
• Modo ex.
Primeira parte:
Interagindo com o editor (Abrir arquivos, gravar em disco e sair do Vim);
Sintaxe dos comandos;
Acessar um texto (e suas partes):
• Mover cursor;
• Mover texto;
• Buscar ocorrências.
Segunda parte:
Editando um comando (Selecionar, desfazer, refazer e repetir);
Transitando entre os modos;
Editar um texto:
15
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• Apagar;
• Copiar;
• Colar;
• Desfazer e refazer.
Apêndices:
Fundamentos de configuração do Vim:
• O arquivo de configuração ?.exrc?;
• Configurar inicializando;
• Os comandos ?set? em modo linha de comando;
Recursos e operações especiais:
• . Criar marcas;
• . Criar macros;
• . Criar abreviações;
• . Utilizar buffers;
• . Indentar o texto;
• . Verificar ortografia;
• . Verificar completude de parênteses, de chaves e de colchetes;
• . Completar palavras automaticamente;
• . Selecionar região do texto.
• . Registrar comandos em um histórico;
• . Gravar comandos interativamente;
• . Editar mais de um texto;
• . Visualizar mais de um texto;
• . Abrir um shell sem tirar o Vim da memória;
• . Comandos de shell de dentro do editor;
• . Comandos de shell para dentro do editor.
Notas finais:
Outros editores de texto plano;
Fontes de consulta;
Links.
16
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
2.8 Avaliação
Toda a avaliação será feita on-line.
Instrumentos de avaliação:
• Avaliações dentro das lições;
• Avaliação ao final do curso.
• Para a aprovação e obtenção do certificado o participante deverá obter nota final maior ou
igual a 6.0 de acordo com a fórmula abaixo:
• Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições
• AF = Avaliação Final
2.9 Bibliografia
• Site oficial: http://www.vim.org
• Site oficial (BR): http://vimdoc.sourceforge.net
17
Capítulo 3
Guia do Curso (Início da semana 1)
Bem vindo ao curso do editor Vim! Bom, logo no início desta primeira semana sugiro que
dêem uma olhada no livro "Noções preliminares "para ganharmos alguma familiaridade com o
trabalho que vamos ter nas próximas quatro semanas. O livro "Sobre o Vim "contém informações
gerais sobre esse editor, sua história, portabilidade, licença... E só deve ser lido por quem real-
mente tiver interesse, uma vez que não é obrigatório já que não é exigido como conhecimento
nas lições. O livro Guia de comandos é um suporte para os seus estudos e não necessariamente
precisa ser consultado. Ele é somente um apanhado de todas as ações sugeridas ao longo das
lições e deve ser útil para aqueles que precisam lembrar de um comando específico ou que pre-
cisam estudar as ferramentas do Vim de forma mais objetiva. O curso realmente acontece dentro
das lições, portanto concentrem-se nelas. Lembrem-se de dar uma olhada geral nas lições antes
de adiar suas leituras, já que algumas delas são um pouco extensas. As lições serão liberadas
ao longo das duas semanas. Cada uma destas é bastante descritiva sobre seu conteúdo, logo
pode ser interessante para alguns saltar alguns trechos de texto para não se cansarem, caso
já sejam familiarizados com o assunto. Neste caso procurem ao menos acompanhar as ações
propostas ao longo do texto e transcritas para o Guia de comandos, ou simplesmente respondam
as pergunta das lições, o que é necessário para serem avaliados e receberem o diploma. Ao
final de cada uma serão feitas algumas perguntas que deverão ser respondidas para que seja
avaliado o seu aprendizado, e ao final do curso, será liberado um questionário final. A nota final
será a média dos resultados que obtiverem em cada lição, que valem 70% da nota, mais a nota
tirada no questionário final, que vale 30%. Caso tenham dúvidas ao longo do curso ou se quise-
rem compartilhar qualquer comentário ou experiência participem do fórum do curso. Estejam à
vontade.
18
Capítulo 4
Guia de comandos
Interagindo com o editor
Entrando no Vim
• Ação: digitem ’vim’ na linha de comando para entrar no Vim!
• Ação: digitem ’i’ para entrar em modo de inserção de caracteres!
• Ação: digitem ’vim nomedoarquivo’ para inciar o Vim já automaticamente chamando um
arquivo para edição!
Gravando e lendo
• Ação: digitem ’:w nomedoarquivo’ para salvar o texto em um arquivo no disco!
• Ação: digitem ’:w’ para salvar o arquivo cujo conteúdo está atualmente em edição!
• Ação: digitem ’:w outroarquivo’ para gravar o texto atual em um outro arquivo que não aquele
já chamado!
• Ação: digitem ’:e’ de dentro do Vim para abrir o arquivo desejado sem ter que voltar à shell!
Saindo do editor
• Ação: digitem ’:q’ para sair caso não tenham efetuado nenhuma edição!
• Ação: digitem ’:q!’ para sair mesmo havendo efetuado modificações!
• Ação: digitem ’:wq’ para salvar e sair imediatamente!
• Ação: digitem ’:wq outroarquivo’ para salvar outro arquivo e imediatamente sair do Vim!
Acessando o texto
Movendo o texto
• Ação: Abra o Vim com o comando ’view’ para já configurar automaticamente a sessão atual
como ’somente leitura’!
• Ação: Segure ’<Ctrl>+e’ para mover a tela uma linha para baixo pelo texto!
• Ação: Segure ’<Ctrl>+y’ para mover a tela uma linha para cima pelo texto!
• Ação: Segure ’<Ctrl>+f’ para mover a tela uma página abaixo pelo texto!
19
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• Ação: Segure ’<Ctrl>+b’ para mover a tela uma página acima pelo texto!
• Ação: Especifique um número e segure qualquer um dos comandos básicos de movimen-
tarção de texto para mover um número personalizado de objetos de texto por sob a tela!
• Ação: Digite ’z.’ ou ’zz’ para situar no centro da tela a linha atualmente sob o cursor!
• Ação: Digite ’z+’ para situar no topo da tela a linha atualmente sob o cursor!
• Ação: Digite ’z-’ para situar na base da tela a linha atualmente sob o cursor!
• Ação: Determine o número da linha que deseja enquadrar e o digite seguido de uma das
posições da tela!
Movendo o cursor
Objetos: Caractere e linha com direcionais simples:
• Ação: digite ’ h ’ , ’ j ’ , ’ k ’ ou ’ l ’ para mover o cursor para a esquerda, para baixo, para
cima ou para a direita, respectivamente!
• Ação: digite <Space> ou < BackSpace> para mover o cursor por um caractere para frente
ou para trás, respectivamente!
• Ação: digite um valor numérico seguido de ’ h ’ , ’ j ’ , ’ k ’, ’ l ’, <Space> ou <BackSpace>
para movimentar o cursor por um número determinado de objetos!
Objeto: Texto:
• Ação: digite ’ gg ’ ou ’ [[ ’ para mover o cursor de onde ele estiver até o início da primeira
linha do texto!
• Ação: digite ’ G ’ ou ’ ]] ’ para mover o cursor de onde ele estiver até o início da última linha
do texto!
• Ação: digite n % para mover o cursor à linha correspondente à posição do texto apontada
em percentagem!
• Ação: digite n go para mover o cursor ao enésimo byte (em geral, enésimo caractere) do
texto!
Objeto: Tela:
• Ação: digite ’ H ’ para mover o cursor para a primeira linha visível na tela!
• Ação: digite ’ L ’ para mover o cursor para a última linha visível na tela!
• Ação: digite ’ M ’ para mover o cursor para a linha que está no centro da tela!
Objeto: Página:
• Ação: aperte ’<Ctrl>+f’ para avançar o cursor uma página abaixo!
• Ação: aperte ’<Ctrl>+b’ para recuar o cursor uma página acima!
• Ação: informe o número de páginas seguido do comando de avançar ou recuar o cursor
pelas páginas para andar um número escolhido de páginas!
20
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Objeto: Linha:
• Ação: aperte ’<Ctrl>+u’ para subir o cursor meia página no texto!
• Ação: aperte ’<Ctrl>+d’ para descer o cursor meia página no texto!
• Ação: digite o número de linhas com o qual deseja mover o cursor seguido do comando de
subir ou descer o cursor por
• linhas para movê-lo por um número específico de linhas!
• Ação: digite n gg ou n G para acessar uma linha específica do texto!
• Ação: digite : n <Enter> para acessar uma linha específica do texto!
Objetos: Parênteses e chaves:
• Ação: digite ] ) ou ] } para procurar por um parênteses ou por uma chave que fecham sem
par que estejam à frente do cursor no texto!
• Ação: digite [ ( ou [ { para procurar por um parênteses ou por uma chave que abrem sem
par que estejam à cima do cursor no texto!
Objeto combinado: Caractere com linha:
• Ação: digite ’ ˆ’ para mover o cursor para o primeiro caractere da linha corrente ou ’ _ ’ para
a mesma ação desconsiderando os espaços em branco!
• Ação: digite ’ $ ’ para mover o cursor para o final da linha corrente ou informe um valor a
contar 1 da linha atual para inserir o cursor no final de outra linha!
• Ação: digite ’<Ctrl>+m’ para mover o cursor para o primeiro caractere da linha seguinte ou ’
+ ’ para a mesma ação desconsiderando os espaços em branco!
• Ação: digite ’ - ’ para mover o cursor para o primeiro caractere da linha anterior sem consi-
derar os espaços em branco!
Objeto combinado: Coluna com linha
• Ação: digite ’ n | ’ para mover o cursor para uma coluna específica da linha atual e ’ | ’ ou ’
0 ’ simples para mover o cursor para a primeira coluna da lnha corrente!
Objeto combinado: Caractere com sentença e parágrafo
• Ação: digite ’ ( ’ para inserir o cursor no inicío da sentença corrente!
• Ação: digite ’ ) ’ para inserir o cursor no final da sentença corrente!
• Ação: digite ’ { ’ para inserir o cursor no parágrafo anterior!
• Ação: digite ’ } ’ para inserir o cursor no parágrafo seguinte!
• Ação: informe o número de objetos sentença ou parágrafo seguido do comando simples
para mover o cursor por mais de um desses objetos!
Objetos: Palavra e caractere com palavra
21
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• Ação: digite ’ E ’ ou ’ e ’ (considera pontuação) para avançar o cursor para o final da palavra
seguinte!
• Ação: digite ’ B ’ ou ’ b ’ (considera pontuação) para recuar o cursor para o inicío da palavra
anterior!
• Ação: digite ’ W ’ ou ’ w ’ (considera pontuação) para avançar o cursor para o primeiro
caractere da palavra seguinte!
• Ação: informe o número de palavras que deseja avançar ou recuar seguido dos comandos
’ E ’ ou ’ B ’!
Buscando
Busca nas linhas:
• Ação: digite "f ’caractere’ "para mover o cursor até a primeira ocorrência do caractere espe-
cificado encontrada após a posição atual do cursor!
• Ação: digite "F ’caractere’ "para mover o cursor até a primeira ocorrência do caractere
especificado encontrada antes da posição atual do cursor!
• Ação: digite "t ’caractere’ "para mover o cursor até a posição imediatamente anterior à
primeira ocorrência do caractere especificado encontrada após a posição atual do cursor!
• Ação: digite "T ’caractere’ "para mover o cursor até a posição imediatamente posterior à
primeira ocorrência do caractere especificado encontrada após a posição atual do cursor!
• Ação: informe um valor numérico antes de um dos comandos de busca de caracteres na
linha corrente para encontrar a sua enésima aparição!
• Ação: digite ’ ; ’ para reaplicar a última busca realizada e sua movimentação de cursor ao
próximo caractere que estiver à frente do cursor e ’ , ’ para fazer a mesma busca na linha
atual para trás do cursor!
Busca no texto:
• Ação: digite ’/<texto>’ para encontrar a primeira ocorrência da string "texto"na linha após o
cursor!
• Ação: digitem /(c).(c) para buscar por uma ocorrência qualquer de um único caractere em
uma determinada posição da string dada!
• Ação: digite / s1 | s2 | s3 | s4 para buscar as ocorrências de todas as strings informadas!
• Ação: digitem /ˆs para procurar as ocorrências da string ’ s ’ que estejam exatamente em
inícios de linha!
• Ação: digitem /s$ para procurar as ocorrências da string ’ s ’ que estejam exatamente em
finais de linha!
• Ação: digite /< s para encontrar a string em suas ocorrências que iniciem uma palavra!
• Ação: digite / s> para encontrar a string em suas ocorrências que finalizem uma palavra!
• Ação: digite /< s> para encontrar a string em suas ocorrências que sejam uma palavra!
22
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• Ação: digite / [ c c ] para buscar as ocorrências de todos os caracteres listados entre os
colchetes!
• Ação: digite / [ ˆc c ] para buscar as ocorrências de todos os caracteres que não estão
listados entre os colchetes!
• Ação: digite / [ c - c ] para buscar as ocorrências de todos os caracteres entre os colchetes
que estão listados implicitamente na ordem de caracteres do escopo indicado pelo símbolo
- !
• Ação: digite / [ c ]+ para buscar por uma ou mais aparições das possibilidades entre col-
chetes!
• Ação: digite / [ c ] * para buscar por nenhuma ou mais aparições das possibilidades entre
colchetes!
Transitando entre os modos
Modo de inserção:
• Ação: digite ’ a ’ para iniciar o modo de inserção com o cursor um caractere a frente da
posição atual!
• Ação: digite ’ I ’ (’ i ’ maiúsculo) para inciar o modo de inserção com o cursor no início da
linha atual!
• Ação: digite ’ A ’ para iniciar o modo de inserção com o cursor no final da linha atual!
• Ação: digite ’ o ’ para inciar o modo de inserção com o cursor em uma nova linha imediata-
mente abaixo da atual!
• Ação: digite ’ O ’ para inciar o modo de inserção com o cursor em uma nova linha imediata-
mente a cima da linha atual!
• Ação: digite ’ s ’ para recortar o caractere sob o cursor e iniciar o modo de inserção!
• Ação: digite ’ S ’ para recortar toda a linha corrente e inciar o modo de inserção no início da
linha em branco!
• Ação: digite ’ c ’ com um parâmetro de objeto para recortá-lo e iniciar o modo de inserção!
• Ação: digite ’ C ’ para recortar todo texto que houver na linha corrente após a posição atual
do cursor!
• Ação: indique um valor numérico e digite quaisquer dos quatro comandos anteriores para
realizar um comando personalizado!
• Ação: digite <Ctrl>+R a partir do modo Normal para iniciar o modo de substituição!
Modo de substituição:
• Ação: digite <Ctrl>+R para iniciar o modo de substituição!
Modo Normal de inserção/substituição:
• Ação: digite <Ctrl>+o em modo de inserção ou em modo de substituição para, em modo
Normal de inclusão, passar um comando de modo Normal e voltar a digitar!
23
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Modo visual:
• Ação: digite ’ v ’ em modo Normal para entrar em modo visual e grifar exatamente o trecho
de texto que deseja editar!
• Ação: digite ’ V ’ a partir do modo Normal para entrar em modo visual do tipo linha e hachurar
o trecho de texto a se editar por linhas!
• Ação: digite ’ <Ctrl>+v ’ a partir do modo Normal para entrar em modo visual do tipo bloco
e hachurar o trecho de texto a se editar por blocos e colunas!
Modo visual de inserção/substituição:
• Ação: digite ’ v ’ ou ’ V ’ ou ’ <Ctrl>+v ’ a partir do modo Normal de inclusão para acessar o
modo visual de inclusão e seus tipos!
Modo de seleção:
• Ação: digite ’ gh ’ a partir do modo Normal para inserir ou deletar texto sobre um trecho
selecionado!
• Ação: digite ’ g_<Ctrl>+h ’ a partir do modo Normal para inserir ou deletar texto sobre um
trecho selecionado linha a linha!
• Ação: digite ’ gH ’ a partir do modo Normal para inserir ou deletar texto sobre um trecho
selecionado por bloco!
Modo de seleção de inserção/substituição:
• Ação: digite ’ gh ’ ou ’ gH ’ ou ’ g_<Ctrl>+h ’ de dentro de um dos modos Normal de inclusão
para entrar em modo de seleção de inserção ou de substituição!
Modo "ex":
• Ação: digite ’ Q ’ ou ’ gQ ’ para entrar no modo "ex"e passar diversos comandos de linha
sem voltar para o modo Normal!
Editando o texto
Apagando o texto
• Ação: digite (n) x para apagar (n) caractere(s)!
• Ação: digite um comando de cursor para designar objeto, acompanhado de um valor numé-
rico, se quiser, seguido de d para apagar o objeto designado!
• Ação: digite dd ou D para apagar a linha sob a qual o cursor está atualmente!
Copiando o texto
• Ação: digite y acompanhado de um movimento de cursor para copiar o objeto designado
com o comado de cursor para o buffer padrão!
• Ação: digite "cy mais o objeto de texto para o copiar para um buffer com o nome do c dado!
• Ação: digite :reg ou :di para ver os buffers atualmente nomeados!
24
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Colando o texto
• Ação: digite (n) p para colar o conteúdo do buffer n vezes após o cursor!
• Ação: digite (n) P para colar o conteúdo do buffer n vezes antes do cursor!
• Ação: digite (n) g p ou P para colar o conteúdo do buffer n vezes e posicionar o cursor após
o texto colado!
• Ação: digite "c p para colar o texto armazenado no buffer de nome c!
Desfazendo e refazendo comandos
• Ação: digite (n) u para desfazer a(s) (n) última(s) ação(ões)!
• Ação: digite (n) <Ctrl>+R para refazer a(s) (n) última(s) ação(ões) desfeita(s)!
• Ação: digite U para desfazer todas as ações feitas na linha corrente!
Substituindo ocorrências
• Ação: digite : #,# s /expr1/expr2/ [opções] , sendo # um número de linha e #,# uma região
do texto, para realizar substituições sobre as ocorrências encontradas!
Ferramentans especiais Ferramentas de consulta
• Ação: digite :h assunto para consultar o Vim sobre o assunto dado!
• Ação: digite :version para ver a versão corrente do editor Vim!
• Ação: digite ga sobre um caractere para saber seus códigos hexa e octadecimal e seu valor
ASCII!
• Ação: digite m c nomear a posição sob o cursor de c e ’ c para acessá-la!
• Ação: digite ’ c e realize um comando para executá-lo sobre todo texto que estiver entre a
posição atual do cursor e a posição marcada c!
• Ação: digite : marks para ver a lista de marcas do texto atual!
• Ação: digite :set number para numerar todas as linhas do texto e : set nonumber para
desfazê-lo!
• Ação: digite :set ruler para que o Vim nos indique a posição do cursor no texto!
• Ação: digite :set smd para fazer o Vim sempre nos apresentar o atual modo de operação!
• Ação: digite :set is para habilitar a busca imediata da string de busca na medida em que vai
sendo digitada!
• Ação: digite :set hls para hachurar as ocorrências encontradas de cada busca!
• Ação: digite :split (arquivo) para abrir dividir a tela em janelas contendo diferentes textos
visualizáveis simultaneamente!
• Ação: digite vim arquivo1 arquivo2 no shell para abrir mais de um arquivo no Vim e :next e
:prev para transitar entre os arquivos!
25
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• Ação: digite K sobre uma palavra que corresponda a um comando para consultar o manual
do comando de dentro da sessão do Vim!
Ferramentas de edição
• Ação: digite r sobre o caractere a ser substituído seguido do novo caractere com o qual
queremos substituí-lo!
• Ação: digite ’ g ’ seguido de um comando de movimentação de cursor para trocar as letras
minúsculas por maiúsculas e vice e versa!
• Ação: digite J para juntar as linhas corrente e seguinte!
• Ação: digite « e » para tabular o texto em modo Normal!
• Ação: digite <Ctrl>+l para redesenhar a tela atual limpando as mensagens obsoletas!
• Ação: digite . para repetir o último comando ou ação realizados!
• Ação: digite :r arquivo para inserir o conteúdo de um arquivo dentro do texto em sessão
atualmente!
• Ação: digite #,# w arquivo para salvar o conteúdo entre as linhas # e # no arquivo dado!
• Ação: digite :set ro para tornar a sessão do Vim somente leitura e proibir a escrita do
arquivo!
• Ação: digite :set ic para tornar o Vim insensível à diferença entre letras maiúsculas e letras
minúsculas!
• Ação: digite :! comando para executar um comando de shell de dentro do Vim!
• Ação: digite :shell para inicar uma nova sessão shell a partir do Vim!
• Ação: digite :!! comando para inserir a saída do comando de shell dentro do arquivo texto
atual!
• Ação: digite :X e informe uma chave para criptografar o texto corrente!
• Ação: digite <Ctrl>+n para completar a palavra a ser digitada com alguma terminação antes
digitada no texto!
• Ação: digite n gq para quebrar ordenadamente as n linhas seguintes!
• Ação: digite qc para inicar e q para finalizar a gravação de uma determinada seqüência de
comandos, depois digite @c para executá-la nova e automaticamente!
• Ação: digite :abbr abreviação abreviado para poder escrever palavras abreviadas que são
convertidas automaticamente!
26
Capítulo 5
Sobre o Vim
Portabilidade
• O Vim é portável para diversas plataformas, entre elas estão:
• MS-DOS;
• SGI;
• Archimedes;
• AmigaOS;
• Atari;
• MiNT;
• BeOS;
• MacOS;
• MachTen;
• OS/2;
• RiscOS;
• VMS;
• Windows;
• A/UX;
• AIX;
• BSDI;
• Convex;
• DYNIX/ptx;
• DG/UX;
27
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• DEC Unix;
• FreeBSD;
• HPUX;
• Irix;
• MacOSX;
• NetBSD;
• NEXTS TEP;
• OpenBSD;
• OSF;
• QNXS;
• SCO;
• Sinix;
• Solaris;
• SunOS;
• SUPER-UX;
• Ultrix;
• Unixware;
• Unisys.
Suporte a linguagens Além de texto plano ASCII, o Vim tem suporte para textos em UTF-
8 ou em Unicode. Ou seja, suporte para alfabetos cujos caracteres são representados por mais
de um byte, como os ideogramas do Chinês, do Japonês e do Coreano. O Vim suporta edição da
direita-para-esquerda para línguas como Farsi e Hebreu.
O Vim possui mais de duzentos arquivos de reconhecimento de sintaxe para a coloração de
texto cuja extensão identifique uma linguagem ou formato de texto. Entre os formatos reconheci-
dos estão:
Linguagens: Ada, C, C++, Eiffel, Fortran, Haskell, Java, Lisp, Modula, Pascal, Prolog, Python,
Scheme, Smalltalk, SQL, Verilog, VisualBasic;
Programas matemáticos: Maple, Matlab, Mathematica, SAS;
Texto de marcação: DocBook, HTML, LaTeX, PostScript, SGML-LinuxDoc, TeX, WML, XML;
Saída de programa: diff, man;
Arquivos de configuração: 4DOS, Apache, autoconfig, BibTeX, CSS, CVS, elm, IDL, LILO,
pine, procmail, samba, slrn;
Shell scripts e configuração: Shells: sh, bash, csh, ksh, zsh; Linguagens de script: awk, Perl,
sed, yacc.
Arquivos de sistema: printcap, .Xdefaults;
28
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Códigos Especiais: O Vim tem integração opcional com Perl, Tcl e Python; O Vim pode atuar
como um servidor de automatização OLE sob o Windows; O Vim pode também ser instalado com
código para X-Windows, adicionando menus configuráveis e suporte para o mouse.
Licensa Ao contrário do Vi, o Vim é um editor gratuito e compatível com a lincensa GPL,
General Public License da GNU. A GPL é a licensa de sofware livre mais difundida e usada
no mundo, o que torna o Vim uma opção acessível a sistemas operacionais como o BeOS e
os BSD e a distribuições linux como o Debian, que somente inclui em seu banco de pacotes
oficiais códigos compatíveis com a GPL. Muitas vezes quando digitamos Vi no console estamos
na verdade chamando o Vim ou um outro clone através de um alias. O criador Bram Moolenaar
faz algumas pequenas resalvas a utilização do seu editor em sua licença. Para lê-la digite ":help
license"em modo linha de comando. Um texto resumido em inglês escrito por ele próprio descreve
essas resalvas: ————————————————————————- Vim is Charityware. You
can use and copy it as much as you like, but you are encouraged to make a donation to orphans
in Uganda. See |iccf| below. If you include Vim on a CD-ROM, I would like to receive a copy.
Just so I know which Vim distributions exists in the world (and to show off to my friends sorriso).
DETAILS There are no restrictions on distributing an unmodified copy of Vim. Parts of Vim may
also be distributed, but this text must always be included. You are allowed to include executables
that you made from the unmodified Vim sources, your own usage examples and Vim scripts.
If you distribute a modified version of Vim, you are encouraged to send the maintainer a copy,
including the source code. Or make it available to the maintainer through ftp; let him know where
it can be found. If the number of changes is small (e.g., a modified Makefile) e-mailing the diffs
will do. When the maintainer asks for it (in any way) you must make your changes, including
source code, available to him. The maintainer reserves the right to include any changes in the
official version of Vim. This is negotiable. You are not allowed to distribute a modified version of
Vim when you are not willing to make the source code available to the maintainer. The current
maintainer is Bram Moolenaar . If this changes, it will be announced in appropriate places (most
likely www.vim.org and comp.editors). When it is completely impossible to contact the maintainer,
the obligation to send him modified source code is dropped. It is not allowed to remove these
restrictions from the distribution of the Vim sources or parts of it. These restrictions may also be
used for previous Vim releases instead of the text that was included with it. —————————
———————————————- O Vim, mais que gratuito, é um Charityware. A idéia de um
Charityware é que os usuários que se sintam interessados e habilitados a coloborar de alguma
forma (em geral financeiramente) com o software invistam não nele, mas no programa de caridade
a ele associado, que é determinado pelo criador. Obviamente, os Charitywares são mantidos por
indivíduos que preferem que se invista em caridade do que neles mesmos e logo, são voluntários.
O editor Vim é um desses. Ele está associado a um programa holandês de suporte às crianças
da Uganda. Para conhecer mais: http://iccf-holland.org. O texto abaixo, escrito pelo criador Bram
Moolenaar, descreve um pouco o que ele pensa de Charityware e do programa associado ao Vim:
Since Vim is open-source and freely distributable, users don’t have to pay to use it. Even so quite
a few people who use Vim regularly expressed to me that they wanted to reward me for my work
in some way. I didn’t really need extra money myself and didn’t like the idea of some people giving
me money for a program that is free. That’s when I thought of the Charityware concept. The basic
idea is that everybody who uses Vim is asked to donate to a charity. Thus the use of Vim is free,
but if you think it’s worth something, give that money to a good cause. How did I chose the charity?
Well, I have worked for a year as a volunteer with a project in the south of Uganda. This is an area
that has been struck hard by AIDS. Estimates are that 10 to 30% of the adults are infected by HIV.
Many parents die, leaving their children behind. The project helps these needy children in several
ways. We find a new home for the child. We make sure the child can go to school, gets medical
29
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
attention and care made to measure. After I returned from Uganda, my heart was still there. I
decided the least I could do was to keep supporting the project by raising money for them. The
connection to Vim was a very logical one. Thus now I’m asking Vim users to consider donating for
the orphans in Uganda. I have also setup an adoption program. You can financially adopt a child,
which means that the child gets long-lasting help, which is best for the child. Since we work only
with volunteers and the money is directly sent to the project, almost all the money is really used in
Uganda.
História O editor Vim foi desenvolvido por Bram Moolenaar, um usuário do tradicional
editor Vi. Suas origens remontam ao antigo e original editor do Unix, o Ed. Este, como os
outros primeiros editores, rodava em terminais frequentemente sem monitores de vídeo como
teletipos ou terminais lentos do tipo hardcopy. Portanto, para visualizar o texto normalmente era
necessário imprimir suas linhas. O Vi começou a ser desenvolvido nesse contexto, por volta de
1976, a partir do ex, que era um editor orientado à linha baseado no ed. O conceptor do Vi,
Bill Joy, um granduando da Universidade da California em Berkeley que depois veio a participar
da fundação da Sun Microsystems, desenvolveu o Vi com o intuito de ser uma interface visual
para o ex. Ao contrário deste, o Vi seria capaz de dispor de todo texto apresentado no monitor
para edição, e não uma linha somente, e por isso seu nome: (V)isual (I)nterface. Um dia Bram
Moolenaar adquiriu um Amigo, era o computador que veio ao mercado em 1985 e que era bem
visto por seu poder de som e de vídeo e por seu sistema operacional multi-tarefa AmigaOS. Como
este não era compatível com o editor Vi nem Moolenaar se satisfez com os clones que encontrou,
ele pegou o que julgou ser o melhor, o Stevie, e começou a melhorá-lo com o intuito de torná-lo
capaz de todos recursos de que o Vi dispunha. Em 2 de novembro de 1991, assim que seu editor
passou a funcionar razoavelmente bem, na versão 1.14, ele o chamou de Vim, significando Vi
IMitation, e o lançou em um domínio público do Amigo. Assim outros programadores passaram
a o enviar patches e ajudaram a portá-lo para outras plataformas, como para o MS-DOS e para
o Unix. Com o tempo o Vi IMitation, que era derivado do núcleo de um clone do Vi, havia sido
tantas vezes reformulado e extendido com novas implementações que Bram Moolenaar sentiu-se
no direito de chamá-lo de Vim, agora denotando Vi IMproved.
Pequena linha do tempo do editor Vim até a versão 6.0 (O editor está hoje em sua versão
6.4.006)
1988 - Vim 1.00: Ainda Vi IMitation, nunca lançado publicamente; 1991 02 Nov - Vim 1.14:
Primeira publicação (no Fred Fish disk #591); 1992 - Vim 1.22: Portado para o Unix. Agora Vi
IMproved e compete com o Vi; 1994 12 Ago - Vim 3.00: Suporte para várias janelas e buffers;
1996 29 Mai - Vim 4.00: Graphical User Interface (por Robert Webb), mais tarde, Gvim; 1998 19
Fev - Vim 5.00: Coloração de sintaxe; 2001 26 Set - Vim 6.00: Folding, plugins, divisão vertical
de telas, suporte a línguas;
30
Capítulo 6
Trabalhando com o Vim
Apesar de suas poderosas ferramentas de edição, o Vim foi designado para trabalhar com
textos planos, ao contrário, por exemplo, de um processador de texto como o Open Office Writer.
Suas funções mais importantes são, portanto, operações de edição básica de texto, como aces-
sar, mover, visualizar, organizar, copiar, colar, apagar e inserir caracteres. Justamente por serem
operações tão fundamentais é que suas ferramentas são tão versáteis. Como o editor foi conce-
bido segundo os princípios econômicos e versáteis do Vi, o Vim não trabalha, em princípio, como
um editor simplista. Os editores do tipo Vi são editores modais, ou seja, trabalham com modos.
De certa forma, a maioria dos editores são modais em algum sentido, especialmente os gráficos
(que não necessariamente precisa funcionar dentro de um gerenciandor de janelas), visto que
além do cursor de inserção, também dispõe de menus estáticos e dinâmicos, como as barras de
ferramentas e os menus de mouse. Podemos considerar comandos com as teclas de controle ou
meta também usos de um modo de controle do editor, como ferramentas de manipulação de texto
que não seja a inserção direta de caracteres no texto. O Vim, no entanto, é modal por excelência.
Ele possui diversos ambientes a partir dos quais podemos editar. São oficialmente seis diferentes
formas de acessar o texto, chamadas modos de operação, que oferecem diferentes ferramentas
cada qual segundo seu contexto de edição, sendo tudo ergonomicamente acessível a partir do
teclado. Nisto consiste o poder e a expansibilidade dos editores da família Vi. Como pôde ser
notado no programa do curso, separado em duas partes, o trabaho no Vim (como provavelmente
em quase todos os editores) pode ser dividido em dois grandes tipos de tarefas. O primeiro tipo
de tarefa é o trabalho de acessar as diferentes partes do texto, tanto com a visualização que se
obtem com a movimentação da tela sobre o texto quanto com a movimentação do cursor e com
as buscas de ocorrências e marcações de texto, este tipo de tarefa não envolve ferramentas quem
afetem o texto acessado, por serem apenas comandos de consulta. O segundo tipo é o trabalho
de edição propriamente dito, ou seja, aquele que visa modificar um arquivo segundo nossas in-
teresses. Este trabalho inclui saber tanto os comandos básicos de edição quanto as ferramentas
especiais que facilitam a edição, o que tipicamente é alcançado com uma boa configuração. Esse
é o modelo de possibilidades de uso de um editor de texto, mas para que saibamos fazê-lo no
Vim, deveremos conhecer alguns de seus segredos, como os papéis dos modos de operação e
sua sintaxe de comandos padrão, entre outros.
Em seguida descrevo todo o programa do curso, que por motivos técnicos foi dividido em
duas partes, mas enfatizo que essa divisão do programa não tem base nas semanas do curso
nem baseia um cronograma. Para saber a divisão semanal do curso procure a seção "Plano de
curso".
A primeira parte
Após serem apresentadas estas preliminares, estudaremos o Vim como um programa (antes
31
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
de um editor) como interagir timidamente com o editor em suas funções fundamentais de ope-
ração, como abrir um arquivo, salvá-lo e sair do Vim. Imediatamente depois, para que se possa
inciar o aprendizado das ferramentas e dos comandos do Vim, serão apresentados os princípios
da sintaxe Vi de comandos padrão. Enfim, para terminar a primeira parte, aprenderemos a con-
sultar, ler e pesquisar, ou, se quiser, a navegar por um texto utilizando ferramentas específicas de
movimentação de texto, de cursor e de busca de ocorrências.
A segunda parte
Visto o editor como um todo, sua sintaxe e suas ferramentas de visualização e de acesso ao
texto como um todo, vamos estudar com detalhes como transitar entre os modos de operação e
seus derivados, como prerequisito para o passo seguinte. Sabendo disto tudo, estamos prontos
para aprender a fazer aquilo que é mais central em qualquer editor de texto: a editar um texto.
Aprenderemos a realizar no Vim (ou seja, de todas as maneirs imagináveis) os comandos básicos
de edição como copiar, colar e deletar, para tanto, farei uma breve vistoria sobre como manipular
comandos. Por fim, na medida do possível, iniciar-los-ei nos bastidores do Vim, e veremos o que
faz do Vim mais do que um editor de texto plano muito versátil, mas praticamente um processador
de texto sem codificação. Ou seja, apresentarei os princípios da configuração do Vim e alguns
recursos especiais.
Convencionando Como estudaremos tantas ferramentas juntos e certamente nos depa-
raremos com dificuldades pessoais diferenciadas assim como tanto com previstas quanto com
inusitadas complicações com respeito a construção de comandos, penso ser sensato determinar
certas ditas convenções, que de convencionado mesmo não têm nada, já que infelizmente fui
somente eu que as decidi. Enquanto nas ações propostas durante as lições, listadas no livro de
consulta Guia de comandos, apresentarei os comandos literalmente, sempre que eu escrever um
comando dentro de um texto o colocarei entre aspas, sugerindo que aquele trecho do texto deve
ser entendido em uma meta-linguagem, em outro contexto, ou seja, que para a oração atual ele
será sempre só um substantivo. Pelo mesmo motivo apresentarei caracteres em aspas simples
quando em uma frase de texto e os caracteres que devam ser interpretados como letras entre as-
pas duplas. Vale notar que eventualmente alguns trechos podem estar despadronizados apesar
das revisões, neste caso, estarei sempre disponível para esclarecimentos. Os termos em inglês
que aparecerão ao longo do curso estarão todos em itálico e serão esclarecidos, caso contrário,
o que também vale para termos técnicos em português, um link nos levará facilmente à entrada
do texto no glossário Wiki. Na apresentação dos comandos, vez ou outra me referirei a teclas
presentes nos teclados em geral, e apresentarei elas no formato <Esc>, <Enter>, <Shift>, etc.
Quando o pressionar de um tecla se seguir do dígito de um caractere, representarei o comando
ligando as duas partes com o símbolo ’ _ ’ , como em "g_<Ctrl> ", o que significa simplismente
que primeiro digitamos uma vez ’ g ’ e depois apertamos uma vez <Ctrl>. Obviamente, algumas
teclas não operam por conta própria, como no exemplo. Nestes casos o formato da representação
será como em "g_<Ctrl>+h ", que significa que se deve apertar uma vez ’ g ’ e depois digitar ’ h ’
enquanto se segura a tecla <Ctrl>. Não farei isso com a tecla <Shift> em todos os casos, pois ao
me referir às letras maiúsculas em comandos simplismente as escreverei em maiúsculas. Por fim,
mais a frente no curso aprenderemos sobre a estrutura sintática dos comandos do Vim e suas
partes, e além de as nomearmos as associaremos a letras que serão usadas na apresentação de
comandos ou, no caso, de projetos ou formatos de comandos. Quando me referir com as letras a
essas entidades, no entanto, as escreverei em itálico para evitar que as confundemos com dígitos
de comandos reais. Não se preocupem, tudo isso ficará claro. Por enquanto farei apenas algu-
mas associações importantes para a leitura de algumas partes do curso: c = caractere - significa
um caractere qualquer; s = string - significa uma string qualquer, ou seja, um trecho de texto ou
um conjunto qualquer de caracteres concatenados.
32
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
A interface do Vim Mas como será a cara do Vim? Pois bem, mais uma vez, não vou
mentir. É importante que reconheçam anteriormente algumas das indiossincrasias exóticas do
Vim para que não se atrapalhem posteriormente com seu uso. O Vim, no lugar de linhas vazias,
tem tils ’ ’. O Vim, quando no modo padrão de operação, não imprime os comandos digitados,
fazendo parecer que nada está acontecendo. O cursor do Vim não se mete entre os caracteres,
ele os sobrepõe. O cursor, além disto, não tem independência da tela, e se movermos a tela sobre
o texto, o cursor nos acompanhará, saindo da posição em que o deixamos. Se "mal"configurado,
o editor pode sequer nos informar o modo de trabalho em que nos encontramos e o mouse não
funcionará. Não existem, senão na versão gráfica Gvim, nem botões nem quaisquer tipos de
menu acessáveis. É claro, dependendo da configuração de cores do terminal, seu editor texto
será uma simpática tela preta. E, por fim (?), não há nenhum "X "para se clicar quando se quer
sair. Acreditem, todas essas características são, na verdade, admiráveis. Com o uso vamos todos
aprendendo a extrair as virtudes de toda essa versatilidade pitoresca. O Vim, por trabalhar com
texto plano, tem privilégio em trabalhar facilmente com textos enquanto quadros. Os caracteres
são posicionados cuidadosamente uns sobre os outros, permitindo-nos utilizar um conjunto todo
de comandos que se aplicam ao texto como a uma tabela. Devemos pensar que no Vim, portanto,
existem linhas e colunas dentros das quais os caracteres podem se posicionar. Porém não deixem
de compreender que no Vim nem sempre o primeiro caractere da linha estará na primeira coluna
do texto, pois as linhas podem ser iniciadas por espaços e tabulações.
Dêem uma olhada na apresentação do Vim. Observe como o cursor está na primeira linha e
sobre o primeiro caractere da linha, ou seja, na primeira coluna, como indicado no canto inferior
direito. Vejam também como o Vim está nos informando sobre que modo de operação o Vim se
33
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
encontra, no caso o modo de inserção, em inglês insert mode. Em baixo disto, o Vim reserva um
espaço para interagir conosco nos informando sobre as nossas ações e sobre as dele.
34
Capítulo 7
Modos de operação
Os modos de operação são simplesmente formas de se trabalhar o texto, ou seja, maneiras
diferentes de que dispomos para acessá-lo. É nos modos de operação que consiste a estratégia
inteligente de trabalho que o Vim propõe: "Você quer editar um texto? Escolha um caminho."Nos
manuais oficiais do Vim, escritos pelo próprio Bram Moolenaar, assim como em boa parte dos
livros e tutorias, diz-se existirem seis modos básicos de operação e cinco modos derivados que
resultam de algumas possíveis combinações entre os modos básicos ou de recursos especiais
de um modo. Porquanto ". "designa o modos básicos e - "seus modos derivados, a lista oficial
dos modos de operação é:
. Modo Normal (padrão); - Modo pendente; - Modo Normal de inserção; . Modo de inserção; -
Modo de substituição; . Modo de seleção; - Modo de seleção de inserção; . Modo visual; - Modo
visual de inserção; . Modo linha de comando; . Modo ex.
No entanto, nas páginas de ajuda oficiais do Vim, acessíveis com "help"em modo linha de
comando (ou seja, digintando ":help"em modo Normal, o padrão de entrada) também escritas
pelo criador, não vemos nenhuma lista de modos de operação, mas somente links na primeira
página para três ambientes que ele chama de modos, nesta ordem:
. O modo Normal; . O modo visual; . O modo de inserção.
Isso se deve provavelmente a uma escolha de cunho didático, visto ser um manual de ajuda
e que, ao longo das páginas, podemos encontrar referências a outros modos. Caso tenham inte-
resse, pode-se encontrar os manuais em modelo formal de todas as versões da 5.0 à 6.4 assim
como os manuais de ajuda e links para outros tutoriais e FAQs em "http://vimdoc.sourceforge.net".
Também existem manuais e tutoriais que consideram haver somente dois grandes modos, o Nor-
mal, às vezes chamado de modo aberto, e o modo de inserção, sendo todos os outros derivados
destes, se forem considerados modos. Eu, entre outros, gosto de pensar que são na prática sete
modos básicos de operação, visto que o modo variante de substituição pode ser considerado um
modo a parte. Considerarei haver, portanto, sete modos básicos de operação na prática. O modo
pendente, por sua vez, não necessariamente precisa ser considerado um modo distinto, visto ser
uma propriedade do modo Normal. Logo, a lista na prática será:
. Modo Normal (padrão); - Modo Normal de inserção/substituição; . Modo de inserção; . Modo
de substituição; . Modo de seleção; - Modo de seleção de inserção/substituição; . Modo visual; -
Modo visual de inserção/substituição; . Modo linha de comando; . Modo ex.
Esta lista é de longe mais razoável para nós, usuários, visto que para entender os modos
derivados basta reconhecermos que existem três modos que trabalham em conjunto com os
dois modos de inclusão de caracteres (inserção e substituição): o modo Normal, o visual e o de
seleção. A princípio, se iniciarmos o Vim normalmente, entramos sempre no modo Normal (ou
modo de comando). Podemos, no entanto, passarmos parâmetros para ele na sua chamada na
35
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
linha de comando, ordenando-o a, entre outras coisas, iniciar um determinado modo. Veremos
isso na segunda lição. De dentro do modo Normal, temos acesso a todos os outros modos,
podendo chamá-los através do teclado com comandos reservados simples. Veremos agora uma
descrição da função de cada modo de operação, seguida do comando básico através do qual
podemos iniciá-los.
1 Modo Normal
O modo Normal, também chamado de modo de comando, é o modo padrão do Vim, não
somente com o qual o editor abre em uma inicialização usual, mas é o modo mais fundamental,
a partir do qual se tem acesso à todos os outros. Ele é capaz de realizar todas as operações
básicas da edição de texto e de controle de comando e de janelas, além de chamar os outros
modos e de oferecer recursos especiais que aprenderemos mais tarde, como criar marcas e
outras ações simples. Este modo é acessado a qualquer momento de qualquer modo com o
simples apertar de tecla de controle "esc". Caso seu teclado não possua a tecla "esc", pode ser
tentado ˆ[ ou ˆ3 , ou ainda alguma tecla <meta> que o teclado venha a possuir. De dentro do modo
Normal são realizados comandos sem a espera da tecla de retorno, o "Enter". Os comandos
digitados são ou processados imediatamente após sua digitação, que é realizada com um ou com
poucos caracteres simples ou com combinações da tecla "Ctrl", ou esperam alguma espécie de
parâmetro. O parâmetro algumas vezes é necessário após habilitarmos, com uma combinação
de "Ctrl", certo tipo de controle e enfim passamos o comando de fato, e em outros casos o
editor espera mudarmos de modo de operação para que o comando digitado seja aplicado. Ou
seja, quando digitamos alguma coisa no modo Normal, ou o comando não é reconhecido (o
que é informado, caso configurado adequadamente), ou ele entra em um outro modo, ou ele
processa uma operação de edição, ou ele espera entrarmos em um dos dois modo de inclusão
de caracteres para realizar uma ação especial (veremos em breve) ou ele espera um parâmetro
simples para indicar o uso e completar o comando. Esta última situação é o que oficialmente
é o variante modo pendente. O (outro) modo derivado do modo Normal é o modo Normal de
inserção, que é acessado com o comando "Ctrl-o"em modo de inserção. Ele funciona como o
modo Normal, mas só nos permite fazer uma operação e ele volta automaticamente para o modo
de inserção.
2 Modo linha de comando
O modo linha de comando se destina ao que podemos chamar de meta-comandos, que dizem
respeito ao controle do próprio programa e dos arquivos. Ele é o ambiente de onde configuramos
a sessão de edição, de onde acessamos salvamos e fechamos arquivos de texto e de onde
saimos do Vim. É esperado de nós a tecla de retorno, ou "Enter", para o processamento do
comando, e por isso sua analogia à linha de comando. Todas essas operações são anunciadas
ao Vim por meio do caractere ": ", que o informa a presença do que chamei de meta-comando.
Este modo também realiza outro tipo de operação, que diz respeito ao acesso às partes do texto.
Com o caractere "/ ", amplamente convencionado em ambientes linux, podemos fazer buscas por
ocorrências altamente especificáveis de expressões e manipulá-las, deletando-as, substituindo-
as, etc. Existe uma sintaxe particular para a busca por ocorrências de texto, o que será explicado
ainda na primeira semana. Com o caractere "? "fazemos buscas para cima do cursor, e com "!
"filtramos comandos para, por exemplo, realizarmos um comando de Shell de dentro do Vim. Todo
este modo é altamente editável, ou seja, existem várias ferramentas exclusivas para facilitar a
elaboração de comandos neste modo. Estudaremos elas ainda na primeira semana. Acessamos
o modo linha de comando, enfim, inciando nosso comando com algum destes caracteres ": / ? !
"a partir do modo Normal, mas, em princípio, sempre que me referir ao modo linha de comando,
ou à linha de comando do Vim, estarei falando de comandos inciados com dois-pontos, ": ". Nos
casos em que me referir aos outros usos deste modo tornarei claro se trato de uma busca, para
36
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
frente ou para trás, ou de um comando filtrado.
3 Modo "ex"
O modo ex poderia ser, e inclusive é, considerado por alguns como uma variante do modo
linha de comando, visto que nele se opera de maneira praticamente idêntica. A diferença está no
controle que temos sobre a linha de comando. Enquanto em linha de comando se espera que
realizemos uma operação e voltemos para o modo Normal, em modo podemos efetuar quantos
comandos quisermos e nos manter como em linha de comando. No modo ex, portanto, não temos
que continuar digitando ": "a cada comando e a tela não é atualizada listando cada operação que
fazemos. Por este último motivo o modo ex é ideal para que configuremos o Vim em pleno uso
com um script "on-line". Para entrar em modo ex, digitamos "Q ". Também podemos iniciá-lo com
"gQ ", o que, é claro, funciona de forma ligeiramente diferente. Enquanto com "Q "as linhas de
comando são manipuláveis somente com os comandos padrões de inserção de linhas, ou seja,
com <bs>, <del> e comandos como "Ctrl-u", "Ctrl-e", etc., o modo ex iniciado com "gQ "é editável
com todos os recursos do modo linha de comando, como completar automaticamente palavras,
por exemplo.
4 Modo de inserção
Este modo funciona como um editor normal, que dispõe um cursor e espera a entrada de
caracteres a serem incluídos diretamente no texto. Entramos em modo de inserção com o co-
mando simples "i ", a partir do modo Normal, mas existem diversas outras maneiras de acessá-lo,
como "I ", "a ", "A ", "o ", "O ", "c ", "C ", "s "e "S ". Podemos utilizar o modo de inserção assim
como o modo de substituição (ou seja, os modos de inclusão de caracteres, como estou cha-
mando) também em combinação com os modos Normal, visual e de seleção o que é explicado
nas respectivas seções.
5 Modo de substituição
Este modo é um modo variante do modo de inserção segundo a lista oficial de modos mas po-
demos considerá-lo um modo básico dado que ambos desempenham os mesmos papéis apesar
de dispor de menos alternativas de ativação. O modo de substituição é utilizado como o modo
de inserção, mas sobrepõe, ou ainda melhor, substitui caracteres do texto com os caracteres di-
gitados ao invés de inseri-los ao lado. É o recurso "Insert"que a maioria dos teclados possui e
que todos editores de hoje reconhecem. Inclusive, a tecla "Insert"é uma das maneiras de entrar
em modo de substituição. Outra, a que recomendo, é apertando "R "em modo Normal. Podemos
utilizar o modo de substituição, assim como o modo de inserção (ou seja, os modos de inclusão
de caracteres, como estou chamando), também em combinação com os modos Normal, visual e
de seleção, o que é explicado nas respectivas seções.
6 Modo visual
O modo visual pode ser visto como uma extensão útil do modo Normal, visto que temos
acesso às mesmas operações de edição. Este modo é destinado à seleção de um trecho de
texto com a movimentação dos cursores, que formam como uma hachura sobre as linhas a se-
rem selecionadas. Passamos comandos então como em modo Normal para manipular o trecho
marcado. Ele funciona como qualquer editor visual com suporte a mouse, e inclusive pode-se
configurar o próprio Vim para suportar a utilização do mouse. Este modo é acessado com o ca-
ractere "v "em modo Normal. Existe um recurso do modo visual que praticamente poderia ser
considerado um modo derivado, que é o bloco visual, ou visual block. Ele é acessado com "Ctrl-
v"a partir do modo Normal. Com ele podemos selecionar blocos quadrangulares de texto, como
se ele fosse uma tabela ou um quadro de caracteres sem linha, nos permitindo selecionar, por
exemplo, somente uma coluna de texto para manipulação. Semelhante a este recurso é o visual
line, acessível com "Shift-v"a partir do modo Normal.
7 Modo de seleção
37
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
O modo de seleção é semelhante ao modo visual, mas ele não trabalha em cooperação com
o modo Normal, ou seja, o modo de seleção não aceita comandos como o visual. Ao contrário,
caso seja digitado qualquer caractere imprimível entra-se em modo de inserção, ou seja, sua
utilização é análoga a de um editor de texto visual simplista. Este modo é acessado através do
comando "gh", de dentro do modo Normal. "Ctrl-g", a partir do modo visual, é uma das outras
alternativas que serão apresentadas mais tarde. Existem também os recursos de selection block
e selection line no modo de seleção, ativados com "gH"e com "g_Ctrl-h"respectivamente.
38
Capítulo 8
Lição 1 - Interagindo com o Editor
8.1 Entrando
Agora já conhecemos o que é o Vim e temos uma boa noção das suas características, das
suas peculiaridades operacionais e da sua história. Então, estamos prontos para aprender a
editar de fato? Nossa primeira dificuldade técnica a ser enfrentada é abrir o editor de texto.
Estejam com seus terminais de linha de comando preparados para evocar o grande editor. Agora
digitem a palavra ’vim’. Pronto, primeira fase concluída!
Ação: digitem ’vim’ na linha de comando para entrar no Vim!
8.2 Saindo
39
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Nessa tela podemos ver uma introdução simples e simpática ao ambiente de edição que nos
informa o nome do programa, VIM - Vi IMproved, o número da sua versão do programa (que
caso seja anterior à 5.0, é aconselhável uma atualização), o nome do principal criador, Bram
Moolenaar, e o aviso orgulhoso de que o código do Vim é aberto e de que sua distribuição é
gratuita. Em seguida ele apresenta uma frase aleatória que pode ser um convite para que nos
registremos, um pedido para que demos alguma contribuição com o programa de ajuda das
crianças da Uganda ou qualquer outra. Em seguida ele nos informa sobre dois comandos vitais
no uso do Vim: ’:help’ e ’:q’.
Com o ’:help’ a partir do modo Normal podemos consultar o manual completo de ajuda de
comandos de edição, de modos de operação e de controle do programa em geral além de outros
textos relativos ao Vim, cuja importância não diz respeito exclusivamente à sua operacionalidade.
Entre esses arquivos de textos estão a licença, o texto de registro descrevendo as alterações da
versão e um texto mostrando as diferenças entre o Vim e o Vi.
Com o ’:q’ a partir do modo Normal, ou seja, no modo padrão de entrada também acessível
com ’Esc’ a partir dos outros modos, saímos do Vim caso não tenhamos realizado nenhuma tarefa
de edição. Vamos testar: digitem ’:q’ (sem os apóstrofes, é claro). ’ q’, em inglês, é quit o que
também funciona se digitado.
Ação: digitem ’:q’ para sair caso não tenham efetuado nenhuma edição!
8.3 Escrevendo
Agora retornem para o Vim digitando ’vim’ na linha de comando novamente. Nós conseguimos
sair mas também não fizemos nada! Isso não adiantou em muita coisa. Vamos iniciar uma edição
então digitem alguma coisa como "text". Parabéns, não apareceu nada! Isto aconteceu porque
estamos em princípio no modo Normal e a partir dele não podemos inserir caracteres novos.
Portanto, como aprendemos, digitem ’i’ a partir da tela inicial do Vim. Porém se você fez como foi
dito provavelmente terá que digitá-lo duas vezes. Pronto! Como aprendemos, ’i’ inicia o modo de
inserção.
Ação: digitem ’i’ para entrar em modo de inserção de caracteres!
8.4 Saindo sem salvar
Enfim, escrevam! Neste modo qualquer um sabe se virar, pois o modo de inserção se com-
porta como um editor simples. Enquanto escrevemos, o texto que editamos está em um buffer
reservado pelo Vim na memória, que ainda não o associa a arquivo nenhum. Para sairmos do
Vim agora não basta digitar ’:q’, inclusive porque estamos em modo de inserção, portanto, voltem
para o modo Normal apertando ’Esc’ e em seguida tente sair com ’:q’. O Vim nos informa de
que não salvamos o texto desde sua última modificação, ou seja, ele está dizendo que o texto
que está atualmente na memória não foi escrito no disco rígido para que seu acesso seja pos-
sível posteriormente. Sim - dizemos - nós sabemos que ele não foi salvo, agora nos deixe sair!
Pois bem, como o Vim (ainda!) não consegue nos ouvir, precisamos informá-lo de que estamos
conscientes do fato de não havermos salvado o texto e que ainda assim queremos sair. Fazemos
isso com o caractere ’!’ após o comando (de modo linha de comando). Esse caractere significa
alguma coisa como "Faça isso e não me pergunte nada!", ou "Sim, eu sei o que eu estou fazendo,
40
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
acredite em mim!". Seu funcionamento lembra o parâmetro ’-f’ presente em muitos comandos
Unix. Digite, portanto, ’:q!’. Pronto, de volta ao terminal.
Ação: digitem ’:q!’ para sair mesmo havendo efetuado modificações!
8.5 Salvando 1
Grande coisa, não?! Conseguimos entrar em um editor de textos, escrever e sair sem sal-
var! De que isso adianta? Nada! Entre no Vim novamente (’vim’). Entre no modo de inserção
novamente (’i’)’. Digite um texto novamente e retorne para o modo Normal (’Esc’). Agora vamos
salvar o texto antes de sair. Digite ’:w’ para salvá-lo. ’ w ’ vem de write, do inglês, e o comando
nesse formato também é reconhecido. Infelizmente, o Vim não sabe com que nome ele deve
escrever seu texto em disco. Portanto, informe o nome do arquivo após o comando desta forma:
’:w nomedoarquivo’. Pronto! salvamos o texto no disco!
Ação: digitem ’:w nomedoarquivo’ para salvar o texto em um arquivo no disco!
8.6 Salvando 2
O lugar onde o texto foi guardado é por padrão o diretório a partir do qual chamamos o
Vim da linha de comando, ou seja, justamente onde iremos quando saímos dele. Vamos ver?
Digite ’:q’, que agora funcionará já que não há uma modificação sequer que não tenha sido
salva. Com o comando Unix ’ls’ listamos parte do conteúdo do diretório atual. Entre os arquivos
listados devemos encontrar aquele que criamos. Para lê-lo podemos digitar, por exemplo, ’cat
nomedoarquivo’ e conferir se esse tal de Vim funciona mesmo.
Voltemos ao Vim. Agora queremos realizar uma última edição do nosso texto, então digite ’vim’
novamente para entrar no editor. Ora, mas onde está meu texto? Será que eu só posso editar
textos novos!? Imagina! Vamos chamar o texto de dentro do Vim. Digite o comando de linha de
comando ’:e nomedoarquivo’. Olha ele aí! Que beleza esse Vim. Façam suas modificações a
partir do modo de inserção (’i’) e retornem depois para o modo Normal (’Esc’). Percebam que
agora o Vim sabe a que arquivo o texto em edição está associado, logo não é mais necessário
informar o nome do arquivo para salvá-lo, podendo o comando ser simplesmente ’:w’.
Ação: digitem ’:w’ para salvar o arquivo cujo conteúdo está atualmente em edição!
8.7 Salvando e saindo
Queremos agora salvar e sair ao mesmo tempo, afinal o que o Vim teria de rápido e eficiente
se ele fosse todo burocrático? Digite ’:wq’. Perceba que concatenando dois comandos eles
funcionam perfeitamente! Outros comandos existem para realizar a mesma operação: ’:ZZ’ e ’:x’
Ação: digitem ’:wq’ para salvar e sair imediatamente!
8.8 Abrindo um arquivo 1
Apesar dos comandos no formato ’quit’ e ’write’ serem reconhecidos, os comandos concate-
nados devem ser abreviados. Para conferir o conteúdo do arquivo a partir do Vim digite na linha
de comando do seu Linux ’vim nomedoarquivo’. O arquivo será aberto em modo de edição.
41
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Ação: digitem ’vim nomedoarquivo’ para inciar o Vim já automaticamente chamando um ar-
quivo para edição!
8.9 Salvando 3
Podemos chamar inclusive mais de um arquivo para a sessão do Vim simultaneamente com o
mesmo comando no formato: ’vim arq1 arq2 arq3 (...)’. Veja como ele reconhece o seu comando
e informa na parte inferior o nome do arquivo e a quantidade de linhas e de caracteres existentes
no texto. Caso queiram gravar esse texto em outro arquivo, já sabem, não é mesmo? Digite ’:w
outroarquivo’ e continue editando o texto, pois o Vim continuará o associando ao arquivo original,
diferentemente de outros editores de texto. Esse comando funciona como um "salvar como".
Ação: digitem ’:w outroarquivo’ para gravar o texto atual em um outro arquivo que não seja
aquele já chamado!
8.10 Abrindo um arquivo 2
Logicamente, podemos portanto salvar nosso texto com outro nome de arquivo e também sair
imediatamente! Basta digitarmos ’:wq outroarquivo’.
Ação: digitem ’:wq outroarquivo’ para salvar outro arquivo e imediatamente sair do Vim!
Para terminar vamos aprender uma alternativa para o problema de querermos abrir um ou
mais arquivos já de dentro do Vim. O comando edit (do inlgês), que também funciona, tem sua
versão abreviada ’:e’. Com ’:e nomedoarquivo’ abrimos um arquivo de dentro do Vim. Se quiser,
tente!
Ação: digitem ’:e’ de dentro do Vim para abrir o arquivo desejado sem ter que voltar ao shell!
42
Capítulo 9
Lição 2 - Sintaxe dos comandos
9.1 Parte 1 / 7 | Operadores de controle
Atenção: esta lição não tem questão ao final. Seu objetivo é que a passagem de comandos
seja facilitada, mas caso se sinta seguro quanto a sintaxe de comandos (de modo Normal) do vim
ela é dispensável.
O que aqui chamamos de operadores de controle não são exatamente as famosas teclas de
controle, como <Ctrl>, <Shift>, etc. No Vim, os operadores de controle são todas as teclas e
caracteres que não realizam uma ação propriamente dita nem imprimem texto (mesmo que seja
de um comando). Eles habilitam outros comandos (tipicamente <Ctrl>, mas não somente), como
na função típica das teclas de controle. Além disso manipulam a ambientação e o uso do Vim,
como os caracteres de transição de modos e a tecla <Esc>.
9.2 Parte 2 / 7 | O paradigma Vi
O chamado paradigma Vi envolve três variáveis cujas combinações quando executadas reali-
zam diferentes tarefas de edição: verbo, número e objeto. Esses três argumentos juntos compõe
uma ação e estão presentes, ainda que ocultos, em todos os comandos de edição em modo
Normal. A lógica é: faça isto nesta quantidade de objetos. Não obstante o verbo ser certamente
o parâmetro fundamental, cada uma das variáveis podem ser ocultadas em determinadas situa-
ções. Neste caso, a quantidade padrão é 1 (um) e o verbo padrão é mover o cursor. Em geral, os
caracteres são o objeto padrão, sendo as linhas o objeto secundário. O objeto, caso seja oculto,
é inferido a partir da direção (e não do sentido) para a qual apontamos; apontar horizontalmente
implica que o objeto é um caractere e apontar verticalmente implica que o objeto em questão é
uma linha.
9.3 Parte 3 / 7 | Objetos de texto
Pode ser dito que o Vim é um editor orientado a objetos. Como assim? Isso quer dizer que
o Vim possui a capacidade de reconhecer objetos de texto como caracteres, linhas e parágrafos,
sobre os quais podemos realizar tarefas. Para o Vim, nem que seja implicitamente, realizamos
edições sempre sobre um determinado objeto ou sobre um conjunto de objetos especificáveis.
Estes objetos podem ser:
43
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
. Caracteres; . Palavras; . Sentenças; . Linhas; . Parágrafos; . Todo o texto; . A string de uma
busca; . Posição de Parênteses e de todo tipo de delimitadores (até comentários em C!).
Como eles são de espécies diferentes, algumas utilizações também serão diferentes. Há de
notar que existem ações que dizem respeito a um objeto inteiro ele mesmo e ações que usam
o objeto como medida para selecionar uma região de ação no texto. O uso de todos objetos,
porém, é relativo à posição do cursor, mesmo quando a ação é mover o próprio cursor para um
determinado objeto (ou por um determinado objeto, no caso de uma ação que usa o objeto como
medida de região de texto). Neste caso, em que a ação é o simples mover do cursor, existe a
exceção de querermos mover o cursor segundo um objeto absoluto, como é qualquer um que
diz respeito ao texto como um todo, como o ’início do texto’ ou o ’final do texto’. Somente neste
caso o uso do objeto não é relativo ao cursor, pois mesmo quando sabemos que o uso do objeto
não será outro (como cópia, colagem e deleção), mas será para o simples movimento do cursor,
temos de saber também a posição desse cursor para identificarmos sua ação específica.
9.4 Parte 4 / 7 | Verbos
Basicamente, exitem dois tipos de verbos: os simples, cujo objeto são sempre caracteres, e
os verbos pendentes, que esperam a entrada do parâmetro ’objeto’ para executarem uma ação.
Ou seja, o primeiro tipo de verbo pode receber somente um parâmetro numérico, que caso seja
omitido será tido como sendo o valor ’1’. Já os verbos compostos recebem além do parâmetro
numérico um que indica sobre qual objeto o verbo deve realizar a sua ação. Esse objeto, por sua
vez, pode ser indicado de diversas maneiras distintas caso seja utilizado no seu lugar um operador
de controle ou um caractere direcional. Um caso extremamente interessante de pendência de
verbo é o de comandos que utilizam uma string inserida no texto em uma sessão de modo de
inclusão como objeto de sua ação. Isso significa que entrar em modo de inserção, por exemplo,
pode ser parte de um comando de edição, e a string inserida o objeto de ação. Alguns dos verbos
básicos são:
. Mover cursor; . Deletar; . Copiar; . Colar; . Recortar; . Buscar ocorrências; . Desfazer; .
Refazer.
Só existe uma ação que suporta a omissão do verbo: a movimentação do cursor. Podemos
montar um comando para mover o cursor com a indicação de um número e de um objeto, ou seja,
com a indicação de por quantos objetos de texto de um certo tipo o cursor andará e apontar a
direção da ação com o uso de um dos direcionais. Como essa é uma ação que permite a omissão
tanto do valor numérico quanto do objeto, se omitimos o verbo realizamos o único comando
completamente omisso. Em outras palavras, mover o cursor é ação padrão que é realizada
automaticamente com o uso dos direcionais.
9.5 Parte 5 / 7 | Valores de quantidade
Um dos parâmetros que podemos passar para comandos é o parâmetro numérico. Este,
em geral, refere-se ao número de objetos do tipo designado que serão incluídos da solução do
comando. Por exemplo, podemos querer remover as duas, quatro, oito ou todas as próximas
palavras. Outros verbos, no entanto, reagem de forma ligeiramente diferente ao parâmetro nu-
mérico, lendo o valor como uma descrição objetiva de algum tipo de objeto numerável, ou seja,
indentificável numericamente, como, por exemplo, as linhas.
44
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
9.6 Parte 6 / 7 | Os direcionais
Os editores da família Vi disponibilizam quatro caracteres que têm a função tanto de suprir a
ausência das teclas de setas direcionais em certos teclados quanto também oferecer uma dis-
posição espacial das teclas de controle que seja ergonômica e eficaz. São, portanto, caracteres
cujas teclas fazem parte do centro da região direita do teclado. As teclas são ’h’, ’j’, ’k’ e ’l’. Elas
desempenham em modo Normal, respectivamente, as funções das setas para a esquerda, para
baixo, para cima e para a direita. Os caracteres direcionais, assim como as setas, não devem
ser entendidos como comandos simples, como seria natural visto que em modo Normal existem
diversos comandos de um dígito que realizam ações. Os direcionais não são meros verbos de
movimento, apesar de poderem constituir ações espaciais como o mover dos cursores sem a
explicitação do verbo. Na verdade, os direcionais não devem ser vistos sequer como verbos, mas
sim como as realizações de um parâmetro para verbos cujo objeto seja indeterminado.
9.7 Parte 7 / 7 | Construindo comandos
Vimos que o paradigma de edição da família Vi assume que toda ação possui os três parâme-
tros respectivamente: valor numérico, doravante "n", verbo de edição, "v", e objeto de texto, "o". É
esta exatamente a ordem sintática com que os parâmetros devem ser concatenados no comando.
Portanto, um esquema bastante simples que pode ser apresentado de como é a sintaxe básica
dos comandos de edição é, em geral: n v o. Uma alternativa a esta estrutura é v n o, que também
funciona igualmente. Como cada um destes pode ser eventualmente omitido (o verbo somente
em um caso), a aparência dos comandos pode e será diferente em muitos casos.
Como ainda não conhecemos os comandos de edição, utilizaremos como exemplo os dois
comandos de remoção de caracteres, o ’x’ e o ’d’ e outros que serão apresentados nos momentos
oportunos. Para nosso experimento, siga estritamente as seguintes instruções: abra o Vim com
o comando ’vim’, insira com ’i’ o texto "O Vim Salva "(repare no espaço) e aperte <Esc>. Em
nosso primeiro comando, vamos instruir o Vim a copiar as três últimas palavras, para tanto, vamos
informá-lo da quantidade de objetos, que é três (’3’), do objeto, que é palavra atrás do cursor (’b’) e
do verbo, que é copiar (’y’, de yank). Logo, o comando é: "3yb". Ao digitar os caracteres, notaram
que eles parecem não ser reconhecidos pelo editor pois não não são impressos na tela, o que
é uma característica dos comandos em modo Normal, mas ele está os armazenando enquanto
espera a sintaxe do comando se completar para então executá-lo. Se realizamos corretamente
o comando, o cursor deve estar sobre o primeiro caractere da linha, a letra ’O’. Vamos agora ao
nosso segundo comando. Apagaremos três palavras a partir do cursor. Informaremos o Vim do
número de objetos, que é novamente três (’3’), do objeto, que é palavra a partir do cursor (’w’, de
word) e do verbo, que é apagar (’d’, de delete). O comando portanto será: "3dw". Os curiosos
podem tentar apagar duas palavras e depois a última, para ver outras combinações do mesmo
comando. Para tanto, aperte ’(1)u’ (de undo), sendo o número opcional, já que 1 é o padrão,
para desfazer o último comando e digite "2dw"e enfim "(1)dw". Tentem também, apertando ’u’,
digitar três vezes "dw", apagando palavra por palavra. Porém, para o nosso propósito neste
caso, é necessário que seja refeita a remoção da frase com o "3dw". Agora, com o texto vazio,
digitem ’5p’. ’p’, que vem de paste, cola o último pedaço de texto armazenado no buffer padrão
(veremos mais sobre os buffers mais tarde). Observe também que os objetos tanto do comando
’u’ quanto do ’p’ são objetos implícitos especiais, no caso a última ação e o último pedaço de
texto armazenado, respectivamente. "5p"tem de ter impresso no texto cinco vezes a expressão
religiosa "O Vim Salva ". Veja como a colagem foi feita sobre uma mesma linha, e experimente
45
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
agora digitar ’(1)dd’. A repetição do verbo e a omissão do número indica que o Vim deve remover
a linha toda, e somente uma linha, linha aqui é o objeto implícito a essa ação. O verbo ’d’, além
de remover, também copia o objeto removido, ou seja, ’d’ mais do que remover ou copiar, recorta.
Sabendo disso e tendo recortado a linha, vamos colá-la diversas vezes com o comando "200p".
Ah, agora sim! Praticamente um salmo!
46
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor
Guia Vim Editor

Mais conteúdo relacionado

Mais procurados

Quanta
QuantaQuanta
QuantaTiago
 
Shell script
Shell scriptShell script
Shell scriptTiago
 
Tunelamento
TunelamentoTunelamento
TunelamentoTiago
 
Squid guard
Squid guardSquid guard
Squid guardTiago
 
Screen
ScreenScreen
ScreenTiago
 
Selinux
SelinuxSelinux
SelinuxTiago
 
Manipulando pacotes
Manipulando pacotesManipulando pacotes
Manipulando pacotesTiago
 
Servidor de emails_seguro
Servidor de emails_seguroServidor de emails_seguro
Servidor de emails_seguroTiago
 
Tcl tk
Tcl tkTcl tk
Tcl tkTiago
 
Drivers de Dispositivos Linux
Drivers de Dispositivos LinuxDrivers de Dispositivos Linux
Drivers de Dispositivos LinuxHudson Augusto
 
Python gtk
Python gtkPython gtk
Python gtkTiago
 
Javascript
JavascriptJavascript
JavascriptTiago
 
Java applet
Java appletJava applet
Java appletTiago
 

Mais procurados (20)

Quanta
QuantaQuanta
Quanta
 
Shell script
Shell scriptShell script
Shell script
 
Samba
SambaSamba
Samba
 
Tunelamento
TunelamentoTunelamento
Tunelamento
 
Squid guard
Squid guardSquid guard
Squid guard
 
Qemu
QemuQemu
Qemu
 
Screen
ScreenScreen
Screen
 
Selinux
SelinuxSelinux
Selinux
 
Manipulando pacotes
Manipulando pacotesManipulando pacotes
Manipulando pacotes
 
Xdmcp
XdmcpXdmcp
Xdmcp
 
Servidor de emails_seguro
Servidor de emails_seguroServidor de emails_seguro
Servidor de emails_seguro
 
Tcl tk
Tcl tkTcl tk
Tcl tk
 
Jspservlets
JspservletsJspservlets
Jspservlets
 
Drivers de Dispositivos Linux
Drivers de Dispositivos LinuxDrivers de Dispositivos Linux
Drivers de Dispositivos Linux
 
Jdbc
JdbcJdbc
Jdbc
 
Python gtk
Python gtkPython gtk
Python gtk
 
Horde
HordeHorde
Horde
 
Java Basico
Java BasicoJava Basico
Java Basico
 
Javascript
JavascriptJavascript
Javascript
 
Java applet
Java appletJava applet
Java applet
 

Destaque

Den otevřených dveří 2014
Den otevřených dveří 2014Den otevřených dveří 2014
Den otevřených dveří 2014Vercaa
 
T rnor config_2014
T rnor config_2014T rnor config_2014
T rnor config_2014jmoya222
 
Intro redes
Intro redesIntro redes
Intro redesTiago
 
Homicidios Calificado, agravado, concausal y preterintencional.
Homicidios Calificado, agravado, concausal y preterintencional.Homicidios Calificado, agravado, concausal y preterintencional.
Homicidios Calificado, agravado, concausal y preterintencional.al3jandravp
 
Alex Thomson - Resume
Alex Thomson - ResumeAlex Thomson - Resume
Alex Thomson - ResumeAlex Thomson
 
Успех снабжения закладывается на этапе разработки 2006 Eeproject Ru
Успех снабжения закладывается на этапе разработки 2006 Eeproject RuУспех снабжения закладывается на этапе разработки 2006 Eeproject Ru
Успех снабжения закладывается на этапе разработки 2006 Eeproject RuYuri Goncharov
 
HASSAN TALEB works CV 111
HASSAN TALEB works CV 111HASSAN TALEB works CV 111
HASSAN TALEB works CV 111Hassan Taleb
 

Destaque (10)

Zope
ZopeZope
Zope
 
Den otevřených dveří 2014
Den otevřených dveří 2014Den otevřených dveří 2014
Den otevřených dveří 2014
 
Cert_2731677
Cert_2731677Cert_2731677
Cert_2731677
 
T rnor config_2014
T rnor config_2014T rnor config_2014
T rnor config_2014
 
Sql
SqlSql
Sql
 
Intro redes
Intro redesIntro redes
Intro redes
 
Homicidios Calificado, agravado, concausal y preterintencional.
Homicidios Calificado, agravado, concausal y preterintencional.Homicidios Calificado, agravado, concausal y preterintencional.
Homicidios Calificado, agravado, concausal y preterintencional.
 
Alex Thomson - Resume
Alex Thomson - ResumeAlex Thomson - Resume
Alex Thomson - Resume
 
Успех снабжения закладывается на этапе разработки 2006 Eeproject Ru
Успех снабжения закладывается на этапе разработки 2006 Eeproject RuУспех снабжения закладывается на этапе разработки 2006 Eeproject Ru
Успех снабжения закладывается на этапе разработки 2006 Eeproject Ru
 
HASSAN TALEB works CV 111
HASSAN TALEB works CV 111HASSAN TALEB works CV 111
HASSAN TALEB works CV 111
 

Semelhante a Guia Vim Editor

Semelhante a Guia Vim Editor (20)

Perl
PerlPerl
Perl
 
Python
PythonPython
Python
 
Programacao cpp
Programacao cppProgramacao cpp
Programacao cpp
 
Manual Moodle
Manual MoodleManual Moodle
Manual Moodle
 
Manual sobre a ferramenta Kate - Linux
Manual sobre a ferramenta Kate - LinuxManual sobre a ferramenta Kate - Linux
Manual sobre a ferramenta Kate - Linux
 
Livro angular2
Livro angular2Livro angular2
Livro angular2
 
My sql
My sqlMy sql
My sql
 
Aprenda computação com python 3.0 (1)
Aprenda computação com python 3.0 (1)Aprenda computação com python 3.0 (1)
Aprenda computação com python 3.0 (1)
 
Java basico
Java basicoJava basico
Java basico
 
Aprenda computaocompython
Aprenda computaocompythonAprenda computaocompython
Aprenda computaocompython
 
Ldap
LdapLdap
Ldap
 
Apostilando mysql
Apostilando mysqlApostilando mysql
Apostilando mysql
 
Moodlebook
MoodlebookMoodlebook
Moodlebook
 
Livro moodle
Livro moodleLivro moodle
Livro moodle
 
Html
HtmlHtml
Html
 
caelum-java-objetos-fj11.pdf
caelum-java-objetos-fj11.pdfcaelum-java-objetos-fj11.pdf
caelum-java-objetos-fj11.pdf
 
Inst configdebian
Inst configdebianInst configdebian
Inst configdebian
 
Manual do Kile
Manual do KileManual do Kile
Manual do Kile
 
Jspservlets
JspservletsJspservlets
Jspservlets
 
Php
PhpPhp
Php
 

Mais de Tiago

Programacao php moodle
Programacao php moodleProgramacao php moodle
Programacao php moodleTiago
 
6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascalTiago
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascalTiago
 
Python bge
Python bgePython bge
Python bgeTiago
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
Threading in c_sharp
Threading in c_sharpThreading in c_sharp
Threading in c_sharpTiago
 
Retirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpRetirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpTiago
 
Remover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpRemover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpTiago
 
Obter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpObter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpTiago
 
Metodo using no_c_sharp
Metodo using no_c_sharpMetodo using no_c_sharp
Metodo using no_c_sharpTiago
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantesTiago
 
Interfaces windows em c sharp
Interfaces windows em c sharpInterfaces windows em c sharp
Interfaces windows em c sharpTiago
 
Filestream sistema arquivos
Filestream  sistema arquivosFilestream  sistema arquivos
Filestream sistema arquivosTiago
 
Curso linux professor rafael
Curso linux professor rafaelCurso linux professor rafael
Curso linux professor rafaelTiago
 
Curso de shell
Curso de shellCurso de shell
Curso de shellTiago
 
Controle lpt em_c_sharp
Controle lpt em_c_sharpControle lpt em_c_sharp
Controle lpt em_c_sharpTiago
 
Classes csharp
Classes csharpClasses csharp
Classes csharpTiago
 
C# o basico
C#   o basicoC#   o basico
C# o basicoTiago
 

Mais de Tiago (20)

Programacao php moodle
Programacao php moodleProgramacao php moodle
Programacao php moodle
 
6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascal
 
Python bge
Python bgePython bge
Python bge
 
Curso python
Curso pythonCurso python
Curso python
 
Curso python
Curso pythonCurso python
Curso python
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
Threading in c_sharp
Threading in c_sharpThreading in c_sharp
Threading in c_sharp
 
Retirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpRetirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharp
 
Remover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpRemover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharp
 
Obter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpObter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharp
 
Metodo using no_c_sharp
Metodo using no_c_sharpMetodo using no_c_sharp
Metodo using no_c_sharp
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantes
 
Interfaces windows em c sharp
Interfaces windows em c sharpInterfaces windows em c sharp
Interfaces windows em c sharp
 
Filestream sistema arquivos
Filestream  sistema arquivosFilestream  sistema arquivos
Filestream sistema arquivos
 
Curso linux professor rafael
Curso linux professor rafaelCurso linux professor rafael
Curso linux professor rafael
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Controle lpt em_c_sharp
Controle lpt em_c_sharpControle lpt em_c_sharp
Controle lpt em_c_sharp
 
Classes csharp
Classes csharpClasses csharp
Classes csharp
 
C# o basico
C#   o basicoC#   o basico
C# o basico
 

Último

ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.Vitor Mineiro
 
Atividades sobre Coordenadas Geográficas
Atividades sobre Coordenadas GeográficasAtividades sobre Coordenadas Geográficas
Atividades sobre Coordenadas Geográficasprofcamilamanz
 
RedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdfRedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdfAlissonMiranda22
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
tabela desenhos projetivos REVISADA.pdf1
tabela desenhos projetivos REVISADA.pdf1tabela desenhos projetivos REVISADA.pdf1
tabela desenhos projetivos REVISADA.pdf1Michycau1
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 

Último (20)

CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
 
Atividades sobre Coordenadas Geográficas
Atividades sobre Coordenadas GeográficasAtividades sobre Coordenadas Geográficas
Atividades sobre Coordenadas Geográficas
 
RedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdfRedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdf
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
tabela desenhos projetivos REVISADA.pdf1
tabela desenhos projetivos REVISADA.pdf1tabela desenhos projetivos REVISADA.pdf1
tabela desenhos projetivos REVISADA.pdf1
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 

Guia Vim Editor

  • 1. VIM 23 de abril de 2007
  • 2. Sumário I Sobre essa Apostila 2 II Informações Básicas 4 1 O que é o Vim 9 2 Plano de ensino 10 2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 Guia do Curso (Início da semana 1) 16 4 Guia de comandos 17 5 Sobre o Vim 25 6 Trabalhando com o Vim 29 7 Modos de operação 33 8 Lição 1 - Interagindo com o Editor 37 8.1 Entrando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8.2 Saindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8.3 Escrevendo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 8.4 Saindo sem salvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 8.5 Salvando 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.6 Salvando 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.7 Salvando e saindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.8 Abrindo um arquivo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.9 Salvando 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.10 Abrindo um arquivo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 1
  • 3. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF 9 Lição 2 - Sintaxe dos comandos 41 9.1 Parte 1 / 7 | Operadores de controle . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 9.2 Parte 2 / 7 | O paradigma Vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 9.3 Parte 3 / 7 | Objetos de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 9.4 Parte 4 / 7 | Verbos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 9.5 Parte 5 / 7 | Valores de quantidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 9.6 Parte 6 / 7 | Os direcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 9.7 Parte 7 / 7 | Construindo comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 10 Lição 3 - Acesso ao texto: Movendo-o 45 10.1 Parte 1 / 7 | Iniciando uma sessão somente leitura . . . . . . . . . . . . . . . . . . . 45 10.2 Parte 2 / 7 | linha a linha para baixo . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 10.3 Parte 3 / 7 | linha a linha para cima . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 10.4 Parte 4 / 7 | tela a tela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 10.5 Parte 5 / 7 | linhas escolhidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 10.6 Parte 6 / 7 | posição da tela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 10.7 Parte 7 / 7 | posição da tela escolhida . . . . . . . . . . . . . . . . . . . . . . . . . . 46 11 Lição 4 - Acesso ao texto: Movendo o cursor 48 11.1 Parte 1 / 7 | direcionais e texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 11.2 Parte 2 / 7 | tela e página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 11.3 Parte 3 / 7 | linha, parênteses e chaves . . . . . . . . . . . . . . . . . . . . . . . . . 50 11.4 Parte 4 / 7 | caractere com linha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.5 Parte 5 / 7 | coluna com linha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.6 Parte 6 / 7 | caractere com sentença e parágrafo . . . . . . . . . . . . . . . . . . . . 51 11.7 Parte 7 / 7 | palavra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 12 Lição 5 - Acesso ao texto: Buscando ocorrências (Início da semana 2) 54 12.1 Parte 1 / 7 | buscando (na linha) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 12.2 Parte 2 / 7 | buscando (na linha) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 12.3 Parte 3 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 12.4 Parte 4 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 12.5 Parte 5 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 12.6 Parte 6 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 12.7 Parte 7 / 7 | buscando (no texto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 13 Lição 6 - Transitando entre os modos 62 13.1 Parte 1 / 7 | Entrando em modos de inclusão . . . . . . . . . . . . . . . . . . . . . . 62 13.2 Parte 2 / 7 | Os modos derivados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 13.3 Parte 3 / 7 | Modo Normal de inclusão . . . . . . . . . . . . . . . . . . . . . . . . . . 64 13.4 Parte 4 / 7 | Modos visual e visual de inclusão . . . . . . . . . . . . . . . . . . . . . . 65 13.5 Parte 5 / 7 | Modos de seleção e seleção de inclusão . . . . . . . . . . . . . . . . . 66 13.6 Parte 6 / 7 | Modo ex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 13.7 Parte 7 / 7 | As ruelas e usos dos modos . . . . . . . . . . . . . . . . . . . . . . . . 68 2
  • 4. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF 14 Lição 7 - Editar o texto 70 14.1 Apagar o texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 14.2 Copiar o texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 14.3 Colar o texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 14.4 Fazer e desfazer comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 14.5 Substituir ocorrências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 15 Lição 8 - Configuração do Vim e ferramentas especiais 74 15.1 Configurando o Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 15.2 Ferramentas de consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 15.3 Ferramentas de edição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 16 Exemplo de .vimrc 80 17 Notas Finais 82 3
  • 5. Parte I Sobre essa Apostila 4
  • 6. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF Conteúdo O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in- ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br. O formato original deste material bem como sua atualização está disponível dentro da licença GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de mesmo nome, tendo inclusive uma versão traduzida (não oficial). A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro de 2006. Críticas e sugestões construtivas são bem-vindas a qualquer tempo. Autores A autoria deste é de responsabilidade de Tomas Ribeiro Cardoso (tomas@cdtc.org.br). O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento, que vem sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto com outros parceiros institucionais, atuando em conjunto com as universidades federais brasileiras que tem produzido e utilizado Software Livre, apoiando inclusive a comunidade Free Software junto a outras entidades no país. Informações adicionais podem ser obtidas através do email ouvidoria@cdtc.org.br, ou da home page da entidade, através da URL http://www.cdtc.org.br. Garantias O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi- lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizam direta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido. Licença Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br) . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS- TILA. A copy of the license is included in the section entitled GNU Free Documentation License. 5
  • 8. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF Sobre o CDTC Objetivo Geral O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina- ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito do desenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira. Objetivo Específico Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário e de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo treinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários, criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar como incentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe- recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento de produtos de software não proprietários e de seu código fonte livre, articulando redes de terceiros (dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro- dutos de software livre. Guia do aluno Neste guia, você terá reunidas uma série de informações importantes para que você comece seu curso. São elas: • Licenças para cópia de material disponível • Os 10 mandamentos do aluno de Educação a Distância • Como participar dos foruns e da wikipédia • Primeiros passos É muito importante que você entre em contato com TODAS estas informações, seguindo o roteiro acima. Licença Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br). 7
  • 9. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA APOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu- mentação Livre GNU". Os 10 mandamentos do aluno de educação online • 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado é pré-requisito para a participação nos cursos a distância. • 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá- tica é necessário para poder executar as tarefas. • 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân- cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal, dos colegas e dos professores. • 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seus colegas de turma respeitando-os e fazendo ser respeitado pelo mesmo. • 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão e a sua recuperação de materiais. • 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e realizá-las em tempo real. • 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre. • 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagens e descobertas. • 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente é ponto - chave na comunicação pela Internet. • 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual não controla a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração. Como participar dos fóruns e Wikipédia Você tem um problema e precisa de ajuda? Podemos te ajudar de 2 formas: A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso: . O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informações que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a 8
  • 10. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação que interesse ao grupo, favor postá-la aqui. Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do curso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais efetivos para esta prática. . O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem ajudar. Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a formalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópico é recomendável ver se a sua pergunta já foi feita por outro participante. A segunda forma se dá pelas Wikis: . Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par- ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podem ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um ótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé- dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, por pessoas de todas as partes do mundo. Acesse-a em português pelos links: • Página principal da Wiki - http://pt.wikipedia.org/wiki/ Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo! Primeiros Passos Para uma melhor aprendizagem é recomendável que você siga os seguintes passos: • Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar; • Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das ferramentas básicas do mesmo; • Entrar nas lições seguindo a seqüência descrita no Plano de Ensino; • Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais. Perfil do Tutor Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores. O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivos valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar. 9
  • 11. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e, para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutor ou instrutor: • fornece explicações claras acerca do que ele espera, e do estilo de classificação que irá utilizar; • gosta que lhe façam perguntas adicionais; • identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por- que motivo a classificação foi ou não foi atribuída’; • tece comentários completos e construtivos, mas de forma agradável (em contraste com um reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de ameaça e de nervossismo’) • dá uma ajuda complementar para encorajar um estudante em dificuldade; • esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente; • ajuda o estudante a alcançar os seus objetivos; • é flexível quando necessário; • mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso, talvez numa fase menos interessante para o tutor); • escreve todas as correções de forma legível e com um nível de pormenorização adequado; • acima de tudo, devolve os trabalhos rapidamente; 10
  • 12. Capítulo 1 O que é o Vim O Vim é um editor de textos baseado no Vi com suporte a diversos formatos de texto e com ferramentas extensas de consulta, edição e formatação de textos. Além disso também oferece ferramentas de configuração de uso. Não somente sua licença é compatível com a GPL como também contribui socialmente, repassando o suporte financeiro voluntário que recebe para um programa social da Uganda! Ele é um editor de texto livre (e até libertário), atual e poderoso! 11
  • 13. Capítulo 2 Plano de ensino 2.1 Objetivo O objetivo deste curso é qualificar usuários de Linux a utilizar de forma avançada o editor Vim. Isso significa que ao término deste curso você será capaz de se virar rapidamente com qualquer edição de texto, seja qual for seu tamanho. No entanto, para maior esclarecimento, vou dizer o que você não vai aprender com ele: Não espere aprender a fazer um currículo bonito ou um texto com justificação, fontes, cores e margens primorosas para sua apresentar sua tese de pós-doutorado. Para isso, você precisa usar um bom processador de textos como o OpenOffice Writer, por exemplo. O Vim não codifica seu texto, ou seja, este entra plano e sai plano: sua funcionalidade máxima se aplica à scripts, arquivos de configuração, códigos fonte e também, é claro, à textos de e-mail, lista de compras, arquivos de anotações pessoais, de trabalho ou à qualquer texto que não se pretenda parecer uma imagem, com estilizações de caracteres e de cores, com figuras, margens barrocas e etc. 2.2 Público Alvo Para novatos no Linux: • Se você está se aventurando pela linha de comando e não sabe com que escrever bem os textos, este curso pode ser do seu interesse; • Se você está estudando Linux e quer conhecer e entender de um dos editores modo texto mais consagrados (se não for o mais) do universo do software livre, este curso pode ser do seu interesse; • Se você já ouviu falar do editor vi ou da sua família de editores e é curiosa(o) por compreendê- la, este curso pode ser do seu interesse. Para usuários regulares, estudantes e programadores: • Se você utiliza um clone do vi, mas não se conforma com suas limitações ou com a sua licença, este curso pode ser do seu interesse; • Se você é um entusiasta da linha de comando e sempre quis ou tem vontade de ter controle sobre o tradicional editor vi ou de algum semelhante, este curso pode ser do seu interesse; 12
  • 14. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF • Se você frequentemente tem de editar arquivos de configuração e precisa dominar algum bom editor de texto, este curso pode ser do seu interesse; • Se você pretende estudar e entender bem de Linux, mas sempre achou o vi um editor exótico, misterioso e de difícil compreensão, este curso pode ser do seu interesse; • Se você escreve scripts em perl, bash scripts ou o que quer que seja e precisa estudar um editor modo texto rápido, leve, versátil e configurável, este curso pode ser do seu interesse; • Se você programa centenas de linhas e necessita de um editor que além de reconhecer sua sintaxe lhe auxilie na difícil organização e edição das suas várias páginas de código, este curso pode ser do seu interesse; 2.3 Pré-requisitos A resposta rápida é: o único pré-requisito, na verdade até somente preferencial, é o uso básico do linux em modo de comando. Ou seja, em princípio, todo estão. Agora a resposta longa. Eu devo admitir, usar o Vim intuitivamente não é fácil. O esforço depositado na tarefa de se familiarizar com as ferramentas e com a filosofia Vim de se editar textos pode ser comparado ao de aprender uma linguagem de programação nova. Ou seja, exige paciência com os caprichos do programa. Se você só quiser escrever um e-mail de natal para o seu tio, provavelmente as poderosas ferramentas do Vim irão parecer a você pouco mais úteis que uma pinça. Porque então aprender a usar o Vim? Não é melhor simplesmente usar o emacs para es- crever meus textos e scripts? Aprender a usar o Vim não seria como querer aprender a usar uma calculadora cujo uso é mais complicado que os próprios cálculos operados? Sim. Se você não tem sugurança ou não é convicto sobre a utilidade de saber manipular bem textos planos, provavelmente você irá se entediar e se desmotivar frente à aparente gratuidade do difícil estilo de edição do Vim. 2.4 Descrição Em princípio, nada de mal. Só que talvez você se apaixone. Pelo editor, é claro, não por mim. Aqui descreverei o programa do curso, porém, se estiver interessado somente na ementa, ou seja, a lista de passos do curso, consulte "Ementa do curso". [se estiver perdido, leia "Ambientação do Moodle".] A primeira parte Após serem apresentadas as noções preliminares, estudaremos o Vim como um programa (antes de um editor) como interagir timidamente com o editor em suas funções fundamentais de operação, como abrir um arquivo, salvá-lo e sair do Vim. Imediatamente depois, para que se possa inciar o aprendizado das ferramentas e dos comandos do Vim, serão apresentados os princípios da sintaxe Vi de comandos padrão. Enfim, para terminar a primeira parte, aprende- remos a consultar, ler e pesquisar, ou, se quiser, a navegar por um texto utilizando ferramentas específicas de movimentação de texto, de cursor e de busca de ocorrências. A segunda parte Visto o editor como um todo, sua sintaxe e suas ferramentas de visualização e de acesso ao texto, vamos estudar com detalhes como transitar entre os modos de operação e seus derivados, 13
  • 15. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF como pré-requisito para o passo seguinte. Sabendo disto tudo, estamos prontos para aprender a fazer aquilo que é mais central em qualquer editor de texto: a editar um texto. Aprenderemos a realizar no Vim (ou seja, de todas as maneiras imagináveis) os comandos básicos de edição como copiar, colar e deletar, para tanto, farei uma breve vistoria sobre como manipular comandos. Por fim, na medida do possível, os iniciarei nos bastidores do Vim, e veremos o que faz do Vim mais do que um editor de texto plano muito versátil, mas praticamente um processador de texto sem codificação. Ou seja, apresentarei os princípios da configuração do Vim e alguns recursos especiais. 2.5 Metodologia O curso está dividido da seguinte maneira: 2.6 Cronograma • Descrição das atividades • Semana 1 • Guia de comandos • Sobre o Vim • Noções preliminares • Modos de operação • Lição 1 - Interagindo com o editor • Lição 2 - Sintaxe dos comandos • Lição 3 - Acesso ao texto: Movendo-o • Lição 4 - Acesso ao texto: Movendo o cursor • Semana 2 • Lição 5 - Acesso ao texto: Buscando ocorrências • Lição 6 - Transitando entre os modos • Lição 7 - Editar o texto • Lição 8 - Configuração do Vim e ferramentas especiais • Material: Dicas de Vim • Material: Meu .vimrc • Material: Notas finais • Avaliação de aprendizagem 14
  • 16. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF As lições contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem ne- cessárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberá uma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição, pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menor do que 6.0, sugerimos que você faça novamente esta lição. Ao final do curso será disponibilizada a avaliação referente ao curso. Tanto as notas das lições quanto a da avaliação serão considera- das para a nota final. Todos os módulos ficarão visíveis para que possam ser consultados durante a avaliação final. Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de Ensino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma. 2.7 Programa Noções preliminares: Portabilidade, história do editor e licença GPL; Sobre o Vim: • Como usar? • Interface. Modos de operação do Vim: • Modo de comando; • Modo de linha de comando; • Modo de inserção; • Modo de substituição; • Modo visual; • Modo de seleção; • Modo ex. Primeira parte: Interagindo com o editor (Abrir arquivos, gravar em disco e sair do Vim); Sintaxe dos comandos; Acessar um texto (e suas partes): • Mover cursor; • Mover texto; • Buscar ocorrências. Segunda parte: Editando um comando (Selecionar, desfazer, refazer e repetir); Transitando entre os modos; Editar um texto: 15
  • 17. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF • Apagar; • Copiar; • Colar; • Desfazer e refazer. Apêndices: Fundamentos de configuração do Vim: • O arquivo de configuração ?.exrc?; • Configurar inicializando; • Os comandos ?set? em modo linha de comando; Recursos e operações especiais: • . Criar marcas; • . Criar macros; • . Criar abreviações; • . Utilizar buffers; • . Indentar o texto; • . Verificar ortografia; • . Verificar completude de parênteses, de chaves e de colchetes; • . Completar palavras automaticamente; • . Selecionar região do texto. • . Registrar comandos em um histórico; • . Gravar comandos interativamente; • . Editar mais de um texto; • . Visualizar mais de um texto; • . Abrir um shell sem tirar o Vim da memória; • . Comandos de shell de dentro do editor; • . Comandos de shell para dentro do editor. Notas finais: Outros editores de texto plano; Fontes de consulta; Links. 16
  • 18. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF 2.8 Avaliação Toda a avaliação será feita on-line. Instrumentos de avaliação: • Avaliações dentro das lições; • Avaliação ao final do curso. • Para a aprovação e obtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordo com a fórmula abaixo: • Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições • AF = Avaliação Final 2.9 Bibliografia • Site oficial: http://www.vim.org • Site oficial (BR): http://vimdoc.sourceforge.net 17
  • 19. Capítulo 3 Guia do Curso (Início da semana 1) Bem vindo ao curso do editor Vim! Bom, logo no início desta primeira semana sugiro que dêem uma olhada no livro "Noções preliminares "para ganharmos alguma familiaridade com o trabalho que vamos ter nas próximas quatro semanas. O livro "Sobre o Vim "contém informações gerais sobre esse editor, sua história, portabilidade, licença... E só deve ser lido por quem real- mente tiver interesse, uma vez que não é obrigatório já que não é exigido como conhecimento nas lições. O livro Guia de comandos é um suporte para os seus estudos e não necessariamente precisa ser consultado. Ele é somente um apanhado de todas as ações sugeridas ao longo das lições e deve ser útil para aqueles que precisam lembrar de um comando específico ou que pre- cisam estudar as ferramentas do Vim de forma mais objetiva. O curso realmente acontece dentro das lições, portanto concentrem-se nelas. Lembrem-se de dar uma olhada geral nas lições antes de adiar suas leituras, já que algumas delas são um pouco extensas. As lições serão liberadas ao longo das duas semanas. Cada uma destas é bastante descritiva sobre seu conteúdo, logo pode ser interessante para alguns saltar alguns trechos de texto para não se cansarem, caso já sejam familiarizados com o assunto. Neste caso procurem ao menos acompanhar as ações propostas ao longo do texto e transcritas para o Guia de comandos, ou simplesmente respondam as pergunta das lições, o que é necessário para serem avaliados e receberem o diploma. Ao final de cada uma serão feitas algumas perguntas que deverão ser respondidas para que seja avaliado o seu aprendizado, e ao final do curso, será liberado um questionário final. A nota final será a média dos resultados que obtiverem em cada lição, que valem 70% da nota, mais a nota tirada no questionário final, que vale 30%. Caso tenham dúvidas ao longo do curso ou se quise- rem compartilhar qualquer comentário ou experiência participem do fórum do curso. Estejam à vontade. 18
  • 20. Capítulo 4 Guia de comandos Interagindo com o editor Entrando no Vim • Ação: digitem ’vim’ na linha de comando para entrar no Vim! • Ação: digitem ’i’ para entrar em modo de inserção de caracteres! • Ação: digitem ’vim nomedoarquivo’ para inciar o Vim já automaticamente chamando um arquivo para edição! Gravando e lendo • Ação: digitem ’:w nomedoarquivo’ para salvar o texto em um arquivo no disco! • Ação: digitem ’:w’ para salvar o arquivo cujo conteúdo está atualmente em edição! • Ação: digitem ’:w outroarquivo’ para gravar o texto atual em um outro arquivo que não aquele já chamado! • Ação: digitem ’:e’ de dentro do Vim para abrir o arquivo desejado sem ter que voltar à shell! Saindo do editor • Ação: digitem ’:q’ para sair caso não tenham efetuado nenhuma edição! • Ação: digitem ’:q!’ para sair mesmo havendo efetuado modificações! • Ação: digitem ’:wq’ para salvar e sair imediatamente! • Ação: digitem ’:wq outroarquivo’ para salvar outro arquivo e imediatamente sair do Vim! Acessando o texto Movendo o texto • Ação: Abra o Vim com o comando ’view’ para já configurar automaticamente a sessão atual como ’somente leitura’! • Ação: Segure ’<Ctrl>+e’ para mover a tela uma linha para baixo pelo texto! • Ação: Segure ’<Ctrl>+y’ para mover a tela uma linha para cima pelo texto! • Ação: Segure ’<Ctrl>+f’ para mover a tela uma página abaixo pelo texto! 19
  • 21. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF • Ação: Segure ’<Ctrl>+b’ para mover a tela uma página acima pelo texto! • Ação: Especifique um número e segure qualquer um dos comandos básicos de movimen- tarção de texto para mover um número personalizado de objetos de texto por sob a tela! • Ação: Digite ’z.’ ou ’zz’ para situar no centro da tela a linha atualmente sob o cursor! • Ação: Digite ’z+’ para situar no topo da tela a linha atualmente sob o cursor! • Ação: Digite ’z-’ para situar na base da tela a linha atualmente sob o cursor! • Ação: Determine o número da linha que deseja enquadrar e o digite seguido de uma das posições da tela! Movendo o cursor Objetos: Caractere e linha com direcionais simples: • Ação: digite ’ h ’ , ’ j ’ , ’ k ’ ou ’ l ’ para mover o cursor para a esquerda, para baixo, para cima ou para a direita, respectivamente! • Ação: digite <Space> ou < BackSpace> para mover o cursor por um caractere para frente ou para trás, respectivamente! • Ação: digite um valor numérico seguido de ’ h ’ , ’ j ’ , ’ k ’, ’ l ’, <Space> ou <BackSpace> para movimentar o cursor por um número determinado de objetos! Objeto: Texto: • Ação: digite ’ gg ’ ou ’ [[ ’ para mover o cursor de onde ele estiver até o início da primeira linha do texto! • Ação: digite ’ G ’ ou ’ ]] ’ para mover o cursor de onde ele estiver até o início da última linha do texto! • Ação: digite n % para mover o cursor à linha correspondente à posição do texto apontada em percentagem! • Ação: digite n go para mover o cursor ao enésimo byte (em geral, enésimo caractere) do texto! Objeto: Tela: • Ação: digite ’ H ’ para mover o cursor para a primeira linha visível na tela! • Ação: digite ’ L ’ para mover o cursor para a última linha visível na tela! • Ação: digite ’ M ’ para mover o cursor para a linha que está no centro da tela! Objeto: Página: • Ação: aperte ’<Ctrl>+f’ para avançar o cursor uma página abaixo! • Ação: aperte ’<Ctrl>+b’ para recuar o cursor uma página acima! • Ação: informe o número de páginas seguido do comando de avançar ou recuar o cursor pelas páginas para andar um número escolhido de páginas! 20
  • 22. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF Objeto: Linha: • Ação: aperte ’<Ctrl>+u’ para subir o cursor meia página no texto! • Ação: aperte ’<Ctrl>+d’ para descer o cursor meia página no texto! • Ação: digite o número de linhas com o qual deseja mover o cursor seguido do comando de subir ou descer o cursor por • linhas para movê-lo por um número específico de linhas! • Ação: digite n gg ou n G para acessar uma linha específica do texto! • Ação: digite : n <Enter> para acessar uma linha específica do texto! Objetos: Parênteses e chaves: • Ação: digite ] ) ou ] } para procurar por um parênteses ou por uma chave que fecham sem par que estejam à frente do cursor no texto! • Ação: digite [ ( ou [ { para procurar por um parênteses ou por uma chave que abrem sem par que estejam à cima do cursor no texto! Objeto combinado: Caractere com linha: • Ação: digite ’ ˆ’ para mover o cursor para o primeiro caractere da linha corrente ou ’ _ ’ para a mesma ação desconsiderando os espaços em branco! • Ação: digite ’ $ ’ para mover o cursor para o final da linha corrente ou informe um valor a contar 1 da linha atual para inserir o cursor no final de outra linha! • Ação: digite ’<Ctrl>+m’ para mover o cursor para o primeiro caractere da linha seguinte ou ’ + ’ para a mesma ação desconsiderando os espaços em branco! • Ação: digite ’ - ’ para mover o cursor para o primeiro caractere da linha anterior sem consi- derar os espaços em branco! Objeto combinado: Coluna com linha • Ação: digite ’ n | ’ para mover o cursor para uma coluna específica da linha atual e ’ | ’ ou ’ 0 ’ simples para mover o cursor para a primeira coluna da lnha corrente! Objeto combinado: Caractere com sentença e parágrafo • Ação: digite ’ ( ’ para inserir o cursor no inicío da sentença corrente! • Ação: digite ’ ) ’ para inserir o cursor no final da sentença corrente! • Ação: digite ’ { ’ para inserir o cursor no parágrafo anterior! • Ação: digite ’ } ’ para inserir o cursor no parágrafo seguinte! • Ação: informe o número de objetos sentença ou parágrafo seguido do comando simples para mover o cursor por mais de um desses objetos! Objetos: Palavra e caractere com palavra 21
  • 23. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF • Ação: digite ’ E ’ ou ’ e ’ (considera pontuação) para avançar o cursor para o final da palavra seguinte! • Ação: digite ’ B ’ ou ’ b ’ (considera pontuação) para recuar o cursor para o inicío da palavra anterior! • Ação: digite ’ W ’ ou ’ w ’ (considera pontuação) para avançar o cursor para o primeiro caractere da palavra seguinte! • Ação: informe o número de palavras que deseja avançar ou recuar seguido dos comandos ’ E ’ ou ’ B ’! Buscando Busca nas linhas: • Ação: digite "f ’caractere’ "para mover o cursor até a primeira ocorrência do caractere espe- cificado encontrada após a posição atual do cursor! • Ação: digite "F ’caractere’ "para mover o cursor até a primeira ocorrência do caractere especificado encontrada antes da posição atual do cursor! • Ação: digite "t ’caractere’ "para mover o cursor até a posição imediatamente anterior à primeira ocorrência do caractere especificado encontrada após a posição atual do cursor! • Ação: digite "T ’caractere’ "para mover o cursor até a posição imediatamente posterior à primeira ocorrência do caractere especificado encontrada após a posição atual do cursor! • Ação: informe um valor numérico antes de um dos comandos de busca de caracteres na linha corrente para encontrar a sua enésima aparição! • Ação: digite ’ ; ’ para reaplicar a última busca realizada e sua movimentação de cursor ao próximo caractere que estiver à frente do cursor e ’ , ’ para fazer a mesma busca na linha atual para trás do cursor! Busca no texto: • Ação: digite ’/<texto>’ para encontrar a primeira ocorrência da string "texto"na linha após o cursor! • Ação: digitem /(c).(c) para buscar por uma ocorrência qualquer de um único caractere em uma determinada posição da string dada! • Ação: digite / s1 | s2 | s3 | s4 para buscar as ocorrências de todas as strings informadas! • Ação: digitem /ˆs para procurar as ocorrências da string ’ s ’ que estejam exatamente em inícios de linha! • Ação: digitem /s$ para procurar as ocorrências da string ’ s ’ que estejam exatamente em finais de linha! • Ação: digite /< s para encontrar a string em suas ocorrências que iniciem uma palavra! • Ação: digite / s> para encontrar a string em suas ocorrências que finalizem uma palavra! • Ação: digite /< s> para encontrar a string em suas ocorrências que sejam uma palavra! 22
  • 24. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF • Ação: digite / [ c c ] para buscar as ocorrências de todos os caracteres listados entre os colchetes! • Ação: digite / [ ˆc c ] para buscar as ocorrências de todos os caracteres que não estão listados entre os colchetes! • Ação: digite / [ c - c ] para buscar as ocorrências de todos os caracteres entre os colchetes que estão listados implicitamente na ordem de caracteres do escopo indicado pelo símbolo - ! • Ação: digite / [ c ]+ para buscar por uma ou mais aparições das possibilidades entre col- chetes! • Ação: digite / [ c ] * para buscar por nenhuma ou mais aparições das possibilidades entre colchetes! Transitando entre os modos Modo de inserção: • Ação: digite ’ a ’ para iniciar o modo de inserção com o cursor um caractere a frente da posição atual! • Ação: digite ’ I ’ (’ i ’ maiúsculo) para inciar o modo de inserção com o cursor no início da linha atual! • Ação: digite ’ A ’ para iniciar o modo de inserção com o cursor no final da linha atual! • Ação: digite ’ o ’ para inciar o modo de inserção com o cursor em uma nova linha imediata- mente abaixo da atual! • Ação: digite ’ O ’ para inciar o modo de inserção com o cursor em uma nova linha imediata- mente a cima da linha atual! • Ação: digite ’ s ’ para recortar o caractere sob o cursor e iniciar o modo de inserção! • Ação: digite ’ S ’ para recortar toda a linha corrente e inciar o modo de inserção no início da linha em branco! • Ação: digite ’ c ’ com um parâmetro de objeto para recortá-lo e iniciar o modo de inserção! • Ação: digite ’ C ’ para recortar todo texto que houver na linha corrente após a posição atual do cursor! • Ação: indique um valor numérico e digite quaisquer dos quatro comandos anteriores para realizar um comando personalizado! • Ação: digite <Ctrl>+R a partir do modo Normal para iniciar o modo de substituição! Modo de substituição: • Ação: digite <Ctrl>+R para iniciar o modo de substituição! Modo Normal de inserção/substituição: • Ação: digite <Ctrl>+o em modo de inserção ou em modo de substituição para, em modo Normal de inclusão, passar um comando de modo Normal e voltar a digitar! 23
  • 25. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF Modo visual: • Ação: digite ’ v ’ em modo Normal para entrar em modo visual e grifar exatamente o trecho de texto que deseja editar! • Ação: digite ’ V ’ a partir do modo Normal para entrar em modo visual do tipo linha e hachurar o trecho de texto a se editar por linhas! • Ação: digite ’ <Ctrl>+v ’ a partir do modo Normal para entrar em modo visual do tipo bloco e hachurar o trecho de texto a se editar por blocos e colunas! Modo visual de inserção/substituição: • Ação: digite ’ v ’ ou ’ V ’ ou ’ <Ctrl>+v ’ a partir do modo Normal de inclusão para acessar o modo visual de inclusão e seus tipos! Modo de seleção: • Ação: digite ’ gh ’ a partir do modo Normal para inserir ou deletar texto sobre um trecho selecionado! • Ação: digite ’ g_<Ctrl>+h ’ a partir do modo Normal para inserir ou deletar texto sobre um trecho selecionado linha a linha! • Ação: digite ’ gH ’ a partir do modo Normal para inserir ou deletar texto sobre um trecho selecionado por bloco! Modo de seleção de inserção/substituição: • Ação: digite ’ gh ’ ou ’ gH ’ ou ’ g_<Ctrl>+h ’ de dentro de um dos modos Normal de inclusão para entrar em modo de seleção de inserção ou de substituição! Modo "ex": • Ação: digite ’ Q ’ ou ’ gQ ’ para entrar no modo "ex"e passar diversos comandos de linha sem voltar para o modo Normal! Editando o texto Apagando o texto • Ação: digite (n) x para apagar (n) caractere(s)! • Ação: digite um comando de cursor para designar objeto, acompanhado de um valor numé- rico, se quiser, seguido de d para apagar o objeto designado! • Ação: digite dd ou D para apagar a linha sob a qual o cursor está atualmente! Copiando o texto • Ação: digite y acompanhado de um movimento de cursor para copiar o objeto designado com o comado de cursor para o buffer padrão! • Ação: digite "cy mais o objeto de texto para o copiar para um buffer com o nome do c dado! • Ação: digite :reg ou :di para ver os buffers atualmente nomeados! 24
  • 26. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF Colando o texto • Ação: digite (n) p para colar o conteúdo do buffer n vezes após o cursor! • Ação: digite (n) P para colar o conteúdo do buffer n vezes antes do cursor! • Ação: digite (n) g p ou P para colar o conteúdo do buffer n vezes e posicionar o cursor após o texto colado! • Ação: digite "c p para colar o texto armazenado no buffer de nome c! Desfazendo e refazendo comandos • Ação: digite (n) u para desfazer a(s) (n) última(s) ação(ões)! • Ação: digite (n) <Ctrl>+R para refazer a(s) (n) última(s) ação(ões) desfeita(s)! • Ação: digite U para desfazer todas as ações feitas na linha corrente! Substituindo ocorrências • Ação: digite : #,# s /expr1/expr2/ [opções] , sendo # um número de linha e #,# uma região do texto, para realizar substituições sobre as ocorrências encontradas! Ferramentans especiais Ferramentas de consulta • Ação: digite :h assunto para consultar o Vim sobre o assunto dado! • Ação: digite :version para ver a versão corrente do editor Vim! • Ação: digite ga sobre um caractere para saber seus códigos hexa e octadecimal e seu valor ASCII! • Ação: digite m c nomear a posição sob o cursor de c e ’ c para acessá-la! • Ação: digite ’ c e realize um comando para executá-lo sobre todo texto que estiver entre a posição atual do cursor e a posição marcada c! • Ação: digite : marks para ver a lista de marcas do texto atual! • Ação: digite :set number para numerar todas as linhas do texto e : set nonumber para desfazê-lo! • Ação: digite :set ruler para que o Vim nos indique a posição do cursor no texto! • Ação: digite :set smd para fazer o Vim sempre nos apresentar o atual modo de operação! • Ação: digite :set is para habilitar a busca imediata da string de busca na medida em que vai sendo digitada! • Ação: digite :set hls para hachurar as ocorrências encontradas de cada busca! • Ação: digite :split (arquivo) para abrir dividir a tela em janelas contendo diferentes textos visualizáveis simultaneamente! • Ação: digite vim arquivo1 arquivo2 no shell para abrir mais de um arquivo no Vim e :next e :prev para transitar entre os arquivos! 25
  • 27. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF • Ação: digite K sobre uma palavra que corresponda a um comando para consultar o manual do comando de dentro da sessão do Vim! Ferramentas de edição • Ação: digite r sobre o caractere a ser substituído seguido do novo caractere com o qual queremos substituí-lo! • Ação: digite ’ g ’ seguido de um comando de movimentação de cursor para trocar as letras minúsculas por maiúsculas e vice e versa! • Ação: digite J para juntar as linhas corrente e seguinte! • Ação: digite « e » para tabular o texto em modo Normal! • Ação: digite <Ctrl>+l para redesenhar a tela atual limpando as mensagens obsoletas! • Ação: digite . para repetir o último comando ou ação realizados! • Ação: digite :r arquivo para inserir o conteúdo de um arquivo dentro do texto em sessão atualmente! • Ação: digite #,# w arquivo para salvar o conteúdo entre as linhas # e # no arquivo dado! • Ação: digite :set ro para tornar a sessão do Vim somente leitura e proibir a escrita do arquivo! • Ação: digite :set ic para tornar o Vim insensível à diferença entre letras maiúsculas e letras minúsculas! • Ação: digite :! comando para executar um comando de shell de dentro do Vim! • Ação: digite :shell para inicar uma nova sessão shell a partir do Vim! • Ação: digite :!! comando para inserir a saída do comando de shell dentro do arquivo texto atual! • Ação: digite :X e informe uma chave para criptografar o texto corrente! • Ação: digite <Ctrl>+n para completar a palavra a ser digitada com alguma terminação antes digitada no texto! • Ação: digite n gq para quebrar ordenadamente as n linhas seguintes! • Ação: digite qc para inicar e q para finalizar a gravação de uma determinada seqüência de comandos, depois digite @c para executá-la nova e automaticamente! • Ação: digite :abbr abreviação abreviado para poder escrever palavras abreviadas que são convertidas automaticamente! 26
  • 28. Capítulo 5 Sobre o Vim Portabilidade • O Vim é portável para diversas plataformas, entre elas estão: • MS-DOS; • SGI; • Archimedes; • AmigaOS; • Atari; • MiNT; • BeOS; • MacOS; • MachTen; • OS/2; • RiscOS; • VMS; • Windows; • A/UX; • AIX; • BSDI; • Convex; • DYNIX/ptx; • DG/UX; 27
  • 29. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF • DEC Unix; • FreeBSD; • HPUX; • Irix; • MacOSX; • NetBSD; • NEXTS TEP; • OpenBSD; • OSF; • QNXS; • SCO; • Sinix; • Solaris; • SunOS; • SUPER-UX; • Ultrix; • Unixware; • Unisys. Suporte a linguagens Além de texto plano ASCII, o Vim tem suporte para textos em UTF- 8 ou em Unicode. Ou seja, suporte para alfabetos cujos caracteres são representados por mais de um byte, como os ideogramas do Chinês, do Japonês e do Coreano. O Vim suporta edição da direita-para-esquerda para línguas como Farsi e Hebreu. O Vim possui mais de duzentos arquivos de reconhecimento de sintaxe para a coloração de texto cuja extensão identifique uma linguagem ou formato de texto. Entre os formatos reconheci- dos estão: Linguagens: Ada, C, C++, Eiffel, Fortran, Haskell, Java, Lisp, Modula, Pascal, Prolog, Python, Scheme, Smalltalk, SQL, Verilog, VisualBasic; Programas matemáticos: Maple, Matlab, Mathematica, SAS; Texto de marcação: DocBook, HTML, LaTeX, PostScript, SGML-LinuxDoc, TeX, WML, XML; Saída de programa: diff, man; Arquivos de configuração: 4DOS, Apache, autoconfig, BibTeX, CSS, CVS, elm, IDL, LILO, pine, procmail, samba, slrn; Shell scripts e configuração: Shells: sh, bash, csh, ksh, zsh; Linguagens de script: awk, Perl, sed, yacc. Arquivos de sistema: printcap, .Xdefaults; 28
  • 30. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF Códigos Especiais: O Vim tem integração opcional com Perl, Tcl e Python; O Vim pode atuar como um servidor de automatização OLE sob o Windows; O Vim pode também ser instalado com código para X-Windows, adicionando menus configuráveis e suporte para o mouse. Licensa Ao contrário do Vi, o Vim é um editor gratuito e compatível com a lincensa GPL, General Public License da GNU. A GPL é a licensa de sofware livre mais difundida e usada no mundo, o que torna o Vim uma opção acessível a sistemas operacionais como o BeOS e os BSD e a distribuições linux como o Debian, que somente inclui em seu banco de pacotes oficiais códigos compatíveis com a GPL. Muitas vezes quando digitamos Vi no console estamos na verdade chamando o Vim ou um outro clone através de um alias. O criador Bram Moolenaar faz algumas pequenas resalvas a utilização do seu editor em sua licença. Para lê-la digite ":help license"em modo linha de comando. Um texto resumido em inglês escrito por ele próprio descreve essas resalvas: ————————————————————————- Vim is Charityware. You can use and copy it as much as you like, but you are encouraged to make a donation to orphans in Uganda. See |iccf| below. If you include Vim on a CD-ROM, I would like to receive a copy. Just so I know which Vim distributions exists in the world (and to show off to my friends sorriso). DETAILS There are no restrictions on distributing an unmodified copy of Vim. Parts of Vim may also be distributed, but this text must always be included. You are allowed to include executables that you made from the unmodified Vim sources, your own usage examples and Vim scripts. If you distribute a modified version of Vim, you are encouraged to send the maintainer a copy, including the source code. Or make it available to the maintainer through ftp; let him know where it can be found. If the number of changes is small (e.g., a modified Makefile) e-mailing the diffs will do. When the maintainer asks for it (in any way) you must make your changes, including source code, available to him. The maintainer reserves the right to include any changes in the official version of Vim. This is negotiable. You are not allowed to distribute a modified version of Vim when you are not willing to make the source code available to the maintainer. The current maintainer is Bram Moolenaar . If this changes, it will be announced in appropriate places (most likely www.vim.org and comp.editors). When it is completely impossible to contact the maintainer, the obligation to send him modified source code is dropped. It is not allowed to remove these restrictions from the distribution of the Vim sources or parts of it. These restrictions may also be used for previous Vim releases instead of the text that was included with it. ————————— ———————————————- O Vim, mais que gratuito, é um Charityware. A idéia de um Charityware é que os usuários que se sintam interessados e habilitados a coloborar de alguma forma (em geral financeiramente) com o software invistam não nele, mas no programa de caridade a ele associado, que é determinado pelo criador. Obviamente, os Charitywares são mantidos por indivíduos que preferem que se invista em caridade do que neles mesmos e logo, são voluntários. O editor Vim é um desses. Ele está associado a um programa holandês de suporte às crianças da Uganda. Para conhecer mais: http://iccf-holland.org. O texto abaixo, escrito pelo criador Bram Moolenaar, descreve um pouco o que ele pensa de Charityware e do programa associado ao Vim: Since Vim is open-source and freely distributable, users don’t have to pay to use it. Even so quite a few people who use Vim regularly expressed to me that they wanted to reward me for my work in some way. I didn’t really need extra money myself and didn’t like the idea of some people giving me money for a program that is free. That’s when I thought of the Charityware concept. The basic idea is that everybody who uses Vim is asked to donate to a charity. Thus the use of Vim is free, but if you think it’s worth something, give that money to a good cause. How did I chose the charity? Well, I have worked for a year as a volunteer with a project in the south of Uganda. This is an area that has been struck hard by AIDS. Estimates are that 10 to 30% of the adults are infected by HIV. Many parents die, leaving their children behind. The project helps these needy children in several ways. We find a new home for the child. We make sure the child can go to school, gets medical 29
  • 31. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF attention and care made to measure. After I returned from Uganda, my heart was still there. I decided the least I could do was to keep supporting the project by raising money for them. The connection to Vim was a very logical one. Thus now I’m asking Vim users to consider donating for the orphans in Uganda. I have also setup an adoption program. You can financially adopt a child, which means that the child gets long-lasting help, which is best for the child. Since we work only with volunteers and the money is directly sent to the project, almost all the money is really used in Uganda. História O editor Vim foi desenvolvido por Bram Moolenaar, um usuário do tradicional editor Vi. Suas origens remontam ao antigo e original editor do Unix, o Ed. Este, como os outros primeiros editores, rodava em terminais frequentemente sem monitores de vídeo como teletipos ou terminais lentos do tipo hardcopy. Portanto, para visualizar o texto normalmente era necessário imprimir suas linhas. O Vi começou a ser desenvolvido nesse contexto, por volta de 1976, a partir do ex, que era um editor orientado à linha baseado no ed. O conceptor do Vi, Bill Joy, um granduando da Universidade da California em Berkeley que depois veio a participar da fundação da Sun Microsystems, desenvolveu o Vi com o intuito de ser uma interface visual para o ex. Ao contrário deste, o Vi seria capaz de dispor de todo texto apresentado no monitor para edição, e não uma linha somente, e por isso seu nome: (V)isual (I)nterface. Um dia Bram Moolenaar adquiriu um Amigo, era o computador que veio ao mercado em 1985 e que era bem visto por seu poder de som e de vídeo e por seu sistema operacional multi-tarefa AmigaOS. Como este não era compatível com o editor Vi nem Moolenaar se satisfez com os clones que encontrou, ele pegou o que julgou ser o melhor, o Stevie, e começou a melhorá-lo com o intuito de torná-lo capaz de todos recursos de que o Vi dispunha. Em 2 de novembro de 1991, assim que seu editor passou a funcionar razoavelmente bem, na versão 1.14, ele o chamou de Vim, significando Vi IMitation, e o lançou em um domínio público do Amigo. Assim outros programadores passaram a o enviar patches e ajudaram a portá-lo para outras plataformas, como para o MS-DOS e para o Unix. Com o tempo o Vi IMitation, que era derivado do núcleo de um clone do Vi, havia sido tantas vezes reformulado e extendido com novas implementações que Bram Moolenaar sentiu-se no direito de chamá-lo de Vim, agora denotando Vi IMproved. Pequena linha do tempo do editor Vim até a versão 6.0 (O editor está hoje em sua versão 6.4.006) 1988 - Vim 1.00: Ainda Vi IMitation, nunca lançado publicamente; 1991 02 Nov - Vim 1.14: Primeira publicação (no Fred Fish disk #591); 1992 - Vim 1.22: Portado para o Unix. Agora Vi IMproved e compete com o Vi; 1994 12 Ago - Vim 3.00: Suporte para várias janelas e buffers; 1996 29 Mai - Vim 4.00: Graphical User Interface (por Robert Webb), mais tarde, Gvim; 1998 19 Fev - Vim 5.00: Coloração de sintaxe; 2001 26 Set - Vim 6.00: Folding, plugins, divisão vertical de telas, suporte a línguas; 30
  • 32. Capítulo 6 Trabalhando com o Vim Apesar de suas poderosas ferramentas de edição, o Vim foi designado para trabalhar com textos planos, ao contrário, por exemplo, de um processador de texto como o Open Office Writer. Suas funções mais importantes são, portanto, operações de edição básica de texto, como aces- sar, mover, visualizar, organizar, copiar, colar, apagar e inserir caracteres. Justamente por serem operações tão fundamentais é que suas ferramentas são tão versáteis. Como o editor foi conce- bido segundo os princípios econômicos e versáteis do Vi, o Vim não trabalha, em princípio, como um editor simplista. Os editores do tipo Vi são editores modais, ou seja, trabalham com modos. De certa forma, a maioria dos editores são modais em algum sentido, especialmente os gráficos (que não necessariamente precisa funcionar dentro de um gerenciandor de janelas), visto que além do cursor de inserção, também dispõe de menus estáticos e dinâmicos, como as barras de ferramentas e os menus de mouse. Podemos considerar comandos com as teclas de controle ou meta também usos de um modo de controle do editor, como ferramentas de manipulação de texto que não seja a inserção direta de caracteres no texto. O Vim, no entanto, é modal por excelência. Ele possui diversos ambientes a partir dos quais podemos editar. São oficialmente seis diferentes formas de acessar o texto, chamadas modos de operação, que oferecem diferentes ferramentas cada qual segundo seu contexto de edição, sendo tudo ergonomicamente acessível a partir do teclado. Nisto consiste o poder e a expansibilidade dos editores da família Vi. Como pôde ser notado no programa do curso, separado em duas partes, o trabaho no Vim (como provavelmente em quase todos os editores) pode ser dividido em dois grandes tipos de tarefas. O primeiro tipo de tarefa é o trabalho de acessar as diferentes partes do texto, tanto com a visualização que se obtem com a movimentação da tela sobre o texto quanto com a movimentação do cursor e com as buscas de ocorrências e marcações de texto, este tipo de tarefa não envolve ferramentas quem afetem o texto acessado, por serem apenas comandos de consulta. O segundo tipo é o trabalho de edição propriamente dito, ou seja, aquele que visa modificar um arquivo segundo nossas in- teresses. Este trabalho inclui saber tanto os comandos básicos de edição quanto as ferramentas especiais que facilitam a edição, o que tipicamente é alcançado com uma boa configuração. Esse é o modelo de possibilidades de uso de um editor de texto, mas para que saibamos fazê-lo no Vim, deveremos conhecer alguns de seus segredos, como os papéis dos modos de operação e sua sintaxe de comandos padrão, entre outros. Em seguida descrevo todo o programa do curso, que por motivos técnicos foi dividido em duas partes, mas enfatizo que essa divisão do programa não tem base nas semanas do curso nem baseia um cronograma. Para saber a divisão semanal do curso procure a seção "Plano de curso". A primeira parte Após serem apresentadas estas preliminares, estudaremos o Vim como um programa (antes 31
  • 33. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF de um editor) como interagir timidamente com o editor em suas funções fundamentais de ope- ração, como abrir um arquivo, salvá-lo e sair do Vim. Imediatamente depois, para que se possa inciar o aprendizado das ferramentas e dos comandos do Vim, serão apresentados os princípios da sintaxe Vi de comandos padrão. Enfim, para terminar a primeira parte, aprenderemos a con- sultar, ler e pesquisar, ou, se quiser, a navegar por um texto utilizando ferramentas específicas de movimentação de texto, de cursor e de busca de ocorrências. A segunda parte Visto o editor como um todo, sua sintaxe e suas ferramentas de visualização e de acesso ao texto como um todo, vamos estudar com detalhes como transitar entre os modos de operação e seus derivados, como prerequisito para o passo seguinte. Sabendo disto tudo, estamos prontos para aprender a fazer aquilo que é mais central em qualquer editor de texto: a editar um texto. Aprenderemos a realizar no Vim (ou seja, de todas as maneirs imagináveis) os comandos básicos de edição como copiar, colar e deletar, para tanto, farei uma breve vistoria sobre como manipular comandos. Por fim, na medida do possível, iniciar-los-ei nos bastidores do Vim, e veremos o que faz do Vim mais do que um editor de texto plano muito versátil, mas praticamente um processador de texto sem codificação. Ou seja, apresentarei os princípios da configuração do Vim e alguns recursos especiais. Convencionando Como estudaremos tantas ferramentas juntos e certamente nos depa- raremos com dificuldades pessoais diferenciadas assim como tanto com previstas quanto com inusitadas complicações com respeito a construção de comandos, penso ser sensato determinar certas ditas convenções, que de convencionado mesmo não têm nada, já que infelizmente fui somente eu que as decidi. Enquanto nas ações propostas durante as lições, listadas no livro de consulta Guia de comandos, apresentarei os comandos literalmente, sempre que eu escrever um comando dentro de um texto o colocarei entre aspas, sugerindo que aquele trecho do texto deve ser entendido em uma meta-linguagem, em outro contexto, ou seja, que para a oração atual ele será sempre só um substantivo. Pelo mesmo motivo apresentarei caracteres em aspas simples quando em uma frase de texto e os caracteres que devam ser interpretados como letras entre as- pas duplas. Vale notar que eventualmente alguns trechos podem estar despadronizados apesar das revisões, neste caso, estarei sempre disponível para esclarecimentos. Os termos em inglês que aparecerão ao longo do curso estarão todos em itálico e serão esclarecidos, caso contrário, o que também vale para termos técnicos em português, um link nos levará facilmente à entrada do texto no glossário Wiki. Na apresentação dos comandos, vez ou outra me referirei a teclas presentes nos teclados em geral, e apresentarei elas no formato <Esc>, <Enter>, <Shift>, etc. Quando o pressionar de um tecla se seguir do dígito de um caractere, representarei o comando ligando as duas partes com o símbolo ’ _ ’ , como em "g_<Ctrl> ", o que significa simplismente que primeiro digitamos uma vez ’ g ’ e depois apertamos uma vez <Ctrl>. Obviamente, algumas teclas não operam por conta própria, como no exemplo. Nestes casos o formato da representação será como em "g_<Ctrl>+h ", que significa que se deve apertar uma vez ’ g ’ e depois digitar ’ h ’ enquanto se segura a tecla <Ctrl>. Não farei isso com a tecla <Shift> em todos os casos, pois ao me referir às letras maiúsculas em comandos simplismente as escreverei em maiúsculas. Por fim, mais a frente no curso aprenderemos sobre a estrutura sintática dos comandos do Vim e suas partes, e além de as nomearmos as associaremos a letras que serão usadas na apresentação de comandos ou, no caso, de projetos ou formatos de comandos. Quando me referir com as letras a essas entidades, no entanto, as escreverei em itálico para evitar que as confundemos com dígitos de comandos reais. Não se preocupem, tudo isso ficará claro. Por enquanto farei apenas algu- mas associações importantes para a leitura de algumas partes do curso: c = caractere - significa um caractere qualquer; s = string - significa uma string qualquer, ou seja, um trecho de texto ou um conjunto qualquer de caracteres concatenados. 32
  • 34. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF A interface do Vim Mas como será a cara do Vim? Pois bem, mais uma vez, não vou mentir. É importante que reconheçam anteriormente algumas das indiossincrasias exóticas do Vim para que não se atrapalhem posteriormente com seu uso. O Vim, no lugar de linhas vazias, tem tils ’ ’. O Vim, quando no modo padrão de operação, não imprime os comandos digitados, fazendo parecer que nada está acontecendo. O cursor do Vim não se mete entre os caracteres, ele os sobrepõe. O cursor, além disto, não tem independência da tela, e se movermos a tela sobre o texto, o cursor nos acompanhará, saindo da posição em que o deixamos. Se "mal"configurado, o editor pode sequer nos informar o modo de trabalho em que nos encontramos e o mouse não funcionará. Não existem, senão na versão gráfica Gvim, nem botões nem quaisquer tipos de menu acessáveis. É claro, dependendo da configuração de cores do terminal, seu editor texto será uma simpática tela preta. E, por fim (?), não há nenhum "X "para se clicar quando se quer sair. Acreditem, todas essas características são, na verdade, admiráveis. Com o uso vamos todos aprendendo a extrair as virtudes de toda essa versatilidade pitoresca. O Vim, por trabalhar com texto plano, tem privilégio em trabalhar facilmente com textos enquanto quadros. Os caracteres são posicionados cuidadosamente uns sobre os outros, permitindo-nos utilizar um conjunto todo de comandos que se aplicam ao texto como a uma tabela. Devemos pensar que no Vim, portanto, existem linhas e colunas dentros das quais os caracteres podem se posicionar. Porém não deixem de compreender que no Vim nem sempre o primeiro caractere da linha estará na primeira coluna do texto, pois as linhas podem ser iniciadas por espaços e tabulações. Dêem uma olhada na apresentação do Vim. Observe como o cursor está na primeira linha e sobre o primeiro caractere da linha, ou seja, na primeira coluna, como indicado no canto inferior direito. Vejam também como o Vim está nos informando sobre que modo de operação o Vim se 33
  • 35. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF encontra, no caso o modo de inserção, em inglês insert mode. Em baixo disto, o Vim reserva um espaço para interagir conosco nos informando sobre as nossas ações e sobre as dele. 34
  • 36. Capítulo 7 Modos de operação Os modos de operação são simplesmente formas de se trabalhar o texto, ou seja, maneiras diferentes de que dispomos para acessá-lo. É nos modos de operação que consiste a estratégia inteligente de trabalho que o Vim propõe: "Você quer editar um texto? Escolha um caminho."Nos manuais oficiais do Vim, escritos pelo próprio Bram Moolenaar, assim como em boa parte dos livros e tutorias, diz-se existirem seis modos básicos de operação e cinco modos derivados que resultam de algumas possíveis combinações entre os modos básicos ou de recursos especiais de um modo. Porquanto ". "designa o modos básicos e - "seus modos derivados, a lista oficial dos modos de operação é: . Modo Normal (padrão); - Modo pendente; - Modo Normal de inserção; . Modo de inserção; - Modo de substituição; . Modo de seleção; - Modo de seleção de inserção; . Modo visual; - Modo visual de inserção; . Modo linha de comando; . Modo ex. No entanto, nas páginas de ajuda oficiais do Vim, acessíveis com "help"em modo linha de comando (ou seja, digintando ":help"em modo Normal, o padrão de entrada) também escritas pelo criador, não vemos nenhuma lista de modos de operação, mas somente links na primeira página para três ambientes que ele chama de modos, nesta ordem: . O modo Normal; . O modo visual; . O modo de inserção. Isso se deve provavelmente a uma escolha de cunho didático, visto ser um manual de ajuda e que, ao longo das páginas, podemos encontrar referências a outros modos. Caso tenham inte- resse, pode-se encontrar os manuais em modelo formal de todas as versões da 5.0 à 6.4 assim como os manuais de ajuda e links para outros tutoriais e FAQs em "http://vimdoc.sourceforge.net". Também existem manuais e tutoriais que consideram haver somente dois grandes modos, o Nor- mal, às vezes chamado de modo aberto, e o modo de inserção, sendo todos os outros derivados destes, se forem considerados modos. Eu, entre outros, gosto de pensar que são na prática sete modos básicos de operação, visto que o modo variante de substituição pode ser considerado um modo a parte. Considerarei haver, portanto, sete modos básicos de operação na prática. O modo pendente, por sua vez, não necessariamente precisa ser considerado um modo distinto, visto ser uma propriedade do modo Normal. Logo, a lista na prática será: . Modo Normal (padrão); - Modo Normal de inserção/substituição; . Modo de inserção; . Modo de substituição; . Modo de seleção; - Modo de seleção de inserção/substituição; . Modo visual; - Modo visual de inserção/substituição; . Modo linha de comando; . Modo ex. Esta lista é de longe mais razoável para nós, usuários, visto que para entender os modos derivados basta reconhecermos que existem três modos que trabalham em conjunto com os dois modos de inclusão de caracteres (inserção e substituição): o modo Normal, o visual e o de seleção. A princípio, se iniciarmos o Vim normalmente, entramos sempre no modo Normal (ou modo de comando). Podemos, no entanto, passarmos parâmetros para ele na sua chamada na 35
  • 37. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF linha de comando, ordenando-o a, entre outras coisas, iniciar um determinado modo. Veremos isso na segunda lição. De dentro do modo Normal, temos acesso a todos os outros modos, podendo chamá-los através do teclado com comandos reservados simples. Veremos agora uma descrição da função de cada modo de operação, seguida do comando básico através do qual podemos iniciá-los. 1 Modo Normal O modo Normal, também chamado de modo de comando, é o modo padrão do Vim, não somente com o qual o editor abre em uma inicialização usual, mas é o modo mais fundamental, a partir do qual se tem acesso à todos os outros. Ele é capaz de realizar todas as operações básicas da edição de texto e de controle de comando e de janelas, além de chamar os outros modos e de oferecer recursos especiais que aprenderemos mais tarde, como criar marcas e outras ações simples. Este modo é acessado a qualquer momento de qualquer modo com o simples apertar de tecla de controle "esc". Caso seu teclado não possua a tecla "esc", pode ser tentado ˆ[ ou ˆ3 , ou ainda alguma tecla <meta> que o teclado venha a possuir. De dentro do modo Normal são realizados comandos sem a espera da tecla de retorno, o "Enter". Os comandos digitados são ou processados imediatamente após sua digitação, que é realizada com um ou com poucos caracteres simples ou com combinações da tecla "Ctrl", ou esperam alguma espécie de parâmetro. O parâmetro algumas vezes é necessário após habilitarmos, com uma combinação de "Ctrl", certo tipo de controle e enfim passamos o comando de fato, e em outros casos o editor espera mudarmos de modo de operação para que o comando digitado seja aplicado. Ou seja, quando digitamos alguma coisa no modo Normal, ou o comando não é reconhecido (o que é informado, caso configurado adequadamente), ou ele entra em um outro modo, ou ele processa uma operação de edição, ou ele espera entrarmos em um dos dois modo de inclusão de caracteres para realizar uma ação especial (veremos em breve) ou ele espera um parâmetro simples para indicar o uso e completar o comando. Esta última situação é o que oficialmente é o variante modo pendente. O (outro) modo derivado do modo Normal é o modo Normal de inserção, que é acessado com o comando "Ctrl-o"em modo de inserção. Ele funciona como o modo Normal, mas só nos permite fazer uma operação e ele volta automaticamente para o modo de inserção. 2 Modo linha de comando O modo linha de comando se destina ao que podemos chamar de meta-comandos, que dizem respeito ao controle do próprio programa e dos arquivos. Ele é o ambiente de onde configuramos a sessão de edição, de onde acessamos salvamos e fechamos arquivos de texto e de onde saimos do Vim. É esperado de nós a tecla de retorno, ou "Enter", para o processamento do comando, e por isso sua analogia à linha de comando. Todas essas operações são anunciadas ao Vim por meio do caractere ": ", que o informa a presença do que chamei de meta-comando. Este modo também realiza outro tipo de operação, que diz respeito ao acesso às partes do texto. Com o caractere "/ ", amplamente convencionado em ambientes linux, podemos fazer buscas por ocorrências altamente especificáveis de expressões e manipulá-las, deletando-as, substituindo- as, etc. Existe uma sintaxe particular para a busca por ocorrências de texto, o que será explicado ainda na primeira semana. Com o caractere "? "fazemos buscas para cima do cursor, e com "! "filtramos comandos para, por exemplo, realizarmos um comando de Shell de dentro do Vim. Todo este modo é altamente editável, ou seja, existem várias ferramentas exclusivas para facilitar a elaboração de comandos neste modo. Estudaremos elas ainda na primeira semana. Acessamos o modo linha de comando, enfim, inciando nosso comando com algum destes caracteres ": / ? ! "a partir do modo Normal, mas, em princípio, sempre que me referir ao modo linha de comando, ou à linha de comando do Vim, estarei falando de comandos inciados com dois-pontos, ": ". Nos casos em que me referir aos outros usos deste modo tornarei claro se trato de uma busca, para 36
  • 38. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF frente ou para trás, ou de um comando filtrado. 3 Modo "ex" O modo ex poderia ser, e inclusive é, considerado por alguns como uma variante do modo linha de comando, visto que nele se opera de maneira praticamente idêntica. A diferença está no controle que temos sobre a linha de comando. Enquanto em linha de comando se espera que realizemos uma operação e voltemos para o modo Normal, em modo podemos efetuar quantos comandos quisermos e nos manter como em linha de comando. No modo ex, portanto, não temos que continuar digitando ": "a cada comando e a tela não é atualizada listando cada operação que fazemos. Por este último motivo o modo ex é ideal para que configuremos o Vim em pleno uso com um script "on-line". Para entrar em modo ex, digitamos "Q ". Também podemos iniciá-lo com "gQ ", o que, é claro, funciona de forma ligeiramente diferente. Enquanto com "Q "as linhas de comando são manipuláveis somente com os comandos padrões de inserção de linhas, ou seja, com <bs>, <del> e comandos como "Ctrl-u", "Ctrl-e", etc., o modo ex iniciado com "gQ "é editável com todos os recursos do modo linha de comando, como completar automaticamente palavras, por exemplo. 4 Modo de inserção Este modo funciona como um editor normal, que dispõe um cursor e espera a entrada de caracteres a serem incluídos diretamente no texto. Entramos em modo de inserção com o co- mando simples "i ", a partir do modo Normal, mas existem diversas outras maneiras de acessá-lo, como "I ", "a ", "A ", "o ", "O ", "c ", "C ", "s "e "S ". Podemos utilizar o modo de inserção assim como o modo de substituição (ou seja, os modos de inclusão de caracteres, como estou cha- mando) também em combinação com os modos Normal, visual e de seleção o que é explicado nas respectivas seções. 5 Modo de substituição Este modo é um modo variante do modo de inserção segundo a lista oficial de modos mas po- demos considerá-lo um modo básico dado que ambos desempenham os mesmos papéis apesar de dispor de menos alternativas de ativação. O modo de substituição é utilizado como o modo de inserção, mas sobrepõe, ou ainda melhor, substitui caracteres do texto com os caracteres di- gitados ao invés de inseri-los ao lado. É o recurso "Insert"que a maioria dos teclados possui e que todos editores de hoje reconhecem. Inclusive, a tecla "Insert"é uma das maneiras de entrar em modo de substituição. Outra, a que recomendo, é apertando "R "em modo Normal. Podemos utilizar o modo de substituição, assim como o modo de inserção (ou seja, os modos de inclusão de caracteres, como estou chamando), também em combinação com os modos Normal, visual e de seleção, o que é explicado nas respectivas seções. 6 Modo visual O modo visual pode ser visto como uma extensão útil do modo Normal, visto que temos acesso às mesmas operações de edição. Este modo é destinado à seleção de um trecho de texto com a movimentação dos cursores, que formam como uma hachura sobre as linhas a se- rem selecionadas. Passamos comandos então como em modo Normal para manipular o trecho marcado. Ele funciona como qualquer editor visual com suporte a mouse, e inclusive pode-se configurar o próprio Vim para suportar a utilização do mouse. Este modo é acessado com o ca- ractere "v "em modo Normal. Existe um recurso do modo visual que praticamente poderia ser considerado um modo derivado, que é o bloco visual, ou visual block. Ele é acessado com "Ctrl- v"a partir do modo Normal. Com ele podemos selecionar blocos quadrangulares de texto, como se ele fosse uma tabela ou um quadro de caracteres sem linha, nos permitindo selecionar, por exemplo, somente uma coluna de texto para manipulação. Semelhante a este recurso é o visual line, acessível com "Shift-v"a partir do modo Normal. 7 Modo de seleção 37
  • 39. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF O modo de seleção é semelhante ao modo visual, mas ele não trabalha em cooperação com o modo Normal, ou seja, o modo de seleção não aceita comandos como o visual. Ao contrário, caso seja digitado qualquer caractere imprimível entra-se em modo de inserção, ou seja, sua utilização é análoga a de um editor de texto visual simplista. Este modo é acessado através do comando "gh", de dentro do modo Normal. "Ctrl-g", a partir do modo visual, é uma das outras alternativas que serão apresentadas mais tarde. Existem também os recursos de selection block e selection line no modo de seleção, ativados com "gH"e com "g_Ctrl-h"respectivamente. 38
  • 40. Capítulo 8 Lição 1 - Interagindo com o Editor 8.1 Entrando Agora já conhecemos o que é o Vim e temos uma boa noção das suas características, das suas peculiaridades operacionais e da sua história. Então, estamos prontos para aprender a editar de fato? Nossa primeira dificuldade técnica a ser enfrentada é abrir o editor de texto. Estejam com seus terminais de linha de comando preparados para evocar o grande editor. Agora digitem a palavra ’vim’. Pronto, primeira fase concluída! Ação: digitem ’vim’ na linha de comando para entrar no Vim! 8.2 Saindo 39
  • 41. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF Nessa tela podemos ver uma introdução simples e simpática ao ambiente de edição que nos informa o nome do programa, VIM - Vi IMproved, o número da sua versão do programa (que caso seja anterior à 5.0, é aconselhável uma atualização), o nome do principal criador, Bram Moolenaar, e o aviso orgulhoso de que o código do Vim é aberto e de que sua distribuição é gratuita. Em seguida ele apresenta uma frase aleatória que pode ser um convite para que nos registremos, um pedido para que demos alguma contribuição com o programa de ajuda das crianças da Uganda ou qualquer outra. Em seguida ele nos informa sobre dois comandos vitais no uso do Vim: ’:help’ e ’:q’. Com o ’:help’ a partir do modo Normal podemos consultar o manual completo de ajuda de comandos de edição, de modos de operação e de controle do programa em geral além de outros textos relativos ao Vim, cuja importância não diz respeito exclusivamente à sua operacionalidade. Entre esses arquivos de textos estão a licença, o texto de registro descrevendo as alterações da versão e um texto mostrando as diferenças entre o Vim e o Vi. Com o ’:q’ a partir do modo Normal, ou seja, no modo padrão de entrada também acessível com ’Esc’ a partir dos outros modos, saímos do Vim caso não tenhamos realizado nenhuma tarefa de edição. Vamos testar: digitem ’:q’ (sem os apóstrofes, é claro). ’ q’, em inglês, é quit o que também funciona se digitado. Ação: digitem ’:q’ para sair caso não tenham efetuado nenhuma edição! 8.3 Escrevendo Agora retornem para o Vim digitando ’vim’ na linha de comando novamente. Nós conseguimos sair mas também não fizemos nada! Isso não adiantou em muita coisa. Vamos iniciar uma edição então digitem alguma coisa como "text". Parabéns, não apareceu nada! Isto aconteceu porque estamos em princípio no modo Normal e a partir dele não podemos inserir caracteres novos. Portanto, como aprendemos, digitem ’i’ a partir da tela inicial do Vim. Porém se você fez como foi dito provavelmente terá que digitá-lo duas vezes. Pronto! Como aprendemos, ’i’ inicia o modo de inserção. Ação: digitem ’i’ para entrar em modo de inserção de caracteres! 8.4 Saindo sem salvar Enfim, escrevam! Neste modo qualquer um sabe se virar, pois o modo de inserção se com- porta como um editor simples. Enquanto escrevemos, o texto que editamos está em um buffer reservado pelo Vim na memória, que ainda não o associa a arquivo nenhum. Para sairmos do Vim agora não basta digitar ’:q’, inclusive porque estamos em modo de inserção, portanto, voltem para o modo Normal apertando ’Esc’ e em seguida tente sair com ’:q’. O Vim nos informa de que não salvamos o texto desde sua última modificação, ou seja, ele está dizendo que o texto que está atualmente na memória não foi escrito no disco rígido para que seu acesso seja pos- sível posteriormente. Sim - dizemos - nós sabemos que ele não foi salvo, agora nos deixe sair! Pois bem, como o Vim (ainda!) não consegue nos ouvir, precisamos informá-lo de que estamos conscientes do fato de não havermos salvado o texto e que ainda assim queremos sair. Fazemos isso com o caractere ’!’ após o comando (de modo linha de comando). Esse caractere significa alguma coisa como "Faça isso e não me pergunte nada!", ou "Sim, eu sei o que eu estou fazendo, 40
  • 42. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF acredite em mim!". Seu funcionamento lembra o parâmetro ’-f’ presente em muitos comandos Unix. Digite, portanto, ’:q!’. Pronto, de volta ao terminal. Ação: digitem ’:q!’ para sair mesmo havendo efetuado modificações! 8.5 Salvando 1 Grande coisa, não?! Conseguimos entrar em um editor de textos, escrever e sair sem sal- var! De que isso adianta? Nada! Entre no Vim novamente (’vim’). Entre no modo de inserção novamente (’i’)’. Digite um texto novamente e retorne para o modo Normal (’Esc’). Agora vamos salvar o texto antes de sair. Digite ’:w’ para salvá-lo. ’ w ’ vem de write, do inglês, e o comando nesse formato também é reconhecido. Infelizmente, o Vim não sabe com que nome ele deve escrever seu texto em disco. Portanto, informe o nome do arquivo após o comando desta forma: ’:w nomedoarquivo’. Pronto! salvamos o texto no disco! Ação: digitem ’:w nomedoarquivo’ para salvar o texto em um arquivo no disco! 8.6 Salvando 2 O lugar onde o texto foi guardado é por padrão o diretório a partir do qual chamamos o Vim da linha de comando, ou seja, justamente onde iremos quando saímos dele. Vamos ver? Digite ’:q’, que agora funcionará já que não há uma modificação sequer que não tenha sido salva. Com o comando Unix ’ls’ listamos parte do conteúdo do diretório atual. Entre os arquivos listados devemos encontrar aquele que criamos. Para lê-lo podemos digitar, por exemplo, ’cat nomedoarquivo’ e conferir se esse tal de Vim funciona mesmo. Voltemos ao Vim. Agora queremos realizar uma última edição do nosso texto, então digite ’vim’ novamente para entrar no editor. Ora, mas onde está meu texto? Será que eu só posso editar textos novos!? Imagina! Vamos chamar o texto de dentro do Vim. Digite o comando de linha de comando ’:e nomedoarquivo’. Olha ele aí! Que beleza esse Vim. Façam suas modificações a partir do modo de inserção (’i’) e retornem depois para o modo Normal (’Esc’). Percebam que agora o Vim sabe a que arquivo o texto em edição está associado, logo não é mais necessário informar o nome do arquivo para salvá-lo, podendo o comando ser simplesmente ’:w’. Ação: digitem ’:w’ para salvar o arquivo cujo conteúdo está atualmente em edição! 8.7 Salvando e saindo Queremos agora salvar e sair ao mesmo tempo, afinal o que o Vim teria de rápido e eficiente se ele fosse todo burocrático? Digite ’:wq’. Perceba que concatenando dois comandos eles funcionam perfeitamente! Outros comandos existem para realizar a mesma operação: ’:ZZ’ e ’:x’ Ação: digitem ’:wq’ para salvar e sair imediatamente! 8.8 Abrindo um arquivo 1 Apesar dos comandos no formato ’quit’ e ’write’ serem reconhecidos, os comandos concate- nados devem ser abreviados. Para conferir o conteúdo do arquivo a partir do Vim digite na linha de comando do seu Linux ’vim nomedoarquivo’. O arquivo será aberto em modo de edição. 41
  • 43. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF Ação: digitem ’vim nomedoarquivo’ para inciar o Vim já automaticamente chamando um ar- quivo para edição! 8.9 Salvando 3 Podemos chamar inclusive mais de um arquivo para a sessão do Vim simultaneamente com o mesmo comando no formato: ’vim arq1 arq2 arq3 (...)’. Veja como ele reconhece o seu comando e informa na parte inferior o nome do arquivo e a quantidade de linhas e de caracteres existentes no texto. Caso queiram gravar esse texto em outro arquivo, já sabem, não é mesmo? Digite ’:w outroarquivo’ e continue editando o texto, pois o Vim continuará o associando ao arquivo original, diferentemente de outros editores de texto. Esse comando funciona como um "salvar como". Ação: digitem ’:w outroarquivo’ para gravar o texto atual em um outro arquivo que não seja aquele já chamado! 8.10 Abrindo um arquivo 2 Logicamente, podemos portanto salvar nosso texto com outro nome de arquivo e também sair imediatamente! Basta digitarmos ’:wq outroarquivo’. Ação: digitem ’:wq outroarquivo’ para salvar outro arquivo e imediatamente sair do Vim! Para terminar vamos aprender uma alternativa para o problema de querermos abrir um ou mais arquivos já de dentro do Vim. O comando edit (do inlgês), que também funciona, tem sua versão abreviada ’:e’. Com ’:e nomedoarquivo’ abrimos um arquivo de dentro do Vim. Se quiser, tente! Ação: digitem ’:e’ de dentro do Vim para abrir o arquivo desejado sem ter que voltar ao shell! 42
  • 44. Capítulo 9 Lição 2 - Sintaxe dos comandos 9.1 Parte 1 / 7 | Operadores de controle Atenção: esta lição não tem questão ao final. Seu objetivo é que a passagem de comandos seja facilitada, mas caso se sinta seguro quanto a sintaxe de comandos (de modo Normal) do vim ela é dispensável. O que aqui chamamos de operadores de controle não são exatamente as famosas teclas de controle, como <Ctrl>, <Shift>, etc. No Vim, os operadores de controle são todas as teclas e caracteres que não realizam uma ação propriamente dita nem imprimem texto (mesmo que seja de um comando). Eles habilitam outros comandos (tipicamente <Ctrl>, mas não somente), como na função típica das teclas de controle. Além disso manipulam a ambientação e o uso do Vim, como os caracteres de transição de modos e a tecla <Esc>. 9.2 Parte 2 / 7 | O paradigma Vi O chamado paradigma Vi envolve três variáveis cujas combinações quando executadas reali- zam diferentes tarefas de edição: verbo, número e objeto. Esses três argumentos juntos compõe uma ação e estão presentes, ainda que ocultos, em todos os comandos de edição em modo Normal. A lógica é: faça isto nesta quantidade de objetos. Não obstante o verbo ser certamente o parâmetro fundamental, cada uma das variáveis podem ser ocultadas em determinadas situa- ções. Neste caso, a quantidade padrão é 1 (um) e o verbo padrão é mover o cursor. Em geral, os caracteres são o objeto padrão, sendo as linhas o objeto secundário. O objeto, caso seja oculto, é inferido a partir da direção (e não do sentido) para a qual apontamos; apontar horizontalmente implica que o objeto é um caractere e apontar verticalmente implica que o objeto em questão é uma linha. 9.3 Parte 3 / 7 | Objetos de texto Pode ser dito que o Vim é um editor orientado a objetos. Como assim? Isso quer dizer que o Vim possui a capacidade de reconhecer objetos de texto como caracteres, linhas e parágrafos, sobre os quais podemos realizar tarefas. Para o Vim, nem que seja implicitamente, realizamos edições sempre sobre um determinado objeto ou sobre um conjunto de objetos especificáveis. Estes objetos podem ser: 43
  • 45. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF . Caracteres; . Palavras; . Sentenças; . Linhas; . Parágrafos; . Todo o texto; . A string de uma busca; . Posição de Parênteses e de todo tipo de delimitadores (até comentários em C!). Como eles são de espécies diferentes, algumas utilizações também serão diferentes. Há de notar que existem ações que dizem respeito a um objeto inteiro ele mesmo e ações que usam o objeto como medida para selecionar uma região de ação no texto. O uso de todos objetos, porém, é relativo à posição do cursor, mesmo quando a ação é mover o próprio cursor para um determinado objeto (ou por um determinado objeto, no caso de uma ação que usa o objeto como medida de região de texto). Neste caso, em que a ação é o simples mover do cursor, existe a exceção de querermos mover o cursor segundo um objeto absoluto, como é qualquer um que diz respeito ao texto como um todo, como o ’início do texto’ ou o ’final do texto’. Somente neste caso o uso do objeto não é relativo ao cursor, pois mesmo quando sabemos que o uso do objeto não será outro (como cópia, colagem e deleção), mas será para o simples movimento do cursor, temos de saber também a posição desse cursor para identificarmos sua ação específica. 9.4 Parte 4 / 7 | Verbos Basicamente, exitem dois tipos de verbos: os simples, cujo objeto são sempre caracteres, e os verbos pendentes, que esperam a entrada do parâmetro ’objeto’ para executarem uma ação. Ou seja, o primeiro tipo de verbo pode receber somente um parâmetro numérico, que caso seja omitido será tido como sendo o valor ’1’. Já os verbos compostos recebem além do parâmetro numérico um que indica sobre qual objeto o verbo deve realizar a sua ação. Esse objeto, por sua vez, pode ser indicado de diversas maneiras distintas caso seja utilizado no seu lugar um operador de controle ou um caractere direcional. Um caso extremamente interessante de pendência de verbo é o de comandos que utilizam uma string inserida no texto em uma sessão de modo de inclusão como objeto de sua ação. Isso significa que entrar em modo de inserção, por exemplo, pode ser parte de um comando de edição, e a string inserida o objeto de ação. Alguns dos verbos básicos são: . Mover cursor; . Deletar; . Copiar; . Colar; . Recortar; . Buscar ocorrências; . Desfazer; . Refazer. Só existe uma ação que suporta a omissão do verbo: a movimentação do cursor. Podemos montar um comando para mover o cursor com a indicação de um número e de um objeto, ou seja, com a indicação de por quantos objetos de texto de um certo tipo o cursor andará e apontar a direção da ação com o uso de um dos direcionais. Como essa é uma ação que permite a omissão tanto do valor numérico quanto do objeto, se omitimos o verbo realizamos o único comando completamente omisso. Em outras palavras, mover o cursor é ação padrão que é realizada automaticamente com o uso dos direcionais. 9.5 Parte 5 / 7 | Valores de quantidade Um dos parâmetros que podemos passar para comandos é o parâmetro numérico. Este, em geral, refere-se ao número de objetos do tipo designado que serão incluídos da solução do comando. Por exemplo, podemos querer remover as duas, quatro, oito ou todas as próximas palavras. Outros verbos, no entanto, reagem de forma ligeiramente diferente ao parâmetro nu- mérico, lendo o valor como uma descrição objetiva de algum tipo de objeto numerável, ou seja, indentificável numericamente, como, por exemplo, as linhas. 44
  • 46. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF 9.6 Parte 6 / 7 | Os direcionais Os editores da família Vi disponibilizam quatro caracteres que têm a função tanto de suprir a ausência das teclas de setas direcionais em certos teclados quanto também oferecer uma dis- posição espacial das teclas de controle que seja ergonômica e eficaz. São, portanto, caracteres cujas teclas fazem parte do centro da região direita do teclado. As teclas são ’h’, ’j’, ’k’ e ’l’. Elas desempenham em modo Normal, respectivamente, as funções das setas para a esquerda, para baixo, para cima e para a direita. Os caracteres direcionais, assim como as setas, não devem ser entendidos como comandos simples, como seria natural visto que em modo Normal existem diversos comandos de um dígito que realizam ações. Os direcionais não são meros verbos de movimento, apesar de poderem constituir ações espaciais como o mover dos cursores sem a explicitação do verbo. Na verdade, os direcionais não devem ser vistos sequer como verbos, mas sim como as realizações de um parâmetro para verbos cujo objeto seja indeterminado. 9.7 Parte 7 / 7 | Construindo comandos Vimos que o paradigma de edição da família Vi assume que toda ação possui os três parâme- tros respectivamente: valor numérico, doravante "n", verbo de edição, "v", e objeto de texto, "o". É esta exatamente a ordem sintática com que os parâmetros devem ser concatenados no comando. Portanto, um esquema bastante simples que pode ser apresentado de como é a sintaxe básica dos comandos de edição é, em geral: n v o. Uma alternativa a esta estrutura é v n o, que também funciona igualmente. Como cada um destes pode ser eventualmente omitido (o verbo somente em um caso), a aparência dos comandos pode e será diferente em muitos casos. Como ainda não conhecemos os comandos de edição, utilizaremos como exemplo os dois comandos de remoção de caracteres, o ’x’ e o ’d’ e outros que serão apresentados nos momentos oportunos. Para nosso experimento, siga estritamente as seguintes instruções: abra o Vim com o comando ’vim’, insira com ’i’ o texto "O Vim Salva "(repare no espaço) e aperte <Esc>. Em nosso primeiro comando, vamos instruir o Vim a copiar as três últimas palavras, para tanto, vamos informá-lo da quantidade de objetos, que é três (’3’), do objeto, que é palavra atrás do cursor (’b’) e do verbo, que é copiar (’y’, de yank). Logo, o comando é: "3yb". Ao digitar os caracteres, notaram que eles parecem não ser reconhecidos pelo editor pois não não são impressos na tela, o que é uma característica dos comandos em modo Normal, mas ele está os armazenando enquanto espera a sintaxe do comando se completar para então executá-lo. Se realizamos corretamente o comando, o cursor deve estar sobre o primeiro caractere da linha, a letra ’O’. Vamos agora ao nosso segundo comando. Apagaremos três palavras a partir do cursor. Informaremos o Vim do número de objetos, que é novamente três (’3’), do objeto, que é palavra a partir do cursor (’w’, de word) e do verbo, que é apagar (’d’, de delete). O comando portanto será: "3dw". Os curiosos podem tentar apagar duas palavras e depois a última, para ver outras combinações do mesmo comando. Para tanto, aperte ’(1)u’ (de undo), sendo o número opcional, já que 1 é o padrão, para desfazer o último comando e digite "2dw"e enfim "(1)dw". Tentem também, apertando ’u’, digitar três vezes "dw", apagando palavra por palavra. Porém, para o nosso propósito neste caso, é necessário que seja refeita a remoção da frase com o "3dw". Agora, com o texto vazio, digitem ’5p’. ’p’, que vem de paste, cola o último pedaço de texto armazenado no buffer padrão (veremos mais sobre os buffers mais tarde). Observe também que os objetos tanto do comando ’u’ quanto do ’p’ são objetos implícitos especiais, no caso a última ação e o último pedaço de texto armazenado, respectivamente. "5p"tem de ter impresso no texto cinco vezes a expressão religiosa "O Vim Salva ". Veja como a colagem foi feita sobre uma mesma linha, e experimente 45
  • 47. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF agora digitar ’(1)dd’. A repetição do verbo e a omissão do número indica que o Vim deve remover a linha toda, e somente uma linha, linha aqui é o objeto implícito a essa ação. O verbo ’d’, além de remover, também copia o objeto removido, ou seja, ’d’ mais do que remover ou copiar, recorta. Sabendo disso e tendo recortado a linha, vamos colá-la diversas vezes com o comando "200p". Ah, agora sim! Praticamente um salmo! 46