vim (.vimrc)
vimrc cheio de firulas
Categoria: Vim
Software: vim
[ Hits: 9.361 ]
Por: Sérgio Luiz Araújo Silva
Tem coisas do tipo:
Atualizar data a cada vez que salvar o arquivo,
inserir número de linhas (dentro de um arquivo) e não apenas visualizar. Uma barra de status que exibe o valor decimal e hexa do caractere sob o cursor ... e muito mais :)
" ultima modificação: Ter 14 Dez 2004 15:49:44 BRST
" arquivo de configuração do vim
" ( O O )
" ====oOO==(_)==OOo=====
" Linhas comentadas são iniciadas por (") aspas duplas
" Permite recarregar o vim para que modificações no
" próprio vimrc seja ativadas com o mesmo sendo editado
nmap <F12> :<C-u>source $HOME/.vimrc <BAR> echo "Vimrc recarregado!"<CR>
" editar o .vimrc
map ,v :e ~/.vimrc<CR>
" Recarrega o .vimrc sem fecha-lo
map ,u :source ~/.vimrc<CR>
"Auto formatação para parágrafos
map <F8> gqap
" By default, go for an indent of 4
set shiftwidth=4
set softtabstop=4
set viminfo=%,'50,\"100,:100,n~/.vim/.viminfo
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
set incsearch " habilita busca incremental
set ts=4 " Paradas de tabulação com 4 espaços
" Mover linhas com: Ctrl+(seta abaixo) ou (seta acima)
" tem que estar em modo normal!
map <C-Down> <esc>ddp<esc>
map <C-Up> <esc>ddkP<esc>
"-----------------------------------------------------
" se há modo gráfico ou se não (set de cores diferentes)
" este set de cores foi colocado aqui pois pode não existir
" baixe temas em: www.vi-improved.org
if has("gui_running")
" Vim color file
" Maintainer: Datila Carvalho <datila@saci.homeip.net>
" Last Change: November, 3, 2003
" Version: 0.1
" This is a VIM's version of the emacs color theme
" _Dark Blue2_ created by Chris McMahan.
""" Init stuff
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
" Vim color file
" Maintainer: Ajit J. Thakkar (ajit AT unb DOT ca)
" Last Change: 2003 Sep. 02
" Version: 1.0
" URL: http://www.unb.ca/chem/ajit/vim.htm
" This GUI-only color scheme has a blue-black background
let colors_name = "dusk"
hi Normal guifg=ivory guibg=#1f3048
" Groups used in the 'highlight' and 'guicursor' options default value.
hi ErrorMsg gui=NONE guifg=Red guibg=Linen
hi IncSearch gui=NONE guibg=LightBlue guifg=Black
hi ModeMsg gui=NONE guifg=fg guibg=bg
hi StatusLine gui=NONE guifg=DarkBlue guibg=Grey
hi StatusLineNC gui=NONE guifg=Grey50 guibg=Grey
hi VertSplit gui=NONE guifg=Grey guibg=Grey
hi Visual gui=reverse guifg=fg guibg=LightSkyBlue4
hi VisualNOS gui=underline guifg=fg guibg=bg
hi DiffText gui=NONE guifg=Yellow guibg=LightSkyBlue4
hi Cursor guibg=Green guifg=Black
hi lCursor guibg=Cyan guifg=Black
hi Directory guifg=LightGreen guibg=bg
hi LineNr guifg=MistyRose3 guibg=bg
hi MoreMsg gui=NONE guifg=SeaGreen guibg=bg
hi NonText gui=NONE guifg=Cyan4 guibg=#102848
hi Question gui=NONE guifg=LimeGreen guibg=bg
hi Search gui=NONE guifg=SkyBlue4 guibg=Bisque
hi SpecialKey guifg=Cyan guibg=bg
hi Title gui=NONE guifg=Yellow2 guibg=bg
hi WarningMsg guifg=Tomato3 guibg=Linen
hi WildMenu gui=NONE guifg=SkyBlue4 guibg=Bisque
hi Folded guifg=MistyRose2 guibg=bg
hi FoldColumn guifg=DarkBlue guibg=Grey
hi DiffAdd gui=NONE guifg=Blue guibg=LightCyan
hi DiffChange gui=NONE guifg=white guibg=LightCyan4
hi DiffDelete gui=NONE guifg=LightBlue guibg=LightCyan
" Colors for syntax highlighting
hi Constant gui=NONE guifg=MistyRose3 guibg=bg
hi String gui=NONE guifg=LightBlue3 guibg=bg
hi Special gui=NONE guifg=GoldenRod guibg=bg
hi Statement gui=NONE guifg=khaki guibg=bg
"hi Statement gui=NONE guifg=#d7cd7b guibg=bg
hi Operator gui=NONE guifg=Chartreuse guibg=bg
hi Ignore gui=NONE guifg=bg guibg=bg
hi ToDo gui=NONE guifg=DodgerBlue guibg=bg
hi Error gui=NONE guifg=Red guibg=Linen
hi Comment gui=NONE guifg=SlateGrey guibg=bg
hi Comment gui=NONE guifg=Lavender guibg=bg
hi Identifier gui=NONE guifg=BlanchedAlmond guibg=bg
hi PreProc gui=NONE guifg=#ffa0a0 guibg=bg
hi Type gui=NONE guifg=NavajoWhite guibg=bg
hi Underlined gui=underline guifg=fg guibg=bg
set gfn=Bitstream\ Vera\ Sans\ Mono\ 10
else
colo elflord
endif
" se estiver no KDE use a fonte: Bistream Vera Sans
if has("gui_kde")
set guifont=Bistream\ Vera\Sans/12/-1/5/50/0/0/0/0/0
endif
"-----------------------------------------------------
" 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
"-----------------------------------------------------
" 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]\ [POSIÇÃO=%04l,%04v][%p%%]\ [TAMANHO=%L]
set laststatus=2 " Sempre exibe a barra de status
"---------------- Mapeamentos ----------------------------
" make search results appear in the middle of the screen
" faz os resultados da busca aparecerem no meio da tela
nmap n nzz
nmap N Nzz
nmap * *zz
nmap # #zz
nmap g* g*zz
nmap g# g#zz
" --------------------------------------
" Seta fechamento automático para parêntese
" Set automatic expansion of parenthesis/brackets
inoremap ( ()<esc>:call BC_AddChar(")")<cr>i
inoremap { {}<esc>:call BC_AddChar("}")<cr>i
inoremap [ []<esc>:call BC_AddChar("]")<cr>i
" inoremap " ""<esc>:call BC_AddChar("\"")<cr>i
" mapeia CTRL+j para pular fora de parênteses colchetes etc...
inoremap <C-j> <esc>:call search(BC_GetChar(), "W")<cr>a
" Function for the above
function! BC_AddChar(schar)
if exists("b:robstack")
let b:robstack = b:robstack . a:schar
else
let b:robstack = a:schar
endif
endfunction
function! BC_GetChar()
let l:char = b:robstack[strlen(b:robstack)-1]
let b:robstack = strpart(b:robstack, 0, strlen(b:robstack)-1)
return l:char
endfunction
" --------------------------------------
" inserir linhas e continuar em modo normal
map ,o o<ESC>:echo<CR>
map ,O O<ESC>:echo<CR>
" windows-style key mappings
" estilo de atalhos do windows
" copy - copiar
vmap <C-C> y
" paste - colar
nmap <C-V> p
imap <C-V> <C-O>p
" cut - cortar
vmap <C-X> x
" undo - desfazer
noremap <C-Z> u
inoremap <C-Z> <C-O>u
" select all - selecionar tudo
map <C-a> <esc>ggvG
"-----------------------------------------------------
" o mapeamento abaixo coloca e retira a numeração
" o sistema alterna a numeração para ativa ou desativada
map <F11> <esc>:set nu!<cr>
map <S-F12> <esc>:dig<cr> " mostra os digrafos do tipo Word®
" mapeamento para salvar com CTRL+s
map <C-S> :w<CR>
imap <C-S> <C-O><C-S>
cmap <C-S> <C-C><C-S>
" salva com F9 (observe que é para no modo insert tem que dar <esc>)
map <F9> <esc>:w<cr>
"Word completion
"Complementação de palavras
set dictionary+=/usr/dict/words
set complete=.,w,k
set infercase
" make all windows the same size when adding/removing windows
set noequalalways
" Affiche la date au format RFC822 - ftplugin/debchangelog. Nico
function! Date822()
let savelang = v:lc_time
execute "language time C"
let dateandtime = strftime("%a, %d %b %Y %X %z")
execute "language time " . savelang
return dateandtime
endfunction
iab debdate <C-R>=Date822()<CR>
" Mapeamento para apagar com Backspace
map <BS> X
"-----------------------------------------------------
" oculta o destaque das buscas, e exibe de novo com shift+F11
" tira as cores das ocorrências de busca e recoloca (booleano)
nno <S-F11> :set hls!<bar>set hls?<CR>
" seta: numeração, indentação expansão de tab para espaços
" mostra fechamento de parêntese, mostra régua, modo em que
" está etc.
set nu ai et sm js
set showcmd showmode
set ruler
set backup
set backupdir=~/tmp
syntax enable
highlight PALAVRAS ctermbg=red
syntax keyword PALAVRAS linux Nota nota
"-----------------------------------------------------
" Destaca espaços e tabs redundantes
" caso queira usar descomente as ultimas linha e reinicie o
" vim ou pressione ,u caso etnha a função de recarregar (veja linha17)
" Highlight redundant whitespace and tabs.
highlight RedundantWhitespace ctermbg=red guibg=red
match RedundantWhitespace /\s\+$\| \+\ze\t/
" for txt, autoformat and wrap text at 70 chars.
autocmd BufNewFile,BufRead *.txt set wrapmargin=70 textwidth=70
" Habilita a detecção do tipo de arquivo
" Enable file type detection
" Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on
"-----------------------------------------------------
" dá permissão para arquivos dos tipos descritos abaixo
" Automatically give executable permissions if filename ends in .sh, .pl or .cgi
au BufWritePost *.sh,*.pl,*.cgi :!chmod a+x <afile>
"-----------------------------------------------------
" Automatically give executable permission to scripts starting
" with #!/usr/bin/perl and #!/bin/sh
au BufWritePost * if getline(1) =~ "^#!/bin/[a-z]*sh" ||
\ getline(1) =~ "^#!/usr/bin/perl" | silent execute "!chmod a+x <afile>" | endif
"----------------- Abreviações --------------------
" abreviatura para o meu nome
ab slas Sérgio Luiz Araújo Silva
"coloca a data tipo Ter 26/Out/2004 hs 10:53 na linha atual
iab ,d <C-R>=strftime("%a %d/%b/%Y hs %H:%M")<CR>
iab ,m voyeg3r@gmail.com
" abreviações para correção ortográfica
iab tambem também
iab teh the
" a função (strftime) é predefinida pelo sistema
iab YDATE <C-R>=strftime("%a %d/%b/%Y hs %H:%M")<CR>
iab HDATE <C-R>=strftime("%a %d/%b/%Y hs %H:%M")<CR>
" Example: 1998-11-05 19:20:43 MST
" Estas linhas sao para não dar erro
" na hora de salvar arquivos
cab W w
cab Wq wq
cab wQ wq
cab WQ wq
cab Q q
" ===== 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:"
exec "1,5s/\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! SetaData()
mark z
if getline(1) =~ ".*ultima alteração:" ||
\ getline(2) =~ ".*ultima alteração:" ||
\ getline(3) =~ ".*ultima alteração:"
exec "1,5s/\s*ultima alteração: .*$/ultima alteração: " . 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 SetaData()
"==== Fim da Data Automática ===============
" === Cria um registro de alterações de arquivo ========
" ChangeLog entry convenience
" Função para inserir um status do arquivo
" cirado: data de criação, alteração, autor etc
fun! InsertChangeLog()
normal(1G)
call append(0, "Arquivo")
call append(1, "Criado: " . strftime("%a %d/%b/%Y hs %H:%M"))
call append(2, "ultima modificação: " . strftime("%a %d/%b/%Y hs %H:%M"))
call append(3, "Autor: Sérgio Luiz Araújo Silva")
normal($)
endfun
map ,cl :call InsertChangeLog()<cr>A
" Cria um cabeçalho para scripts bash
fun! InsertHeadBash()
normal(1G)
call append(0, "#!bin/bash")
call append(1, "# Criado em:" . strftime("%a %d/%b/%Y hs %H:%M"))
call append(2, "# ultima modificação:" . strftime("%a %d/%b/%Y hs %H:%M"))
call append(3, "# Departamento Estadual de Trânsito - DETRAN/CE")
call append(3, "# Propósito do script")
normal($)
endfun
map ,sh :call InsertHeadBash()<cr>A
" 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
"-----------------------------------------------------
" HTML: Funcoes particulares para editar arquivos HTML
" Cria um esqueleto de arquivo HTML ao abrir um arquivo novo .html
" Should stop HTML Files auto-indenting
"-----------------------------------------------------
"augroup html
" au! <--> Remove all html autocommands
" au!
" au BufNewFile,BufRead *.html,*.shtml,*.htm set ft=html
" au BufNewFile,BufRead,BufEnter *.html,*.shtml,*.htm so ~/docs/vim/.vimrc-html
" au BufNewFile *.html 0r ~/docs/vim/skel.html
" au BufNewFile *.html*.shtml,*.htm /body/+
" au BufNewFile,BufRead *.html,*.shtml,*.htm set noautoindent
"augroup end
"-----------------------------------------------------
"-----------------------------------------------------
" Procure usar a função "InsertHeadBash()" com o mesmo propósito
" das linhas abaixo. A função citada insere um cabeçalho pronto
" com "change log".
" autocomandos para scripts
"augroup sh
" au!
" au BufNewFile *.sh 0r ~/docs/vim/skel.sh
" au BufNewFile,BufRead *.sh set ts=4
"augroup end
"-----------------------------------------------------
" 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 será aberto no ultimo ponto em
" que foi editado
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
"
" insere número de linhas com ,n
map ,n :%s/^/\=line('.') . ' ' <cr>
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Quais os códigos mais dificeis que vcs sabem fazer? (9)
Fiz uma pergunta no fórum mas não consigo localizar (20)
Pfsense inacessivel após um periodo de tempo (1)
Não consigo instalar distro antiga no virtualbox nem direto no hd (9)









