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 :
- 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
. 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 .
- 1) Criando um backup das configuracoes presentes do editor Entre no diretorio home do usuario
" 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 .
$ 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 "--------------------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' "---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' "----- 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' "--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' "-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 "---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 "---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çãonmap 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 ' nmaps :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' "--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' "---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' "---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' "--------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' "---------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' "---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' "---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) 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) 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) 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 ?^$ /msgid f"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 "----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 "-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 "----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: