".................................................. " Author: Jorge Pereira " File: .vimrc " Last Change: Thu 19 Mar 2009 12:16:17 AM BRT " ".................................................. set path="/usr/include/qt3,/usr/include/qt3/private,/usr/include/qt4,/usr/include/qt4/Qt,/usr/include/qt4/Qt/arch,/usr/include/qt4/QtGui,/usr/include/qt4/QtSql,/usr/include/qt4/QtSvg,/usr/include/qt4/QtXml,/usr/include/qt4/QtCore,/usr/include/qt4/QtCore/arch,/usr/include/qt4/QtTest,/usr/include/qt4/QtNetwork,/usr/include/qt4/QtUiTools,/usr/include/qt4/QtAssistant,/usr/include/qt4/QtDesigner,/usr/include/qt4/Qt3Support,/usr/include/qt4/QtOpenGL," imap :wqa! map :wqa! cab W w| cab Q q| cab Wq wq| cab wQ wq| cab WQ wq " Guarda posicao do cursor e historico da linha de comando set viminfo='10,\"30,:40,%,n~/.viminfo au BufReadPost * if line("'\'")|execute("normal `\'")|endif " Mantem identação do texto colado por + set paste "................................................OPCOES DO SET set nocompatible " permite uso do backspace sempre no modo de insercao set backspace=indent,eol,start set history=100 set ruler " mostra posicao do cursor set showcmd set is hls ic scs magic set sm " ShowMatch: mostra par do paranteses/chaves recem fechado set hid set aw " AutoWrite: gravacao automatica a cada alteracao set ai " AutoIdent: identacao automatica set ts=2 " TabStop set et " ExpandTab: troca TABs por espacos retab " converter os TABs ja existentes set showcmd " mostra comando sendo executado set laststatus=2 " mostra N linhas de estado set textwidth=100 " quebra de linha set smartindent " nao sei para que funciona set visualbell " pisca tela ao inves de bipar set wrap " forca quebra de linha set sw=4 " numero de colunas para o comando set wildmode=longest,list:full " completacao do TAB como no bash set undolevels=1000 " undoing 1000 changes should be enough :-) set updatecount=100 " write swap file to disk after each 20 characters set updatetime=6000 " write swap file to disk after 6 inactive seconds set noerrorbells " don't make noise " O trecho abaixo formata a barra de status com algumas opções interessantes! " mostra o código ascii do caractere sob o cursor e outras coisas mais set statusline=%F%m%r%h%w\ [FORMATO=%{&ff}]\ [TIPO=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [linha=%04l,%04v][%p%%]\ [LINHAS=%L] set laststatus=2 " Sempre exibe a barra de status set nu js set backup set backupdir=~/.vim/backup "................................................CORES "============= Esquema de cores ==================== " a vantagem de manter um esquema de cores " no próprio vimrc é que você fica independente " de sistema, a definição de cores está no próprio vimr " " Vim color file " Maintainer: Hans Fugal " Last Change: $Date: 2003/05/06 16:37:49 $ " Last Change: $Date: 2003/06/02 19:40:21 $ " URL: http://hans.fugal.net/vim/colors/desert.vim " Version: $Id: desert.vim,v 1.6 2003/06/02 19:40:21 fugalh Exp $ " cool help screens " :he group-name " :he highlight-groups " :he cterm-colors set background=dark "if version > 580 "" no guarantees for version 5.8 and below, but this makes it stop "" complaining "hi clear "if exists("syntax_on") "syntax reset "endif "endif "let g:colors_name="desert" " "hi Normal guifg=White guibg=grey20 " "" highlight groups "hi Cursor guibg=khaki guifg=slategrey ""hi CursorIM ""hi Directory ""hi DiffAdd ""hi DiffChange ""hi DiffDelete ""hi DiffText ""hi ErrorMsg "hi VertSplit guibg=#c2bfa5 guifg=grey50 gui=none "hi Folded guibg=grey30 guifg=gold "hi FoldColumn guibg=grey30 guifg=tan "hi IncSearch guifg=slategrey guibg=khaki ""hi LineNr "hi ModeMsg guifg=goldenrod "hi MoreMsg guifg=SeaGreen "hi NonText guifg=LightBlue guibg=grey30 "hi Question guifg=springgreen "hi Search guibg=peru guifg=wheat "hi SpecialKey guifg=yellowgreen "hi StatusLine guibg=#c2bfa5 guifg=black gui=none "hi StatusLineNC guibg=#c2bfa5 guifg=grey50 gui=none "hi Title guifg=indianred "hi Visual gui=none guifg=khaki guibg=olivedrab ""hi VisualNOS "hi WarningMsg guifg=salmon ""hi WildMenu ""hi Menu ""hi Scrollbar ""hi Tooltip " "" syntax highlighting groups "hi Comment guifg=SkyBlue "hi Constant guifg=#ffa0a0 "hi Identifier guifg=palegreen "hi Statement guifg=khaki "hi PreProc guifg=indianred "hi Type guifg=darkkhaki "hi Special guifg=navajowhite ""hi Underlined "hi Ignore guifg=grey40 ""hi Error "hi Todo guifg=orangered guibg=yellow2 " "" color terminal definitions "hi SpecialKey ctermfg=darkgreen "hi NonText cterm=bold ctermfg=darkblue "hi Directory ctermfg=darkcyan "hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1 "hi IncSearch cterm=NONE ctermfg=yellow ctermbg=green "hi Search cterm=NONE ctermfg=grey ctermbg=blue "hi MoreMsg ctermfg=darkgreen "hi ModeMsg cterm=NONE ctermfg=brown "hi LineNr ctermfg=3 "hi Question ctermfg=green "hi StatusLine cterm=bold,reverse "hi StatusLineNC cterm=reverse "hi VertSplit cterm=reverse "hi Title ctermfg=5 "hi Visual cterm=reverse "hi VisualNOS cterm=bold,underline "hi WarningMsg ctermfg=1 "hi WildMenu ctermfg=0 ctermbg=3 "hi Folded ctermfg=darkgrey ctermbg=NONE "hi FoldColumn ctermfg=darkgrey ctermbg=NONE "hi DiffAdd ctermbg=4 "hi DiffChange ctermbg=5 "hi DiffDelete cterm=bold ctermfg=4 ctermbg=6 "hi DiffText cterm=bold ctermbg=1 "hi Comment ctermfg=darkcyan "hi Constant ctermfg=brown "hi Special ctermfg=5 "hi Identifier ctermfg=6 "hi Statement ctermfg=3 "hi PreProc ctermfg=5 "hi Type ctermfg=2 "hi Underlined cterm=underline ctermfg=5 "hi Ignore cterm=bold ctermfg=7 "hi Ignore ctermfg=darkgrey "hi Error cterm=bold ctermfg=7 ctermbg=1 syntax on " sintex colorida " se o sistema é um unix setar o terminal para bash if has("unix") let &shell="bash" set clipboard=autoselect " Let's be friendly :) autocmd VimEnter * echo "Seja bem vindo ao vim. Seu sistema é Linux!" else autocmd VimEnter * echo "Seja bem vindo ao vim. Seu sistema é Windows!" endif "----------------------------------------------------- " Remove Ctrl+M do final de linhas do DOS " get rid of if has("user_commands") " remove ^M from the file com! RemoveCtrlM :%s/^M/\r/g " change to directory of current file com! CD cd %:p:h endif "................................................COMANDOS AUTOMATICOS " Palavras-chave para destacar em qualquer tipo de arquivo syn case ignore syn keyword p_c Jorge Pereira hi p_c ctermbg=white ctermfg=black " arquivos .sh sao sempre bash au FileType sh let b:is_bash=1 " Spec: arquivos spec sao XML (quando trabalho com PRADO framework) au FileType spec let b:is_xml=1 " Mail: Configuracoes especiais para arquivos de email au FileType Mail set fo=ctq tw=65 et " Man: Paginas de manual sao na verdade textos em NROFF au BufNewFile,BufRead *.man set ft=nroff " TXT: Arquivos texto tem tratamento especial au BufNewFile,BufRead *.txt set tw=78 ts=4 au BufNewFile,BufRead *.txt set ft=txt au BufNewFile,BufRead *README,*NEWS,*TODO set ft=txt au BufNewFile,BufRead emails.txt set paste et tw=70 " Txt2tags au BufNewFile,BufRead *.t2t set ft=txt2tags au BufNewFile,BufRead *correria/*.txt set ft=txt2tags au BufNewFile,BufRead *.pm6 set ft=pm6 " Python: TAB colorido e outras configuracoes au FileType python set ts=4 tw=80 noet au FileType python syn match pythonTAB '\t\+' au FileType python hi pythonTAB ctermbg=blue au FileType python set list listchars=tab:·· au FileType python hi pythonString ctermfg=lightgreen au FileType python hi pythonRawString ctermfg=lightgreen " HTML: funcoes particulares para trabalhar com arquivos HTML " usa aquivo modelo quando criar um novo arquivo HTML "au BufNewFile *.html read ~/sources/templates/main.html map ,hd G:?^$O
-- \*D *U:r!echo ${PWD\#*/html}/%kJxo
" PHP: funcoes particulares para trabalhar com PHP " usa modelo quando criar um novo arquivo PHP "au BufNewFile *.php read ~/sources/templates/main.php "................................................PSEUDO FUNCOES " MostraTab: mostra TAB no inicio e espacos no fim das linhas "map ,mt /^\t\+\\|\s\+$ " PalavrasRepetidas: procura palavras repetidas no texto "map ,pr /\<\(\w*\) \1\> " JustificaEmail: justifica os textos de email com o justificador em sed "vmap ,je :!justify.sed " muda de janelas imap i map " Redimensionar a janela com " ALT+seta à direita e esquerda map :resize +2 map :resize -2 "................................................DICIONARIO E ORTOGRAFIA " Dicionario para procurar auto-complemento de palavras "set dictionary=/home/lucas/.ispell_br " Completa uma palavra "imap " Da sequencia a essa palavra "imap " Procura no dicionario "imap " Passa um spell no aquivo "imap :!spell % "====== complementação de palavras ==== "usa o tab em modo insert para completar palavras function! InsertTabWrapper(direction) let col = col('.') - 1 if !col || getline('.')[col - 1] !~ '\k' return "\" elseif "backward" == a:direction return "\" else return "\" endif endfunction inoremap =InsertTabWrapper ("forward") inoremap =InsertTabWrapper ("backward") " =========================================== " Função para pular para uma linha qualquer " ir para linha " ir para uma linha expecífica function! GoToLine() let ln = inputdialog("ir para a linha...") exe ":" . ln endfunction "no meu caso o mapeamento é com Alt-l "use o que melhor lhe convier imap :call GoToLine() nmap :call GoToLine() " =============== DATA AUTOMÁTICA =========================== " insira na em seus arquivos = "ultima modificação:" " em qualquer das três primeiras linhas fun! SetDate() mark z if getline(1) =~ ".*ultima modificação:" || \ getline(2) =~ ".*ultima modificação:" || \ getline(3) =~ ".*ultima modificação:" || \ getline(4) =~ ".*ultima modificação:" || \ getline(5) =~ ".*ultima modificação:" || \ getline(6) =~ ".*ultima modificação:" exec "1,6s/\s*ultima modificação: .*$/ultima modificação: " . strftime("%c") . "/" endif exec "'z" endfun " abaixo a chamada a função de data que é chamada toda vez que você " salva um arquivo preexistente fun! LastChange() mark z if getline(1) =~ ".*Last Change:" || \ getline(2) =~ ".*Last Change:" || \ getline(3) =~ ".*Last Change:" || \ getline(4) =~ ".*Last Change:" || \ getline(5) =~ ".*Last Change:" exec "1,5s/\s*Last Change: .*$/Last Change: " . strftime("%c") . "/" endif exec "'z" endfun " coloquei duas opções (alteração e modificação), assim " não tem perigo de você esquecer e o sistema " não atualizar a data do salvamento, outra melhoria na função " é que agora é válida para qualquer tipo de arquivo. se usar " num html por exemplo insira um começo de comentário na linha " da data e feche o comentário na próxima linha " abaixo a chamada a função de data que é chamada toda vez que você " salva um arquivo preexistente au BufWritePre * call SetDate() au BufWritePre * call LastChange() " outra funcionalidade extremamente interessante é o autocomando, que é " " executado automaticamente dependendo do nome ou tipo do arquivo, no " " seu carregamento ou saída do editor. " " " " se você tem um arquivo com uma extensão qualquer, como .xyz e quer que " " o vim o interprete como um arquivo HTML, diga para o vim configurar o " " ft (FileType) ao abrir um arquivo novo (BufNewFile) ou já existente " " (BufRead) com essa extensão. au BufNewFile,BufRead *.xyz set ft=html " ou ainda, se for um arquivo de um tipo já reconhecido pelo vim, use " " diretamente a opção FileType. vamos usar de exemplo a linguagem python " " onde os TABs indicam os blocos de comandos, então é legal `vê-los`. " " " " para isso definimos uma regra rápida de sintaxe chamada `pythonTAB` e " " a ela associamos a cor azul. além disso definimos algumas opções com o " " comando set e para fechar, trocamos a cor das "strings" para verde, " " porque aquele rosinha é muito palha. au FileType python syn match pythonTAB '\t\+' au FileType python hi pythonTAB ctermbg=blue au FileType python set ts=4 tw=80 noet au FileType python hi pythonString ctermfg=darkgreen " abreviatura para o meu nome iab 1a. 1ª iab 2a. 2ª iab 3a. 3ª iab 4a. 4ª iab 5a. 5ª iab 6a. 6ª iab 7a. 7ª iab 8a. 8ª iab 9a. 9ª iab 10a. 10ª iab 11a. 11ª iab 12a. 12ª iab 13a. 13ª iab 14a. 14ª iab 15a. 15ª " e já que estamos mexendo com a sintaxe, que tal trocar a cor do texto " " daquela seleção que aparece quando você procura algo com o comando / ? " " é fácil, basta definir a cor do componente da sintaxe. ah sim, a opção " " hls (veja abaixo) deve estar ativa. " " " " você pode colocar as cores que quiser, em inglês. note que é ctermBG e " " FG, de background e foreground (fundo e letra). e veja também que o " " IncSearch (busca enquanto você digita) é invertido! " " hi Search ctermbg=green ctermfg=black hi IncSearch ctermbg=black ctermfg=cyan " "coloca a data tipo Ter 26/Out/2004 hs 10:53 na linha atual iab ,d =strftime("%b %a, %Y") iab ,m set number imap ,t :tabnew nnoremap :tabnext nnoremap :tabprevious map :tabf map :close