Editor Vim e Integrated Development Environment [ I . D . E . ]



Copyright (c) 2013 Rodrigo Ferreira Baroni .
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

O vim e´ um editor de textos , com muitos recursos , e o melhor software na sua categoria [ editor de texto ] segundo pesquisa de preferência [ http://www.linuxjournal.com/xstatic/pressreleases/10122004 ] . Muitos recursos extras estao disponiveis em plugins sob g.p.l. . Abaixo segue a configuracao do editor com alguns recursos extras , e outros nativos , para otimizar o uso do editor em um ambiente de desenvolvimento [ programacao ] .

O arquivo de configuracao do vim por padrao e´ localizado em /home/user_name_registerd~/.vimrc , com diretorios disponiveis para colocar plugins em ~/.vim/ [ '~' indica '/home/user_name_registered' ] - ~/.vim/plugins , ~/.vim/docs e outros que podem ter outros nomes - utilizados por plugins - ao obter [ e descompactar , se estiver em formato compactado ] um plugin , de uma checada nos arquivos gerados - e copie os arquivos para o diretorio correspondente em ~/.vim/ .

O documento e´ organizado em 3 partes :


A u´ltima atualização deste documento é de Dezembro 1 , 2013 - fique atento, pois configurações mudam com o tempo, e as documentações se tornam obsoletas. Contribuições são sempre bem vindas - falhas/sugestões envie para rodrigoferreirabaroni[ arroba ]gmail.com .

Agradecimentos a todos que contribuíram, além dos desenvolvedores envolvidos no desenvolvimento de toda a plataforma GNU/Linux, com preservacao do livre acesso ao conhecimento da ciencia e da tecnologia , incluindo os envolvidos no desenvolvimento do vim - Bram Moolenaar e outros .


Parte I - Configurando os recursos nativos do editor

O primeiro passo é criar um arquivo de configuracao ~/.vimrc [ se nao tiver um - se tiver renomeie-o para outro nome e guarde-o em um diretorio de backup - conforme descrito abaixo ] . Este arquivo de configuracao é lido toda vez que o editor for executado , e suas opcoes de configuracao sao utilizadas para mudar o comportamento do editor seguindo as configuracoes feitas . O diretorio ~/.vim/ e´ utilizado para armazenar os arquivos dos plugins [ ~/.vim/plugin/ , ~/.vim/doc/ , e outros , criados pelos plugins para sua utilizacao ] - ao obter um plugin [ copiando pela internet - download ] descompacte-o [ se for um arquivo compactado ] em um diretorio e depois copie os arquivos e diretorios criados pela descompactacao para estes diretorios . Segue abaixo os procedimentos necessários para comecar a configurar o editor . O caractere aspas duplas '"' indica que o conteudo que segue o caractere nao sera processado por configuracoes a serem feitas - utilizado para insercao de comentarios .

    " OBS: O conteudo desta caixa repete o texto de apresentacao desta pagina -
    afim de ter disponivel o conteudo desta documentacao diretamente no arquivo
    ~/.vimrc - o mesmo eh feito para a documentacao contida nesta pagina - o conteudo
    do texto de documentacao eh repetido em cada configuracao detalhada - tendo o
    indicador de comentario utilizado [ " - aspas duplas ] - para nao ser utilizado
    como instrucoes de configuracao pelo editor vim .
    
    "O vim e´ um editor de textos , com muitos recursos , e o melhor software
    na sua categoria [ editor de texto ] "segundo pesquisa de preferência [
    http://www.linuxjournal.com/xstatic/pressreleases/10122004 ] . Muitos recursos
    "extras estao disponiveis em plugins sob g.p.l. . Abaixo segue a configuracao
    do editor com alguns recursos extras , e "outros nativos , para otimizar o uso
    do editor em um ambiente de desenvolvimento [ programacao ] .
    
    "O arquivo de configuracao do vim por padrao e´ localizado em
    /home/user_name_registerd~/.vimrc , com diretorios "disponiveis para colocar
    plugins em ~/.vim/ [ '~' indica '/home/user_name_registered' ] - ~/.vim/plugins
    , ~/.vim/docs e "outros que podem ter outros nomes -  utilizados por plugins -
    ao obter [ e descompactar , se estiver em formato "compactado ] um plugin , de
    uma checada nos arquivos gerados "- e copie os arquivos para o diretorio
    correspondente em ~/.vim/ .
    
    "O documento e´ organizado em 3 partes :
    
    "Parte I : Configurando os recursos nativos do editor Parte II :
    Obtendo e configurando recursos extras "disponi´veis em plugis sob g.p.l.
    Parte III : Mapeamento de acoes, abreviacoes comummente utilizadas e dicas
    "gerais Parte IV : Criando um backup - armazenando as configuracoes do editor e
    os plugins
    		
    "A u´ltima atualização deste documento é de Dezembro
    1 , 2013 - fique atento, pois "configurações mudam com o tempo, e
    as documentações se tornam obsoletas.
    "Contribuições são sempre bem vindas -
    falhas/sugestões envie para rodrigoferreirabaroni[ arroba "] gmail.com .
    
    "Agradecimentos a todos que "contribuíram, além dos desenvolvedores envolvidos no
    desenvolvimento de toda a plataforma GNU/Linux, "com preservacao do livre acesso ao conhecimento da ciencia e da tecnologia , 
    "incluindo os envolvidos no desenvolvimento do vim - Bram Moolenaar e outros .
    
    
    "Parte I - Configurando os recursos nativos do editor
    
    "O primeiro passo é criar um arquivo de configuracao ~/.vimrc [ se nao tiver um - se tiver renomeie-o para outro
    "nome e guarde-o em um diretorio de backup - conforme descrito abaixo ] . Este arquivo de configuracao é lido toda
    "vez que o editor for executado , e suas opcoes de configuracao sao utilizadas para mudar o comportamento do editor
    "seguindo as configuracoes feitas . O diretorio ~/.vim/ e´ utilizado para armazenar os arquivos dos plugins [
    "~/.vim/plugin/ , ~/.vim/doc/ , e outros , criados pelos plugins para sua utilizacao ] - ao obter um plugin [ copiando
    "pela internet - download ] descompacte-o [ se for um arquivo compactado ] em um diretorio e depois copie os arquivos e
    "diretorios criados pela descompactacao para estes diretorios . Segue abaixo os procedimentos necessários para
    "comecar a configurar o editor .
    
  • 1) Criando um backup das configuracoes presentes do editor
  • Entre no diretorio home do usuario
    $ cd ~ 
    Crie um diretorio para armazenar o backup das configuracoes do editor presentes no diretorio padrao de suas configuracoes [ substitua 'hour' , 'minute' , 'day' , 'hour'month' e 'year' para o horario e data presente [ obtidos com o comando 'date' ]
    $ mkdir vim-backup-hour_minute_day_month_year/
    Copie os arquivos presentes da configuracao presente para o diretorio de backup
    $ cp -dpR .vim/ vim-backup-hour_minute_day_month_year/
    Outros arquivos auxiliares podem ter sido configurados para serem utilizados por recuros do editor - de uma checada se tem alguma configuracao lendo o arquivo de configuracao vim-backup-hour_minute_day_month_year/.vimrc . as configuracoes apresentadas como sugestao nesta documentacao utiliza o .vim-bkp-dir/
    $ cp -dpR .vim-bkp-dir/ vim-backup-hour_minute_day_month_year/ 

    2) Configurando os recursos nativos do editor
    "2) Configurando os recursos nativos do editor
    "--------------------Configurações gerais------------------------------------
    colorscheme desert "Tema de cores que eu sinto mais confortável trabalhando
    "sobre códigos
    syntax on "Habilita sintaxe de cores padrão de arcordo com o tipo do arquivo
    "Ao se digitar a letra 'K' sobre uma palavra automaticamente é invocado o 'man'.
    "Mudamos isso invocando uma consulta ao dicionário
    set keywordprg=/usr/bin/dict\ --database\ fd-eng-por
    set wildmode=longest,list "Para completar com TAB igual ao bash
    set number "Habilita numeração de linhas
    "set virtualedit=block "Permite mover com o cursor para áreas sem texto
    set ai "Habilita auto identação
    set showmatch "Exibe fechamento de parênteses/chaves/...
    set matchtime=5 "Exibe a outra parte da abertura/fechamento em 5 décimos de seg.
    set js "Habilita joinspaces para quando formatar com gq (joinspaces)
    set ruler "Exibe no rodapé da tela a posição horizontal e vertical do cursor
    set showcmd "Exibe comando sendo executado
    set showmode "Mostra o modo que está
    set ic "Ignore case em buscas de padrões
    set backup "Habilita criar um arquivo para backup
    set backupdir=~/.vim-bkp-dir "Local aonde os arquivos de backup '~' serão criados
    set history=10000 "Comandos e padrões de busca armazenados no histórico
    set hls "Desabilita 'highlight search patterns.'
    "" Destaque redundante espaços em branco e tabulações
    "highlight RedundantWhitespace ctermbg=red guibg=red
    "match RedundantWhitespace /\s\+$\| \+\ze\t/
    set updatecount=100 "Escreva arquivo de swap para o disco após cada 20
    "caracteres
    set updatetime=6000 "Escreva arquivo de swap para o disco a cada 6 segundos 
    "inativos
    set noerrorbells "Desabilita apitos de alerta
    "set vb
    set mouse=a "Habilite scroll com mouse
    set nocompatible "Desabilita modo de compatibilidade para utilizar todos os
    "recursos de melhorias do vim
    set viminfo='20,\"500 "Leia e escreva um arquivo .viminfo, não armazene mais 
    "que 500 linhas de registro
    set report=0 " Reporte toda e qualquer alteração feita por qualquer comando
    "realizado
    set laststatus=2 "Exiba o status na janela (window) sempre
    " When editing a file, always jump to the last known cursor position. Don't do
    " it when the position is invalid or when inside an event handler
    " (happens when dropping a file on gvim).
    " Ao editar um arquivo sempre pule para a última posição conhecida do cursor. Não utilize-o
    " quando a posição é inválida ou quando dentro de um manipulador de evento
    " (ocorre quando excluindo um arquivo no gvim)
     autocmd BufReadPost *
       \ if line("'\"") > 0 && line("'\"") <= line("$") |
       \   exe "normal g`\"" |
       \ endif
    "Tente e habilite cor para xterms - realmente necessário?
    "if &term =~ 'xterm'
    "    if has("terminfo")
    "        set t_Co=8
    "        set t_Sf=[3%p1%dm
    "        set t_Sb=[4%p1%dm
    "    else
    "         set t_Co=8
    "        set t_Sf=[3%dm
    "        set t_Sb=[4%dm
    "    endif
    "endif
    "------------------------------------------------------------------------------
    
    "----------------Configurações para formatação automática----------------------
    ""Em arquivos texto, sempre limite a largura do texto para 79 caracteres no 
    ""máximo (ou da largura da tela quando menor - coloque 0)
    "autocmd BufNewFile,BufRead *.txt set textwidth=80
    "autocmd BufNewFile,BufRead Makefil set textwidth=80
    set textwidth=80
    set tabstop=8
    set noexpandtab
    "Mapeamentos para formatação de parágrafos usando o comando externo 'par'
    "disponivel em http://www.nicemice.net/par/ - versao 152 - Sex Nov 29 22:55:43 BRST 2013
    "instalacao de codigo fonte/compilacao/instalacao-local no link 'instalacao de
    " programas a partir do codigo fone - www.ime.usp.br/~baroni/getting_programas_from_source/' 
    map #p vip! par 76gqrj
    map #f !par 76gqrj
    map #j ! par 76Tbgjqw74bEe B=._A_a 76bgi| 
    map  {!} par 78j}
    "" Para justificar a direita dos parágrafos
    "set formatprg=par\ -w80
    "" Quando o texto sendo exibido não cabe na tela, quebre ele apenas
    "" visualmente, sem alterar em seu conteúdo (sem formatá-lo). Não funciona
    "" quando utilizando textwidth (e estou utilizando), mas deixei aqui caso venha
    "" desabilitar textwidth então ele venha a funcionar.
    "set wrap
    "set wrapmargin=5 "Coloque uma margem à direita na exibição do conteúdo. Não
    "" funciona quando textwidth está habilitado (mesmo caso que o anterior).
    "" Para arquivos de códigos C seta o que será formatado (deixando código (t) 
    ""sem sofrer quebra de linha quando formatado) - comentários (c), 
    "" (r), inserção de nova linha para edicão (o), formatação com gq (q).
    "autocmd BufNewFile,BufRead *.c set formatoptions=croq
    "------------------------------------------------------------------------------
    
    "----Configurações customizadas para arquivos específicos: gzip----------------
    "" Habilita visualizar e editar arquivos compactados
    augroup gzip
      " Remove all gzip autocommands
      au!
    
      " Enable editing of gzipped files
      "	  read:	set binary mode before reading the file
      "		uncompress text in buffer after reading
      "	 write:	compress file after writing
      "	append:	uncompress file, append, compress file
      autocmd BufReadPre,FileReadPre	*.gz set bin
      autocmd BufReadPost,FileReadPost	*.gz let ch_save = &ch|set ch=2
      autocmd BufReadPost,FileReadPost	*.gz '[,']!gunzip
      autocmd BufReadPost,FileReadPost	*.gz set nobin
      autocmd BufReadPost,FileReadPost	*.gz let &ch = ch_save|unlet ch_save
      autocmd BufReadPost,FileReadPost	*.gz execute ":doautocmd BufReadPost " . expand("%:r")
    
      autocmd BufWritePost,FileWritePost	*.gz !mv  :r
      autocmd BufWritePost,FileWritePost	*.gz !gzip :r
    
      autocmd FileAppendPre			*.gz !gunzip 
      autocmd FileAppendPre			*.gz !mv :r 
      autocmd FileAppendPost		*.gz !mv  :r
      autocmd FileAppendPost		*.gz !gzip :r
    augroup END
    "------------------------------------------------------------------------------
    		

Parte II : Obtendo e configurando recursos extras disponíveis em plugis sob g.p.l.

Os seguintes plugins foram obtidos e configurados . O endereco u.r.l. de obtencao esta descrito na documentacao , incluindo a data da sua ultima atualizacao

  • 1) Configurações do plugin 'Tag List - taglist.vim'
  • "Parte II : Obtendo e configurando recursos extras disponíveis em plugis sob g.p.l.
    "Os seguintes plugins foram obtidos e configurados . O endereco u.r.l. de obtencao esta descrito na documentacao , incluindo a data da sua ultima atualizacao
    "----Configurações de plugin do vim 'Tag List - taglist.vim'-------------------
    "- taglist 
    "	- plugin url 	: http://www.vim.org/scripts/script.php?script_id=273 		- versao : 4.6 	- last-update : 2013-02-27
    "	- download url	: http://www.vim.org/scripts/download_script.php?src_id=19574
    "- arquivos : 
    "	- ~/.vim/plugin/taglist.vim
    "	- ~/.vim/doc/taglist.txt 
    
    "Este plugin funciona baseado no tipo de arquivo, criando e habilitando os
    "recursos por tipo de arquivo na hora da leitura do arquivo, para isso deve-se
    "ter a detecção por tipo de arquivo habilitada também 
    
    filetype on
    "Ajuda :help taglist
    "Comandos na janela de tags disponíveis são
    "  Tecla              Descrição
    "         Vai para a localização aonde a tag sobre o cursos está definida
    "  o             O mesmo que o acima, mas abre uma nova janela para isso
    "  p             Exibe a definição da taga na janela do arquivo e mantém o
    "		  cursor na janela de tags
    "         Exibe o protótiopo da tag sobre o cursor
    "  u             Atualiza (Update) as tags listadas na janela de lista de tags
    "  s             Muda  a ordem de ordenação (sort) das tags (por nome ou por
    "		  ordem)
    "  d             Remove as tags para o arquivo sobre o cursor
    "  x             Zoom-in ou Zoom-out sobre a janela de lista de tags
    "  +             Abre um campo
    "  -             Fecha um campo
    "  *             Abre todos os campos
    "  =             Fecha todos os campos
    "  [[            Vá para o início do arquivo anterior
    "  ]]            Vá para o início do próximo arquivo
    "  q             Frecha a janela de lista de tags
    "  ?             Exibe ajuda
    "Principais recursos oferecidos pelo plugin:
    "Processar o arquivo e abrir a janela de tags :Tlist
    "Fechar a janela de tags  :TlistClose
    "Atualizar a janela de tags :TlistUpdate
    "Força atualização da tag atual na janela de tags :TlistSync
    "Exibe o protótipo da tag próxima da linha especificada :TlistShowPrototype
    "Caminho completo para o programa exuberant ctags
    let Tlist_Ctgs_Cmd = '/usr/bin/ctags-exuberant'
    "Habilita dividir a janela dos fontes para poder utilizar a janela de tags
    let Tlist_Inc_Winwidth = 0
    "Para mudar a largura da janela de tags
    "let Tlist_WinWidth = 20
    "Somente um clique do mouse em uma tag exibir a localização no código
    let Tlist_Use_SingleClick = 1
    "Desabilita o destaque de tags na janela de tags
    "let Tlist_Auto_Highlight_Tag = 0
    "Fecha automaticamente os campos de tags dos buffers que não estejam abertos
    "let Tlist_File_Fold_Auto_Close = 1
    "Habilita automaticamente abrir a janela de tags na abertura do arquivo
    "let Tlist_Auto_Open = 1
    "Exibe somente as tags do buffer aberto atual
    "let Tlist_Show_One_File = 1
    "Por padrão somente o nome da tag é exibido, se desejar que seja o protótipo:
    let Tlist_Display_Prototype = 1
    "Se desejar que a janela de tags seja exibida em um formato compacto
    "let Tlist_Compact_Format = 1
    "Permite o vim sair e fechar automaticamente a janela de tags se o arquivo for
    "fechado
    let Tlist_Exit_OnlyWindow = 1
    "Por padrão a janela é exibida verticalmente, mas pode ser exibida na horizontal
    "let Tlist_Use_Horiz_Window = 1
    "Para exibir o nome da tag na barra de status e outras informações
    "set statusline=%<%F\ %h%m%r\ %{Tlist_Get_Tagname_By_Line()}%=\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
    "Outra versão
    "set statusline=%<%f\ %h%m%r%{Tlist_Get_Tagname_By_Line()}%=%-14.(%l,%c%V%)\ %P
    "Uma linha de status com muitas informações
    set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ %{Tlist_Get_Tagname_By_Line()}%=\ [FILE_OFFSET=\%08o]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
    "-------------------------------------------------------------------------------
    		

    2) Configurações do plugin 'File Explorer - explorer.vim'
    "2) Configurações do plugin 'File Explorer - explorer.vim'
    "---Configurações de plugin do vim 'File Explorer - explorer.vim'---------------
    "- fileexplorer 			- url : http://www.vim.org/scripts/script.php?script_id=1299	- versao : 1.2	- last-update : Sex Nov 29 23:58:04 BRST 2013
    "- arquivos :
    "	- ~/.vim/plugins/fileexplore.vim
    
    "Este plugin é disponibilizado juntamente com o plugin abaixo (WinManager), e
    "seus recursos e comandos são descritos aqui. Ele exibe um visualizador e
    "navegador da árvore de arquivos do sistema.
    
    
    "Principais comandos disponíveis quando sobre a janela do explorer:
    ": Abre o diretório ou o arquivo sobre o cursor
    "	: Abre o diretório ou o arquivo em uma nova janela
    "c	: Muda para o diretório sobre o cursor
    "s	: Seleciona o campo de ordenação (tamanho, data, nome)
    "r	: Reverte a direção da ordenação
    "f	: Adiciona o diretório atual aos favoritos
    "R	: Renomeia o arquivo
    "D	: Deleta o arquivo
    "	: Atualiza a lista de arquivos
    "-------------------------------------------------------------------------------
    	

    3) Configurações do plugin 'WinManager - winmanager.vim'
    "3) Configurações do plugin 'WinManager - winmanager.vim'
    "----- configurações de plugin do vim 'WinManager - winmanager.vim' ------------
    "- winmanager		url : http://www.vim.org/scripts/script.php?script_id=95		last update : 2002-04-03 
    "- arquivos:
    "	- ~/.vim/plugin/winmanager.vim
    "	- ~/.vim/plugin/winfileexplorer.vim
    "	- ~/.vim/plugin/wintagexplorer.vim
    "	- ~/.vim/doc/winmanager.txt
    
    "Plugin que implementa um layout de exibição de janelas formando um conjunto de
    "janelas clássicas do tipo encontradas em IDEs "(Interface de Ambiente de
    "Desenvolvimento - 'Interface of Development Enviroment') permitindo a
    "visualização de várias informações de forma organizada conforme a configuração
    "desejada em janelas. As janelas são divididas em 2 regiões - à direita a
    "'área do explorer' onde várias janelas de plugins são exibidas, e à esquerda a
    "'área de edição de arquivo' onde o usuário trabalha em sua sessão de edição.
    "Configuramos quais janelas de plugins serão exibidas na área do explorer,
    "indicando para usar o plugin taglist a ser uma das janelas que o winmananger
    "deve exibir, e  a janela do plugin 'FileExplorer'. Os recursos de cada plugin
    "foram descritos nos comentários em suas sessões de configuração.
    
    
    let winManagerWindowLayout = 'FileExplorer|TagList'
    "Fechar o vim caso não haja mais arquivos abertos ('1' ele mantem aberto)
    let g:persistentBehavior = '0'
    "------------------------------------------------------------------------------
    	

    4) Configurações do plugin 'Buffer Explorer - bufexplorer.vim'
    "4) Configurações do plugin 'Buffer Explorer - bufexplorer.vim'
    "--Configurações de plugin do vim 'Buffer Explorer - bufexplorer.vim'----------
    "- bufexplorer 		url : http://www.vim.org/scripts/script.php?script_id=42		last update : 2013-10-25
    "- arquivos :
    "	- ~/.vim/plugin/bufexplorer.vim
    "	- ~/.vim/doc/bufexplorer.txt
    
    "Plugin para visualizar arquivos abertos (buffers do vim), permitindo uma
    "navegação e manipulação mais dinâmica
    "Comandos para o plugin
    "\be :exibe em uma janela os buffers abertos
    "\bs :exibe um uma nova janela dividida (split) os buffers abertos
    "\bv :o mesmo que o anterir, abrindo um janela vertical agora
    "Para exibir ajuda detalhada pressione '?' na janela do buffer explorer
    let g:bufExplorerDetailedHelp=1
    "Ordenação pelos arquivos mais recentes
    let g:bufExplorerSortBy='mru'
    "Exibe a localização completa do arquivo
    let g:bufExplorerSplitOutPathName=0
    "Abrir o buffer em uma nova janela, dividindo (split) a atual (\bs)
    let g:bufExplorerSplitBelow=1
    "------------------------------------------------------------------------------
    	

    5) Configurações do plugin 'Tag Menu - tagmenu.vim'
    "5) Configurações do plugin 'Tag Menu - tagmenu.vim'
    "-Configurações de plugin do vim 'Tag Menu - tagmenu.vim'---------------------
    "- tagmenu 		url : http://www.vim.org/scripts/script.php?script_id=215		last¬update : 2002-11-11
    "- arquivos :
    "	- ~/.vim/plugin/tagmenu.vim
    
    "Mais um plugin oferecendo recursos para navegação de fontes com ajuda de ctags
    "Comandos ':TagExplorer' para abrir/fechar a janela do tag explorer
    
    "Caminho completo para o programa exuberant ctags
    let Tmenu_ctags_cmd = '/usr/bin/ctags-exuberant'
    "------------------------------------------------------------------------------
    	

    6) Configurações da interface ctags com o vim
    "6) Configurações da interface ctags com o vim
    "---Configurações da interface ctags com o VIM --------------------------------
    "Execute 'bash$ ctags *' para criar um arquivo 'tags' no diretório corrente, e
    "ele irá conter informações de todos os arquivos C ou C++ em seu diretório.
    "Este arquivo irá contér uma lista dos seguintes objetos
    " - macros definidas por #define
    " - valores enumerados
    " - definições de funções, protótipos e declarações
    " - nomes de classes, enum, struct, e union
    " - namespaces
    " - typedefs
    " - variáveis (definições e declarações)
    "E então utilizando tags com o vim é possível navegar pelos fontes através de
    "comandos internos do vim. Aqui indico as tags dos fontes que costumo navegar
    "set tags=/usr/src/linux/tags,/usr/src/glibc/glibc-2.3.2.ds1/glibc-2.3.2/tags
    set tags=tags
    "Os comandos para navegar sobre as tags são:
    "+] -> pula para a definição da tag sobre o cursor, o mesmo que o comando
    ":tag {ident}
    "+W+] -> o mesmo que o anterior, abrindo uma janela
    "+W+} -> o mesmo que o anterior, mantendo o cursor na janela atual
    "+t ->volta para arquivo anterior ao pulo para a tag
    ":tselect  -> para exibir uma lista das localizações de utilização da func
    ":stselect -> o mesmo que o anterior, abrindo uma nova janela caso pule para tag
    ":tag / ou :stag / -> realizam busca por tag (pode-se usar
    "expressões regulares)
    "->Atalho para recursos de ferramentas para um 'ambiente' de programação
    " Abre definições de tags encontradas em nova janela. Tem o mesmo efeito que
    " CTRL-W_g} sobre uma tag
    "nnoremap  :exe "ptjump " . expand("") 
    "------------------------------------------------------------------------------
    	

    7) Configurações da interface cscope com o vim
    "7) Configurações da interface cscope com o vim
    "---Configurações da interface cscope com o VIM -------------------------------
    "Cscope é uma famoso (da época do UNIX da Bells), e poderoso aplicativo, e aqui
    "configuramos o uso dele com o Vim. Primeiro gere uma arquivo 'cscope.files' com
    "uma lista dos arquivos a serem scanneados (por padrão o cscope somente examina
    "arquivos .c, .h, .y e .l) com um nome por linha, contendo o caminho completo
    "deles permitindo usálos no Vim sem necessitar estar dentro do diretório raíz
    "dos fontes. O exemplo que segue é para os fontes do kernel do Linux, incluindo
    "arquivos apenas da arquitetura i386, excluindo a documentação, scripts,
    "diretório tmp e drivers, e examinando arquivos .c, .h, .x, .s e .S:
    "    LNX=/usr/src/linux-2.6.12
    "    cd / 	
    "    find  $LNX                                                                \
    "	-path "$LNX/arch/*" ! -path "$LNX/arch/i386*" -prune -o               \
    "	-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-i386*" -prune -o \
    "	-path "$LNX/tmp*" -prune -o                                           \
    "	-path "$LNX/Documentation*" -prune -o                                 \
    "	-path "$LNX/scripts*" -prune -o                                       \
    "	-path "$LNX/drivers*" -prune -o                                       \
    "       -name "*.[chxsS]" -print >$LNX/cscope.files
    "E então contrua a base de dados do Cscope:
    "'cd $LNX/ ; cscope -b -q -k' ('-b' para construir ('build'), '-q' para criar uma
    "base de dados indexada de modo a otimizar a velocidade de busca (gerando os
    "arquivos cscope.out, cscope.in.out e cscope.po.out) e '-k' informando que se
    "trata de um kernel, excluindo então os arquivos padrões em /usr/include). Se
    "houver alterações nos arquivos, construa a lista dos arquivos novamente com o
    "comando anterior e execute o mesmo comando cscope novamente (cscope -b -q -k).
    "Caso venha executar o cscope na linha de comando após construir a base, execute
    "com '-d' para não re-gerar a base de dados.
    "Há um plugin (cscope_maps.vim) que realiza algumas dessas configurações abaixo,
    "mas aqui é explicado cada opção, dando ao usuário um maior controle e
    "conhecimento sobre as opções. Estas configurações permitem uma interface com o
    "cscope integrada ao editor Vim. É necessário ter compilado o vim com a opção
    "--enable-cscope, senão não irá funcionar. Leia man do cscope. Comandos
    "->Principais disponíveis:
    "Adiciona a base de dados ao vim, estabelecendo uma conexão, tornando-a
    "disponível para o uso no vim. Execute ':cs show' para ver as conexões
    "existentes, e ':cscope kill {nome_parcial}' para remover uma conexão.
    "-------------------------------------------------------
    "NÃO ESQUECER: EXECUTAR '' :cs add /path/to/cscope.out''
    "------------------------------------------------------
    "Caminho do programa cscope
    set csprg=/usr/bin/cscope
    ":cs find   : realiza busca (utilize '-T' para
    "retornar para aonde você estava antes da busca, caso vá para outro arquivo)
    "8 Tipos de busca:
    "   's'   símbolo: busca todas as referências para deste símbolo C
    "   'g'   global: busca esta definição global
    "   'c'   chamadas para esta função ('calls'):  busca locais que executam esta
    "	  função
    "   't'   texto:  busca esta string de texto
    "   'e'   egrep:  busca por este padrão egrep
    "   'f'   arquivo ('file'): abre este arquivo
    "   'i'   includes: busca arquivos que #include (incluem) este arquivo
    "   'd'   funções chamadas: busca funções chamadas por esta função
    "Mapeando o comando de busca para  realizando busca da
    "palavra sobre o cursor. (Exemplo: s)
    nmap s :cs find s =expand("")	
    nmap g :cs find g =expand("")	
    nmap c :cs find c =expand("")	
    nmap t :cs find t =expand("")	
    nmap e :cs find e =expand("")	
    nmap f :cs find f =expand("")	
    nmap i :cs find i ^=expand("")$
    nmap d :cs find d =expand("")	
    "Mapeando o mesmo comando que o anterior, mas abrindo uma nova janela com o
    "resultado da busca - pode-se obter o mesmo com ':scs find 
    "', com a combinação 
    nmap s :scs find s =expand("")	
    nmap g :scs find g =expand("")	
    nmap c :scs find c =expand("")	
    nmap t :scs find t =expand("")	
    nmap e :scs find e =expand("")	
    nmap f :scs find f =expand("")	
    nmap i :scs find i ^=expand("")$	
    nmap d :scs find d =expand("")	
    "Executando  sobre o cursor, abrindo o
    "resultado em uma janela vertical. - atalhos do comando ':scs find  '
    nmap s :vert scs find s =expand("")
    nmap g :vert scs find g =expand("")
    nmap c :vert scs find c =expand("")
    nmap t :vert scs find t =expand("")
    nmap e :vert scs find e =expand("")
    nmap f :vert scs find f =expand("")	
    nmap i :vert scs find i ^=expand("")$	
    nmap d :vert scs find d =expand("")
    "Habilita o uso da janela quickfix para exibir os resultados do cscope - uma
    "lista com valores separados por vírgula (cada valor consistindo de um comando
    "de busca do cscope: c, g, d, c, t, e, f ou i; e uma flag: '+' indicando que os
    "resultados devem ser acrescentados para a janela, '-' limpa o resultado
    "anterior antes de exibir o resultado, e '0' indicando para não usar a janela.
    "set cscopequickfix
    "Especifica o uso do cscope realizando busca na base do cscope e do ctags quando
    "executado 'CTRL-]' sobre uma tag. Muito utilizado juntamente com o recurso
    "abaixo desta (cscopetagorder)
    "set cscopetag
    "Indica qual a ordem de busca que o cscope deve realizar a busca - se csto for
    "'0' a base de cscope é utilizada primeiro e então é utilizada a ctags caso não
    "cscope não retorne resultados, e se for 1 ctags é utilizada na primeira busca.
    "set cscopetagorder=0
    "Habilita mensagens de status das ações do cscope serem exibidas
    set cscopeverbose
    "Especifica quantos subdiretórios exibir da localização ("path") do arquivo, '0'
    "para exibir o caminho completo (útil quando deseja-se navegar nos fontes a
    "partir de outros diretórios)
    set cscopepathcomp=0
    "------------------------------------------------------------------------------
    	

    8) Configurações do plugin 'Mini Buffer Explorer - minibufexpl.vim'
    "8) Configurações do plugin 'Mini Buffer Explorer - minibufexpl.vim' 
    "--Configurações de plugin do vim 'Mini Buffer Explorer - minibufexpl.vim'-----
    "- mini buffer explorer 	url : http://www.vim.org/scripts/script.php?script_id=159	last¬update : 2004-11-18
    "-  arquivos :
    "  	- ~/.vim/plugin/minibufexpl.vim
    
    "Plugin que exibe uma janela no alto da janela principal exibindo o nome dos
    "arquivos (buffers) abertos no vim, permitindo também uma navegação entre eles
    "Permite utilizar as teclas de movimentação 'jklh' sobre os buffers listados
    let g:miniBufExplMapWindowNavVim = 1
    "Permite utilizar as teclas +setas sobre os buffers listados
    let g:miniBufExplMapWindowNavArrows = 1
    "Habilita + e ++ para movimentar entre a lista
    let g:miniBufExplMapCTabSwitchBuffs = 1
    "Somente um clique do mouse muda para o buffer (caso use o mouse)
    let g:miniBufExplUseSingleClick = 1
    "Caso utilize outros explorers como por exemplo o 'taglist' (e está em uso)
    let g:miniBufExplModSelTarget = 1
    "Há um bug no vim que causa buffers serem exibidos sem destaque de marcação
    "("highlighting"). Faça o MBE tentar habilitar o highlighting de volta
    "let g:miniBufExplForceSyntaxEnable = 1
    "Destaca visualmente (highlighting) os arquivos alterados
    hi link MBEVisibleChanged Error
    let g:miniBufExplSplitBelow=0
    "------------------------------------------------------------------------------
    	

    9) Configurações do plugin 'CPP Complete - cppcomplete.vim'
    "9) Configurações do plugin 'CPP Complete - cppcomplete.vim' 
    "---Configurações de plugin do vim 'CPP Complete - cppcomplete.vim-------------
    " - cppcomplete 		url : http://www.vim.org/scripts/script.php?script_id=527	last¬update : 2003-03-18
    " - arquivos :
    "	- ~/.vim/plugin/cppcomplete.vim
    
    "Plugin que ajuda a completar membros de estruturas/classes/uniões. Depende de
    "um arquivo cppcomplete.tags gerado pelo programa exuberant ctags da seguinte
    "maneira: 'ctags -n -f cppcomplete.tags --fields=+ai --C++-types=+p * '. O
    "plugin fornece o comando 'GenerateTags' que executa este comando.
    "+l (modo de inserção) : exibe em uma janela itens possíveis para completar
    "+j (modo de inserção) : o mesmo que o anterior, exibindo os últimos ítens
    " (modo de inserção) : exibe o nome da classe em uma janela
    " É possível procurar e agrupar trechos de códigos em blocos:
    "------------------------------------------------------------------------------
    	

    10) Configurações do plugin 'C Reference - CRefVim.WinManager - winmanager.vim'
    "10) Configurações do plugin 'C Reference - CRefVim.WinManager - winmanager.vim' 
    "---Configurações de plugin do vim 'C Reference - CRefVim.zip'-----------------
    " - c reference 		url : http://www.vim.org/scripts/script.php?script_id=614	last¬update : 2004-11-28
    " - arquivos : [ dando uma checada se o diretorio crefvim/ precede os arquivos do plugin ]
    " 	- ~/.vim/doc/crefvim.txt  
    " 	- ~/.vim/doc/crefvimdoc.txt  
    " 	- ~/.vim/after/syntax/
    " 	- ~/.vim/after/syntax/help.vim  
    " 	- ~/.vim/plugin/crefvim.vim
    " 
    "Plugin que possui uma base de dados com mais de 14.000 linhas contendo a
    "descrição e o protótipo das principais funções da libc e recursos da linguagem
    "C
    "\cr : (c)-(r)eference - exibe ajuda para a palavra sobre o cursor
    "\cw : (c)-reference (w)hat - pergunta pela palavra ao CRefVim
    "\cc : (c)-reference (c)ontents - exibe a tabela de conteúdo do manual de
    "referência de C
    "Nota: Para procurar por um operador (++, --, %, ...) selecione visualmente ele
    "e precione a tecla de comando '\cr'
    "Obtendo ajuda - :help crefvimdoc
    "------------------------------------------------------------------------------
    	

    11) Configurações do plugin 'VimSpell.vim - vimspell.vim'
    "11) Configurações do plugin 'VimSpell.vim - vimspell.vim' 
    "--------Configurações de plugin do vim 'Vimspell - vimspell.vim'--------------
    " - vimspell 		url : http://www.vim.org/scripts/script.php?script_id=465	last¬update : 2005-09-14
    " - arquivos :
    "	- ~/.vim/plugin/vimspell.vim
    
    "Este plugin possui um conflito de mapeamento do comando com outro plugin -
    " para esse conflito , edite o arquivo ~/.vim/plugin/vimspell.vim na linha 1562 e
    " mude a linha abaixo pela seguinte a ela :
    
    " Section: Default mappings {{{1
    " if !hasmapto('SpellCheck')
    " nmap   ss SpellCheck
    endif
    
    " por 
    
    " Section: Default mappings {{{1
    " if !hasmapto('SpellCheck')
    " nmap   su SpellCheck
    endif
    
    "Este plugin juntamente com a base br.ispell do Ueda (ime-usp) (usuários Debian
    "encontram este arquivo no pacote aspell-pt-br) permite realizar a correção
    "ortográfica no vim, sinalizando as palavras incorretas e sugerindo correções
    "Define a cor vermelha para palavras incorretas. Mais info: http://aspell.net,
    "www.ime.usp.br/~ueda/br.ispell/
    highlight SpellErrors guifg=Black guifg=Red
    "Caso as palavras incorretas não estam aparecendo destacadas, force:
    "highlight SpellErrors ctermfg=Red guifg=Red
    " 	   \ cterm=underline gui=underline term=reverse
    "Tipos de arquivos em que a correção será automaticamente habilitada
    let spell_auto_type="tex,mail,doc,text,html,sgml,otl,cvs"
    "Correções on the fly, modo inserção
    "let spell_insert_mode = 1
    "Usando o aspell como corretor (pode-se também utilizar o ispell)
    "let spell_executable = "aspell" 
    "let spell_options = "--encoding=UTF-8"
    "Configurando os dicionários das linguagems para utilizar no vim. Veja os
    "dicionários disponíveis com o comando 'aspell dump dicts'. Case esteja
    "utilizando o ispell, coloque 'brasileiro'. Pode-se configurar mais de um
    "dicionário - aqui configuramos o uso do dicionário de português e inglês.
    "Pode-se também utilizar o aspell executando 'aspell --lang=pt_BR check '
    "(adicionando o parâmetro '--encoding=UTF-8' se utilizar essa codificação) e
    "'ispell -d american ' para testar os verificadores ortográficos ispell e
    "aspell e a disponibilidade das bases de dados dos dicionários. '\sl' muda a
    "base utilizada
    "let spell_language_list = "pt_BR,english"
    "Desabilita o pulo automático ao verificar as sugestões de uma palavra
    "let spell_auto_jump = 1
    "Define para quais arquivos o destaque ('highlights') são permitidos
    "let spell_markup_ft = "html,php,xhtml,dtml,tex,mail,help,text,none"
    "Variável que habilita atalho para ir para a próxima palavra com erro
    "let spell_next_error_map = "\sn"
    "Variável que habilita atalho para ir para a palavra anterior marcada como erro
    "let spell_previous_error_map = "\sp"
    "Sugerida a linha abaixo em caso de bug com a lingua portuguesa
    "au! BufNewFile,BufRead * let b:spell_language="brazilian"
    "set spell spelllang=pt
    "------------------------------------------------------------------------------
    	

    12) Configurações do plugin 'CVim - cvim.zip'
    "12) Configurações do plugin 'CVim - cvim.zip' 
    "---------Configuracoes do plugin 'CVim - cvim.zip ----------------------------
    "- cvim			url : http://www.vim.org/scripts/script.php?script_id=213	last-update : 2012-08-20
    "- arquivos :
    "	- ~/.vim/autoload/mmtemplates/core.vim  
    "	- ~/.vim/c-support/codesnippets/calloc_double_matrix.c  
    "	- ~/.vim/c-support/codesnippets/calloc_int_matrix.c  
    "	- ~/.vim/c-support/codesnippets/main.c  
    "	- ~/.vim/c-support/codesnippets/main.cc  
    "	- ~/.vim/c-support/codesnippets/Makefile  
    "	- ~/.vim/c-support/codesnippets/Makefile.multi-target.template  
    "	- ~/.vim/c-support/codesnippets/Makefile.pro  
    "	- ~/.vim/c-support/codesnippets/print_array.cc.noindent  
    "	- ~/.vim/c-support/codesnippets/print_double_array.c.noindent  
    "	- ~/.vim/c-support/codesnippets/print_int_array.c.noindent  
    "	- ~/.vim/c-support/doc/ChangeLog  
    "	- ~/.vim/c-support/doc/c-hotkeys.pdf  
    "	- ~/.vim/c-support/doc/c-hotkeys.tex  
    "	- ~/.vim/c-support/rc/customization.cpp.vim  
    "	- ~/.vim/c-support/rc/customization.ctags  
    "	- ~/.vim/c-support/rc/customization.gvimrc  
    "	- ~/.vim/c-support/rc/customization.indent.pro  
    "	- ~/.vim/c-support/rc/customization.vimrc  
    "	- ~/.vim/c-support/README.csupport  
    "	- ~/.vim/c-support/scripts/wrapper.sh  
    "	- ~/.vim/c-support/templates/c.comments.template  
    "	- ~/.vim/c-support/templates/c.cpp.template  
    "	- ~/.vim/c-support/templates/c.idioms.template  
    "	- ~/.vim/c-support/templates/cpp.comments.template  
    "	- ~/.vim/c-support/templates/cpp.cpp.template  
    "	- ~/.vim/c-support/templates/cpp.idioms.template  
    "	- ~/.vim/c-support/templates/cpp.preprocessor.template  
    "	- ~/.vim/c-support/templates/cpp.statements.template  
    "	- ~/.vim/c-support/templates/c.preprocessor.template  
    "	- ~/.vim/c-support/templates/c.statements.template  
    "	- ~/.vim/c-support/templates/snippets.template  
    "	- ~/.vim/c-support/templates/Templates  
    "	- ~/.vim/c-support/wordlists/c-c++-keywords.list  
    "	- ~/.vim/c-support/wordlists/k+r.list  
    "	- ~/.vim/c-support/wordlists/stl_index.list  
    "	- ~/.vim/doc/csupport.txt        
    "	- ~/.vim/doc/templatesupport.txt  
    "	- ~/.vim/ftplugin/c.vim          
    "	- ~/.vim/ftplugin/make.vim       
    " 	- ~/.vim/plugin/c.vim            
    "	- ~/.vim/syntax/template.vim     
    "------------------------------------------------------------------------------
    	

    13) Configurações do plugin do vim 'C Support - csupport.zip'
    "13) Configurações do plugin do vim 'C Support - csupport.zip' 
    "---Configurações de plugin do vim 'C Support - csupport.zip'-------------------
    let g:C_AuthorName      = 'Rodrigo Ferreira Baroni'   
    let g:C_AuthorRef       = 'Baroni'                         
    let g:C_Email           = 'rodrigoferreirabaroni<-at->gmail.com'            
    let g:C_Company         = 'Universidade de São Paulo (USP)'
    "------------------------------------------------------------------------------
    	

    14) Configurações da macro 'matchit.vim'
    "14) Configurações da macro 'matchit.vim'
    "---Configurações de plugin do vim 'C Support - csupport.zip'-------------------
    let g:C_AuthorName      = 'Rodrigo Ferreira Baroni'   
    let g:C_AuthorRef       = 'Baroni'                         
    let g:C_Email           = 'rodrigoferreirabaroni<-at->gmail.com'            
    let g:C_Company         = 'Universidade de São Paulo (USP)'
    "------------------------------------------------------------------------------
    	

    15) Configurações do plugin STLRefVim - 'stlrefvim.tar.gz'
    "15) Configuracoes do plugin C Reference - STLRefVim - 'stlrefvim.tar.gz'
    "---Configurações de plugin do vim 'C Reference - STLRefVim' - stlrefvim.tar.gz
    " - c reference stlrefvim	url : http://www.vim.org/scripts/script.php?script_id=2353	last-update : 2008-08-20
    " - arquivos : 
    "	- ~/.vim/plugin/stlrefvim.vim
    "	- ~/.doc/stlrefvim.txt
    "Plugin que possui uma base de dados contendo a descrição e o protótipo das
    "principais funções da stl e recursos da linguagem
    "\tr : (t)-(r)eference - exibe uma documentação para a palavra sobre o cursor
    "\te : (t)-(e)xample - exibe um exemplo que utiliza a função sobre o cursor
    "------------------------------------------------------------------------------
    

    16) Configurações do plugin NERDTree - 'nerdtree.zip'
    "16) Configuracoes do plugin NERDTree - 'nerdtree.zip'
    "---Configurações do plugin NERDTree--------------------------------------------
    "- NERDTree			url : http://www.vim.org/scripts/script.php?script_id=1658	last-update : 2011-12-28
    " - arquivos
    "	 - doc/NERD_tree.txt       
    "	 - nerdtree_plugin/fs_menu.vim  
    "	 - nerdtree_plugin/exec_menuitem.vim  
    "	 - plugin/NERD_tree.vim    
    "	 - syntax/nerdtree.vim 
    
    "Principais comandos:
    "Abre uma tab com o conteúdo dos diretórios e arquivos para listagem:
    ":NERDTree [ | ] 
    "Abre uma tab a partir de um bookmark:
    ":NERDTreeFromBookmark  
    "Abre outra tab com o mesmo conteúdo do já aberto. Mudanças refletem:
    ":NERDTreeMirror 
    "Fecha uma tab:
    ":NERDTreeClose
    "Ações sobre os arquivos:
    "o :abre um arquivo
    "t :abre o arquivo selecionado em uma nova tab
    "i :abre o arquivo selecionado em uma janela dividida
    "s :abre o arquivo selecionado em uma janela dividida verticalmente
    "O :abre o arquivo selecionado recursivamente
    "x :fecha os nós antecessores
    "X :fecha os nós decorrentes
    "D :apaga o bookmark atual
    "P :muda para o nó raiz
    "p :muda para o nó antecessor primeiro do atual
    " :muda para o nó irmão próximo 
    " :muda para o nó irmão anterior
    "C :muda o nó raiz para o nó selecionado
    "u :muda o nó raiz para o nó acima
    "r :recursivamente atualiza o diretório atual
    "R :recursivamente atualiza a raiz atual
    "m :exibe o menu NERDTree
    "I :exibe/oculta arquivos ocultos
    "f :habilita/desabilita utilização de filtros para exibição dos arquivos
    "F :exibe/oculta arquivos
    "B :exibe/oculta a tabela de bookmarks
    "q :fecha a janela NERDTree
    "A :zoom na janela NERDTree
    "------------------------------------------------------------------------------
    

    17) Configurações do plugin Taglist-plus - 'taglist-plus.zip'
    "17) Configuracoes do plugin Taglist-plus - 'taglist-plus.zip' -----------------
    "---Configurações do plugin Taglist-plus----------------------------------------
    "- Taglist-plus			url http://www.vim.org/scripts/script.php?script_id=3504 	last-update : 	2011-03-18 
    " - arquivos
    "	 - doc/taglist-plus.txt
    "	 - plugin/taglist-plus.vim
    
    "
    "`:TlistToggle` exibe a janela taglist . Mais comandos podem ser encontrados com comando abaixo
    "`:help taglist-commands`.
    
    "[1]:http://discontinuously.com/2011/03/vim-support-javascript-taglist-plus/
    "[2]:https://github.com/int3/vim-taglist-plus
    "[3]:http://www.vim.org/scripts/script.php?script_id=3504
    "[4]:https://github.com/mozilla/doctorjs
    "[5]:https://launchpad.net/~richarvey/+archive/nodester
    "[6]:http://nodejs.org/#download
    "------------------------------------------------------------------------------
    
    


Parte III : Mapeamento de acoes, abreviacoes comummente utilizadas e dicas gerais

  • 1) Mapeamento de acoes
  • "Parte III : Mapeamento de acoes, abreviacoes comummente utilizadas e dicas gerais
    "1) Mapeamento de acoes 
    "-- Mapeamentos de ações para Teclas de Atalho --------------------------------
    "Vá para a localização exta da marca, ao invés do início da linha da marca
    nnoremap ' `
    "Mudando para modo paste
    set pastetoggle= 
    "->Atalhos para formatação
    map Q gq " Utilize Q para formatação, não modo ex
    "->Atalhos para recursos do plugin 'vim spell'
    map  :SpellCheck 
    map  :SpellExit
    map  :SpellProposeAlternatives
    map  :SpellChangeLanguage
    "->Atalhos para funções gerais
    ""Gerando HTML do código atual
    map  :runtime! syntax/2html.vim
    "Para atualização da lista de tags - plugin taglist
    nnoremap   :TlistSync
    "-> POTFILES
    " Copia texto em inglês para a área da tradução
    "imap  ?^$/msgidf"ly$j0f"pxF"a
    " Preenche o cabecalho padrao dos POs da FSF
    "map  :2,3s/YEAR/1999/e
    "        \:3s/FIRST AUTHOR/#MEU-NOME#/e
    "         \:3s/EMAIL@ADDRESS/#MEU-EMAIL#/e
    "         \/^"PO-Revision-Date:
    "         \f D:r!date '+\%Y-\%m-\%d \%H:\%M-0300\n"'kJ
    "         \/^"Last-Translator:f Da #MEU-NOME# <#MEU-EMAIL#>\n"
    "         \/^"Language-Team:
    "         \f Da Brazilian Portuguese \n"
    "         \/^"Content-Type:f=Da=iso-8859-1\n"
    "         \/^"Content-Transfer-Encoding:f Da 8BIT\n"
    "         \:1,15s/#MEU-NOME#/rodrigo ferreira baroni/
    "         \:1,15s/#MEU-EMAIL#/rodrigoferreirabaroni (a) gmail.com/
    "Para exibir a janela do plugin 'mini buffer explorer' com os arquivos abertos
    "(o mesmo resultado pode ser obtido com o comando '\mbe')
    "Exibir a diferença entre o arquivo original e o buffer alterado
    nmap  :w !diff -w -B -c5 -p - % >tmp.diff:sp tmp.diff
    "->Alguns mapeamentos para rápida movimentação entre a janelas, permitidas pelo
    "winmananger plugin : muito bom
    "Atalho para a janela acima (a janela com exibição do sistema de arquivos)
    map  :FirstExplorerWindow
    "Atalho para a janela abaixo (a janela da lista de tags do arquivo)
    map  :BottomExplorerWindow
    "Atalho para exibir um gerenciador de janelas, exibindo: 
    "1)Gerenciador de arquivos
    "2)Lista de tags (do plugin 'taglist')
    "3)Lista dos arquivos abertos (do plugin 'mini buffer explorer'
    "4)Janela de exibição do arquivo atual sendo exibido
    map  :WMToggle
    "Atalho para ir para a janela do 'Mini Buffer Explorer'
    map  \mbe
    "Atalho para a janela do arquivo aberto
    map 
      \mbe
      "Inserindo data do sistema
      " Campos de Data/Hora
      " %a - Day of the week
      " %b - Month
      " %d - Day of the month
      " %Y - Year
      " %H - Hour
      " %M - Minute
      " %S - Seconds
      " %Z - Time Zone
      map DD :r!date '+\%d/\%m/\%Y'kJA 
      "Seta para cima e para baixo movimentam entre linhas
      map  gk
      map  gj
      "Faz com que  funcione como no xterm (colando clipboard)
      noremap  
      noremap!  
    
    
    "Para ver qual mapeamento eh feito para alguma tecla e qual script faz - se tiver algum
    "	:verbose map 
    "       :verbose map! 
    "------------------------------------------------------------------------------
    
    "---------Comandos para mapeamento de invólucros (dobras)----------------------
    "Dobre comentários - qualquer lugar em um bloco de comentário
    noremap fc j[*zf]*
    "Dobre blocos - qualquer lugar em um bloco exeto colchetes
    noremap fb j[[zfaB
    "Dobre marcas - dobre até a marca
    noremap fm zf'a
    "Apague uma dobra
    noremap fd zd
    
    " v}zf				: seleciona visualmente um parágrafo e então "zipa" (fold) ele
    " set foldmethod=indent		: fold code by ident
    " set foldnestmax=1		: one max nesting [ funcoes nem modulos - dando uma checada ]
    " fold usage :			:
    " zo Zap Open			: abre um fold sobre o cursor . se 'count' is fornecido , este numero de folds em profundidade serao abertos
    " zc Zap Close			: fecha um fold sobre o cursor . 'se count' for fornecido , este numero de folds em profundidade serao fechados
    " zO Zap Open recursive		: abre todos folds seobre o cursor recursivamente
    " zC Zap Close recursive	: fecha todos os folds sobre o cursor recursivamente
    "------------------------------------------------------------------------------
    	

    2) Abreviacoes comumente utilizadas
    "2) Abreviacoes comumente utilizadas 
    "----Abreviações frequentemente utilizadas-------------------------------------
    "Trechos muito utilizados em programação C
    :ab #i #include
    :ab #d #define
    :ab #b /******************************************************************************
    :ab #e ******************************************************************************\
    :ab #l /*---------------------------------------------------------------------------*/
    "------------------------------------------------------------------------------
    	

    3) Dicas gerais
    "3) Dicas gerais
    "-Essencial: Algumas dicas úteis para edição e navegação em códigos fontes C---
    "gd 	: vai para a definição da variável
    "gD 	: o mesmo, mas para variáveis globais
    "ma		: marca localização do cursor como ponto 'a'
    "'a 		: retorna ao ponto 'a'
    "[[ 		: abertura de chaves acima do cursor (início de declaração de funções)
    "]]		: o mesmo, mas abaixo do cursor
    "[]		: fechamento de declaração de funções acima do cursor
    "[]		: o mesmo, mas abaixo do cursor
    "[{		: posiciona o cursor para o anterior '{' do escopo atual
    "%		: posiciona o cursor no correspondente símbolo #if, #else, {},
    "		  (), [], /* */
    ""Indica o comando linux a ser executando quando executar o comando vim ':make' e
    "qual o arquivo alvo, abrindo em seguida o arquivo de erro
    "set makeprg=gcc\  
    ""Indica o arquivo de erros da execução do make
    set makeef=make-erro.txt 
    " + p	: (No modo de inserção) - completa nomes de variáveis, funções,
    "		  nomes de arquivos, ..
    " + n 	: (No modo de inserção) - o mesmo que o anterior, mas em ordem
    "		  reversa das palavras sugeridas
    " + t	: (No modo de inserção) - ajusta automaticamente a identação,
    "		  baseado no identação configurada (set autoident,.. )
    " + d	: (No modo de inserção) - retorna à posição anterior do comando
    "		  anterior
    "->Navegação entre as janelas
    ":sball 	: Abre todas os buffers abertos em janelas (split buffer all)
    ":sn  	: Abre arquivo em nova janela (split next)
    " + w + =	: Deixa todas as janelas do mesmo tamanho
    " + w + _ : Maximiza a janela atual
    " + w + hjkl : Movimentação entre as janelas - cada letra h,j,k,l é uma
    "			movimento diferente
    " + w + HJKL : Movimentação das janelas - cada letra H,J,K,L é um
    "			movimento diferente
    "------------------------------------------------------------------------------
    
    "-Essencial: Algumas dicas gerais do VIM muito úteis---------------------------
    "Atenção - o sinal maior e menor apenas indicam o significado (exemplo: 
    "indica que deve ser inserido um letra do alfabeto no lugar
    " m			: marca a posicão do cursor com a letra (a,b,c,d,.. - ex: ma)
    " '			: retorna a posicão em marcada pela letra (ex: 'a )
    " ''				: retorna para a última posição do cursor após um movimento
    " "dd			: apaga a linha e armazena-a no buffer marcado pela letra 
    " "yy			: copia a linha e armazena-a no buffer marcado pela letra 
    " "p			: cola o conteúdo do buffer indicado pela letra
    "  + e			: Move a tela para cima sem alterar a posição do cursor 
    "  + y			: Move a tela para baixo sem alterar a posição do cursor
    " .				: repete a última ação (mas não movimentação de cursor)
    "  + g			: exibe informações sobre o arquivo (nome, nro de linhas, etc)
    "  + l			: limpa a tela e exibe novamente o arquivo
    " u				: desfaz a última alteração
    "  + r			: refaz a última alteração
    " U				: desfaz todas as alterações na linha (sem que tenha saído dela)
    " :set paste			: Muda para o formato de colagem que não altera a formatação
    "  +  : Cola o conteúdo selecionado visualmente ou pelo mouse
    " 0				: vai para o início da linha
    " $				: vai para o final da linha
    " wb			: vai  de palavras para trás
    " wf			: vai  de palavras para frente
    " |			: vai para a coluna do número indicado (desde que esta exista)
    " H				: vai para o início da tela
    " M				: vai para o meio da tela
    " L				: vai para o final da tela
    " :			: vai para a linha do número indicado
    " G				: vai para a última linha do arquivo
    "  + z			: para a execução do processo vim e vai para o shell
    " fg				: retorna para o último processo em segundo plano (para o vim)
    " {				: vai para o início do parágrafo
    " }				: vai para o fim do parágrafo
    " (				: vai para o início da sentença
    " )				: vai para o início da próxima sentença
    " [[				: vai para o início de uma sessão
    " ]]				: vai para o final de uma sessão
    " *				: procura a próxima ocorrência da palavra sobre o cursor
    " #				: procura pela ocorrência anterior da palavra sobre o cursor
    " /			: procura pela ocorrência do próximo padrão 
    " ?			: procura pela ocorrência do padrão em linhas anteriores
    " n				: repete a procura realizada
    " N				: repete a procura realizada  mas em linhas anteriores
    " o				: abre uma linha abaixo da atual e muda para o modo de inserção
    " O				: abre uma linha acima da atual e muda para o modo de inserção
    " J				: une duas linhas em uma só
    " !}sort			: ordena as linhas de um parágrafo alfabeticamente
    "------------------------------------------------------------------------------
    

    4) Obtendo ajuda no VIM
    "4) Obtendo ajuda no VIM
    "----Obtendo ajuda no VIM------------------------------------------------------
    "Obtendo ajuda: ':help ', exemplo :help colorscheme
    "Comandos disponíveis no modo 'EX' (modo ':')-> ':help holy-grail'
    "Adicionando arquivos de ajuda dos plugins: vim -c 'helptags ~/.vim/doc' -c 'q'
    "------------------------------------------------------------------------------
    


Parte IV : Criando um backup - armazenando as configuracoes do editor e os plugins

  • 1) Criando um backup - armazenando as configuracoes do editor e os plugins
  • "Parte IV : Criando um backup - armazenando as configuracoes do editor e os plugins
    "1) Criando um backup - armazenando as configuracoes do editor e os plugins ---
    " $ cd ~
    " altere 'hour' , 'minute' , 'day' , 'month' , 'year' propriamente - utilize o comando 'date' para obter estes valores
    " $ tar cjvf vimrc-and-plugins-backup-hour-minute-day-month-year.tar.bz2 .vimrc .vim/
    " $ mkdir -p personal/docs/vim/
    " $ mv  vimrc-and-plugins-backup-hour-minute-day-month-year.tar.bz2 personal/docs/vim/
    "------------------------------------------------------------------------------
    

    Para mais informações , veja: