--------------------------------------------------------------------------- VIM - VI Improved Ademar de Souza Reis Jr. http://www.ademar.org v0.8 - Mar2000 --------------------------------------------------------------------------- Introdução --------------------------------------------------------------------------- O vi é um editor de textos extremamente simples, que tem como objetivo, suprir as necessidades de um usuário quando este precisa editar arquivos, e nada mais. A principal preocupação do vi é ser um editor prático, ao contrário de outros editores que visam ser fáceis e bonitos. A maioria dos usuários (principalmente os novatos) não gostem nem um pouco da interface e das características do vi, mas após o aprendizado notam que essas mesmas características fazem do vi um editor extremamente prático e fácil de usar. Apresentando uma interface extremamente simples e um modo especial de comandos e edição, o vi pode ser utilizado em praticamente qualquer terminal, e isso inclui por exemplo, uma conexão aos antigos terminais VT100, que tinham largura de banda baixíssima, as atuais conexões por telnet em uma linha discada e conexões em máquinas com arquiteturas e teclados diferentes. (Você não precisa de nenhuma tecla especial para editar um texto no VI, bastam as teclas "ESC" e as letras para você fazer praticamente tudo o que precisa). Com editores cada vez mais complexos e cheios de funções e funcionalidades (como o emacs), o VI se mantém como um dos editores mais utilizados no mundo UNIX devido a um único motivo: Simplicidade. O vi ganhou popularidade e inspirou criadores de outros editores a seguir seu exemplo de simplicidade e, ao mesmo tempo, flexibilidade. Com isso surgiram os "clones" do vi, que são editores que mantém as mesmas características, funcionalidades e simplicidades do vi, mas com funções a mais para tarefas específicas. Este é o caso do VIM (VI Improved), criado por Bram Moolenaar. Embora existam outros clones, e o próprio VI (o original), a maioria hoje utiliza o VIM sem nem ao menos estar ciente disso. Isso por que a maioria das distribuições atuais distribui o VIM no lugar no VI, e, através de aliases ou links, você acaba acessando o VIM simplesmente como vi. As principais características que diferem o VIM do VI são: - Cores, sintaxe e identação para programação; - Vários modos de sintaxe (C, bash, perl, html, etc); - Suporte a teclas não aceitas no VI original (como o Delete); - Interface mais rica; - Highlight; - Inúmeras outras funcões; Obviamente, todas essas características são opcionais, e, dependendo das opções compiladas e do arquivo de configuração de seu VIM, ele pode ser idêntico ao VI em suas funções. Não vamos nos concentrar em explicar diferenças de um para outro. Vamos simplesmente explicar os comandos como se você estivesse utilizando o VIM. Básico (VI e VIM) --------------------------------------------------------------------------- Existe um ótimo tutorial distribuído juntamente com o VIM que explica a utilização básica do VI. Recomendamos que você o leia interativamente, pois é uma excelente maneira de dominar as teclas e utilização básica do VI. O tutorial pode ser encontrado em seu sistema (em inglês - procure-o em /usr/doc), mas você encontra uma versão traduzida em http://www.linux.trix.net Vantagens do VIM em relação ao VI --------------------------------- Uma série de funções foram adicionadas ao VIM, isso inclui suporte a teclas de locomoção e, principalmente, opções de programação (como sintaxe colorida e identação). Abaixo temos uma lista (abreviada) com os "melhoramentos" implementados no VIM em relação ao VI: - Suporte ao teclado do PC - Sintaxe colorida para centenas de tipos de arquivo - Identação "inteligente" - Suporte a janelas (vários arquivos abertos ao mesmo tempo) - Implementação de macros - VimInfo (gravação de opções em disco, como por exemplo posição do cursor ao re-editar um arquivo) - Configurações diversas (principalmente através do uso do .vimrc) Programando com o VIM --------------------------------------------------------------------------- As principais funcionalidades que fazem do VIM um excelente editor para programação são: - Suporte a inúmeras linguagens de programação Você pode escolher desde asmh8300 e basic até php e xml. Enfim, praticamente qualquer linguagem que você puder imaginar. - Cores para sintaxe, Auto-identação e múltiplas janelas. O VIM detecta automaticamente o tipo de arquivo que você está abrindo (através do nome ou cabeçalho deste) e o colore, mesmo trabalhando na console texto. Algumas opções extras você encontra no arquivo de configuração do VIM, como será visto um pouco abaixo neste mesmo documento. Configurando o VIM (.vimrc) --------------------------------------------------------------------------- A principal funcionalidade do VIM consiste em configurá-lo (através do arquivo ".vimrc" que deve estar no diretório home do usuário. Você encontra um arquivo de exemplo com inúmeras opções e exemplos em meu site: http://www.ademar.org/misc. Descreverei aqui apenas algumas das opções que você pode utilizar. Não estou incluindo um .vimrc neste documento porque o arquivo tem caracteres de escape (caracteres que representam o pressionamento de uma tecla, como Ctrl ou ESC), que não poderiam ser representados em um arquivo texto comum ou HTML. O formato de um arquivo .vimrc é bastante simples: - Comentários são iniciados por uma aspas dupla: " Isto é um comentário Comandos e macros são inseridos normalmente no arquivo. Abaixo está um exemplo de arquivo .vimrc comentado. Esse exemplo contém apenas alguns comandos e macros de exemplo. A utilização de caracteres de escape (como comentado acima) é indipensável. " ###################################################################### " Exemplo de .vimrc " " Você pode encontrar um exemplo mais completo (com caracteres de " escape) em http://www.ademar.org/ " ###################################################################### "A T A L H O S & A B R E V I A Ç Õ E S "========================================================================== " ignorar erros de digitacao de comandos para sair: cab Wq wq cab WQ wq cab Q q cab W w " gera arquivo html a partir do arquivo atual cab gerahtml so /usr/share/vim/syntax/2html.vim "L I G A / D E S L I G A "----------------------- "sequencia deve ser feita sem pausa no modo comando " " , começo de mapeamento " s comando :set " [a-z] sigla da opção do set " "autoIndent map ,ai :set ai!:echo "autoIndent="&ai "ignoreCase map ,sc :set ic!:echo "ignoreCase="&ic "Highlightedsearch map ,sh :set hls!:echo "Highlightedsearch="&hls "Smartindent map ,si :set si!:echo "SmartIndent="&si "ExpandTAB map ,et :set et!:echo "ExpandTAB="&et "cindent map ,ci :set cin! :echo "CIndent="&cin "limpa os highlights (chuncho) :) map ,hl /lixo - highlights limpos :echo "Highligh clean" " C O M E N T Á R I O S "---------------------- "para "ocultar" (F2) e "voltar" (F3) os comentários do arquivo atual noremap :hi Comment ctermfg=black guifg=black noremap :hi Comment term=bold ctermfg=cyan guifg=cyan "C O N F I G U R A C O E S D I V E R S A S ( S E T ) "========================================================================== set bs=0 " backspace normal (estilo VI) set autoindent " Autoidentação sempre ligada set smartindent " SmartIdentação sempre ligada set ts=4 " numero de caracteres de avanco do TAB set textwidth=76 " numero maximo de colunas de texto (quebra de linha) set report=0 " reporta ações com linhas no rodapé set shm=filmnrwxt " encurta as mensagem do rodapé (SHortMessages) set showcmd " Mostra (parcialmente) os comandos no rodapé set showmatch " Avisa quando parênteses não foram fechados set ruler " Mostra número de linha e coluna no rodapé set autowrite " Salva documentos antes de comandos como :next & :make set laststatus=0 " Rodapé completo (Barra horizontal) " opcoes negadas (retire o prefixo "no" para ativar) set nonumber " Não exibe coluna com os números de linha set noet " Não converte TAB's em espacos (:retab - converte tudo) set novisualbell " Emite um beep em vez de piscar a tela set nocompatible " Usa um padrão VIM para alguns detalhes " opcoes de busca set is " Busca incrementada set hls " Colore o fundo da palavra recém encontrada (HighLight) set ignorecase " Ignora maiúsculas/minúsculas em buscas " Extensoes que tem prioridade menor quando usando TAB pra completar nomes " de arquivos no VIM. " Devem ser extensoes de arquivos que não se deseja editar. set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc " V I M I N F O "========================================================================== " guarda posicao do cursor e historico da linha de comando: set viminfo='50,\"300,:20,%,n~/.viminfo " P R O G R A M A C A O E M C "========================================================================== " caracteres para identação (tamanho do tab) set shiftwidth=4 " opções para programação em C (consulte :help cinoptions) set cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,ps,ts,+s,(2s,)25,*30 "########################################################### " fim "########################################################### Dicas diversas --------------------------------------------------------------------------- Abaixo temos algumas dicas e comandos interessantes sobre a utilização do VIM. Procura simultânea por mais de uma palavra: /palavra1\|palavra2\|palavra3 Ordenar alfabeticamente uma parte do texto :xxx,yyy!sort xxx = linha inicial yyy = linha final