Está en la página 1de 31

" ****************************************************************************

" * University: Universidade Federal Do Rio de Janeiro


*
" * Department: Departamento De Eletrnica e Computao Del - UFRJ
*
" *
Author: Ivan Carlos Da Silva Lopes
*
" *
Mail: <ivanczar78@yahoo.com.br, ivan.carlos78@gmail.com>
*
" *
Url: <URL:http://www.del.ufrj.br/~ivanczar>
*
" * ------------------------------------------------------------------------ *
" *
File: .vimrc
*
" *
License: GPL
*
" *
Version: 1.0
*
" *
Created: 10.03.2002 09:27:44
*
" * Last Update: 17.01.2005 03:08:32
*
" *Requirements: $/Home/data folder with configuration files
*
" *Installation: - As dotfile drop the file into your $HOME/ folder.
*
" *
- In Command line put $vim -U .vimrc.
*
" *
*
" ****************************************************************************
"
_
"
__ _(_)_ __ ___ _ __ ___
"
\ \ / / | '_ ` _ \| '__/ __|
"
\ V /| | | | | | | | | (__
"
(_) \_/ |_|_| |_| |_|_| \___|
"
$ figlet -c .vimrc
"
"
"LEIAME sobre .vimrc (Verso 1.0) / 23.01.2005 03:17:28
"
"
I N D I C E
"--------------------------------------------------------------"
" *47
- INTRODUCAO
" *93
- INSTALACAO
" *228
- CONFIGURACAO DO AMBIENTE DE EDICAO
" *993
- FUNCOES E MAPEAMENTOS PADROES
" *1067
- ARQUIVOS CARREGADOS
" *1297
- DEBUG E ALTERACOES DO DOCUMENTO
" *1321
- NOTAS POR VERSAO
" *1327
- AJUDA
" *1344
- BIBLIOGRAFIA
" *1404
- CREDITOS
" *1441
- DICAS
"
"--------------------------------------------------------------"
"
"=============================================================================
"I N T R O D U C A O
(VI-IMproved)
"=============================================================================
" VI um Editor Visual (do ingls Visual Interface). Em um editor visual
" podemos ver as linhas que esto sendo editadas, ao contrrio do sed por
" exemplo que um editor no visual.
"
"(1) VI - Visual Interface
"
" VI foi programado por William Joy na Universidade da Califrnia como parte
" da distribuio BSD. Posteriormente usado pela AT&T, e foi inserido desde
" ento na base do Unix.
"
"(2) VIM - VI-IMproved
"

" Vim (VI iMproved) um editor de texto altamente configurvel projetado de


" forma a permitir a edio rpida e eficiente de texto. uma verso
" melhorada do editor vi que distribudo com a maioria dos sistemas UNIX.
"
" O autor principal e mantenedor, Bram Moolenaar <bram@vim.org>.
" HomePage do vim na WWW:
" http://www.vim.org/
"
"(3) GVIM - Graphic-VI-IMproved
"
" O vim no modo grfico e com suporte a mouse. A grande vantagem dessa verso
" a possibilidade de configurar o editor como uma ide de programao onde
" onde pode-se criar botes e janelas.
"
"
"
" Arquivo[e ou]tipo
Definio
" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"
" Dotfiles
Arquivos conhecidos como dotfile ou Prototype Dotfiles
"
contm as configuraes iniciais de um programa.
"
" vimrc
Arquivo do tipo dotfile que contm as configuraes do
"
ambiente de edio do editor visual Vim.
"
" nomeArquivo.vim
Arquivo do tipo vim que contm scripts vim. Scripts-vim
"
so usados para configurar cores e ou automatizar
"
editorao.
"
"
"
"=============================================================================
"I N S T A L A C A O
(VI-IMproved)
"=============================================================================
"
" O arquivo .vimrc pode ser instalado de duas formas distintas, sendo elas
" colocando o arquivo em questo em seu diretrio de trabalho, ou invocando o
" mesmo usando o comando vi[m] -U .vimrc arquivo_a_ser_editado no prompt do
" shell.
"
"
"
" Configurao de variveis de ambiente
" ------------------------------------"
" Algumas variveis de ambiente podem ser usadas para alterar o
" comportamento padro das funes. Basta defini-las em seu .vimrc ou na
" prpria linha de comando antes de chamar as funes. So elas:
"
"
$ICMAIL[0X] - Endereo de Mail do usurio
"
$ICURL[0X]
- Pagina de internet do Usurio
"
$ICPATHCONF - Caminho completo para o diretrio com as configuraes
"
$ICPATHBACKUP - Caminho completo para o diretrio de armqzenamento
"
de Backup
"
" Uma forma prtica de se trabalhar com variveis de ambiente definilas em
" algum arquivo shell de configurao, por exemplo, dentro do arquivo
" .bashrc adicione as seguintes linhas:
"
"
export MAIL01="ivanczar78@yahoo.com.br"

"
"
"
"
"
"
"
"
let
let
let
let
let
let
let
let

export
export
export
export

MAIL02="ivan.carlos78@gmail.com"
URL01="http://www.del.ufrj/~ivanczar/"
PATHBACKUP="/cygdrive/G/principal/work/bkup"
PATHCONF="~/data"

Feito isso, basta usar variveis-vim de ambiente no formato let $name-Var


para que qualqueir funcao ou chamada vim possa utilizar estas variveis.
$ICAUTOR=expand($AUTOR)
$ICUNIVERSIDADE=expand($UNIVERSIDADE)
$ICDEPARTAMENTO=expand($DEPARTAMENTO)
$ICMAIL01=expand($MAIL01)
$ICMAIL02=expand($MAIL02)
$ICURL01=expand($URL01)
$ICPATHCONF=expand($PATHCONF)
$ICPATHBACKUP=expand($PATHBACKUP)

"
" importante ressaltar que o formato acima pode ser substitudo por
" variveis globais caso queira definir no prprio arquivo .vimrc, evitando
" a definio em arquivos shell de configurao.
"
"
let g:MAIL01
= 'ivanczar78@yahoo.com.br'
"
let g:MAIL02
= 'ivan.carlos78@gmail.com'
"
let g:URL01
= 'http://www.del.ufrj/~ivanczar/'
"
let g:PATHBACKUP = '/cygdrive/G/principal/work/bkup/'
"
let g:PATHCONF = '~/data'
"
if !has("win32") " cygwin ou linux ------------------------------------------" Modo Cygwin prompt-texto
"echo "CYGWIN"
" Opcoes linux entrariam aqui ....
else " tem windows ----------------------------------------------------------" -----------------------------cywin-Win32-Gvim--------------------------if has("gui_running") && exists("$ICPATHCONF")
echo "CYGWIN-Gvim"
let $ICPATHCONF =matchstr(system('cygpath -m '.$PATHCONF), "^.
*\\ze\n")
let $ICPATHBACKUP=matchstr(system('cygpath -m '.$PATHBACKUP),"^.
*\\ze\n")
else " sem cygwin ------------------------------------------------------if $OS=~"Windows_NT"
"
echo "Gvim-Win32"
let
$ICAUTOR="Ivan Carlos Da Silva Lopes"
let $ICUNIVERSIDADE="Universidade Federal Do Rio de Jan
eiro"
let $ICDEPARTAMENTO="Departamento De Eletrnica e Computao
Del - UFRJ"
let
$ICMAIL01='ivanczar78@yahoo.com.br'
let
$ICMAIL02='ivan.carlos78@gmail.com'
let
$ICURL01='http://www.del.ufrj/~ivanczar/'
let
$ICPATHCONF ="E:/cygWin/cygwin-root/cygwin/home/
ivanczar/data"
let
$ICPATHBACKUP="D:/principal/work/bkup"
"

map <F5> :%s/http/\r&/g<cr>


\:%s/htm[l]\=/&\r/g<cr>
\:%v/^http/ d<cr>
\:%v/htm[l]\=/ d<cr>
map <F6> :yank *<cr>
endif
endif
"----------------------------------------------------------------------------endif
"
"
"windous
"+--------------------------------+
"|
|
"|
|
"|
|
Linux
"| Cygwin
+--------------------------------+
"| +------------+ |
|
|
"| | gvim
| | gvim
|
|
"| |
| |
|
|
"| | vim-prompt | | vim-prompt |
|
"| +------------+ |
|
|
"|
| <.vimrc> |
|
"+-------------------|------------+
|
"
|
|
"
+--------------------------------+
"
"
" Configurando compiladores ativos para serem utilizados por scripts
" -----------------------------------------------------------------"
" O sistema operacional possui compiladores, para tanto devemos informar ao
" vom qual destes encontra-se ativo, ou seja, se os mesmos foram instalados
"
"
" VAMOS UTILIZAR VARIVEIS GLOBAIS PARA QUE AS MESMAS SEJAM LIDAS
" DENTRO DOS ESCOPOS DAS FUNES.
"
"let
g:CansiGNUColectionCompiler=1
" C-ansi
GCC
"let g:CplusplusGNUColectionCompiler=1
" Cplusplus GCC
"let
g:JAVAGNUColectionCompiler=1
" Java
GCC
"let
g:PASCALColectionCompiler=1
" Pascal
GCC
"let g:FORTRANGNUColectionCompiler=0
" Fortran
GCC
"let
g:ADAGNUColectionCompiler=0
" Ada
GCC
"let g:ObjetiveCGNUColectionCompiler=0
" Objetive-c GCC
"let
g:JavaSunCompiler=1
" Java
sun
"let
g:LCC_WIN32Compiler=1
" C-ansi
LCC
"let
g:CLCompiler=1
" CPP
MS
"
"
"
"
"
"=============================================================================
"CONFIGURACAO DO AMBIENTE DE EDICAO
(VI-IMproved)
"=============================================================================
"
" Aqui vamos tornar o nosso editor mais amigvel, para tanto, adicionaremos
" configuraes de cores, mapeamento de funes, ativao de modos e
" configurao de variveis de ambiente para serem usadas pelos futuros

" scripts.
"
" Para tanto devemos utilizar as configuraes precedidas pelo comando
" set[local].
"
" **************************************************************************
" *
*
" * use VIM padro muito melhor
*
" *
*
" **************************************************************************
setlocal nocompatible
" **************************************************************************
" *
*
" *(compatible) Torna o comportamento do VIM o mais prximo possvel do VI.*
" *
*
" **************************************************************************
"setlocal cp
" **************************************************************************
" *
*
" * Numerando as linhas do arquivo, isto , qualquer arquivo carregado *
" * editado com a numerao de linhas ligada
*
" *
*
" **************************************************************************
setlocal number
" **************************************************************************
" *
*
" * Exibe o modo atual de operaes do VI (Insero ou comandos)
*
" * Mostra o modo que voc esta.
*
" *
*
" **************************************************************************
setlocal showmode
" **************************************************************************
" *
*
" * (beautfy)- Usando essa opo, todos os caracteres de controle (a no *
" * ser "tab", "linefeed" e "formfeed") sero descartados do texto ao ser *
" * carregados.
*
" *
*
" **************************************************************************
"setlocal bf
" **************************************************************************
" *
*
" *
Recua cada linha para o mesmo nvel da linha superior
*
" *
*
" **************************************************************************
setlocal autoindent
"
"
"
"
"
"
cab
cab
cab

**************************************************************************
*
*
* Utilizando abreviaes em linha de comando
*
* Para tanto vamos utilizar o comando Cab
*
*
*
**************************************************************************
W w
Wq wq
wQ wq

cab WQ wq
cab Q q
"
"
"
"
"
"

**************************************************************************
*
*
* Os comandos de abreviao podem tambm ficar em uma nica linha
*
* cab W w | cab Q q | cab Wq wq | cab wQ wq | cab WQ wq
*
*
*
**************************************************************************

" **************************************************************************
" *
*
" * ShiftWidth: nmero de colunas deslocadas pelo comando > ou <
*
" *
*
" **************************************************************************
setlocal sw=3
" **************************************************************************
" *
*
" * rgua: mostra a posio do cursor
*
" *
*
" **************************************************************************
setlocal ruler
" **************************************************************************
" *
*
" * SHortMessages: encurta as mensagem da rgua
*
" *
*
" **************************************************************************
setlocal shm=filmnrwxt
" **************************************************************************
" *
*
" * ShowMatch: Toda vez que voc fecha um parntese, colchete
*
" * ou chave, o Vi mostra onde este foi aberto. Caso no haja
*
" * nenhum aberto para este, deixa em vermelho parnteses ou
*
" * chaves que no tm um par.
*
" *
*
" **************************************************************************
setlocal sm
" **************************************************************************
" *
*
" * tab com complemento de palavras automtico
*
" *
*
" **************************************************************************
setlocal wildmode=list:longest,full
" **************************************************************************
" *
*
" * mostra os comandos sendo executados
*
" *
*
" **************************************************************************
setlocal showcmd
"
"
"
"

**************************************************************************
*
*
* reporta aes com linhas no rodap
*
*
*

" **************************************************************************
setlocal report=0
" **************************************************************************
" *
*
" * tabstop: nmero de colunas para o comando <tab>
*
" *
*
" **************************************************************************
setlocal ts=3
"
"
"
"
"
"

A tecla TAB no vim vem padronizada com 8 espaos, sendo assim, quando
editar um cdigo em c, c++, pascal ou outra linguagem qualquer o texto
do cdigo torna-se algo meio confuso, principalmente quando o cdigo
longo e possui inmeros escopos. Para tanto, podemos mudar o tamanho do
TAB, isto do nmero de espaos gerados pelo mesmo, utilizando o comando
'setlocal tabstop=3' que transforma o tamanho do TAB de 8 para 3.

" **************************************************************************
" *
*
" * coloca 2 espaos aps o . quando usando o gq
*
" *
*
" **************************************************************************
"set nojoinspaces
" **************************************************************************
" *
*
" * Usando <BkSpc> para deletar linha
*
" *
*
" **************************************************************************
setlocal backspace=eol,start,indent
" **************************************************************************
" *
*
" * (window)Define o nmero de linhas deslocadas com os comandos
*
" * ^B (Ctrl+B) e ^F (Ctrl+F)
*
" *
*
" **************************************************************************
setlocal window=10
" **************************************************************************
" *
*
" * Define o nmero de linhas deslocadas com os comandos
*
" * ^U (Ctrl+U) e ^D (Ctrl+D)
*
" *
*
" **************************************************************************
setlocal scroll=5
"
"
"
"
"
"
set

**************************************************************************
*
*
* Em caso de se cometer um comando invlido aciona-se um alarme visual *
* visual-bells
*
*
*
**************************************************************************
visualbell

"
"
"
"
"

**************************************************************************
*
*
* Aqui definimos para vim onde encontrar o arquivo com as cores do fvwm *
* importante ressaltar que essa opo est configurada para CygWin
*
*
*

" **************************************************************************
"cab RGB exec "e ". expand(g:rgb_file)
"let g:rgb_file="/usr/X11R6/lib/X11/rgb.txt"
"Cygwin
"let rgb_file="/usr/X11R6/lib/X11/rgb.txt"
Linux-Conectiva-8
"
"
"
"
"
"
"
"
"
"
set

**************************************************************************
*
*
* Aqui definimos uma chave para a alternncia entre os modos:
*
*
*
* -- INSERT (paste) -e
-- INSERT -*
*
*
* O primeiro no segue o padro de linha Identada enquanto o segundo *
* o modo normal de trabalho.
*
*
*
**************************************************************************
pastetoggle=<F2>

"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
map
map
map
map
map

**************************************************************************
*
*
* <F12> Esconde comentrio
liga ou desliga comentrio
*
* <F11> numerao lateral
liga ou desliga numerao
*
* <F10> tabulao
liga ou desliga tabulao
*
* <F9>
backup
*
*
*
*
*
* <F3>
meu help
*
* <F2>
insert (paste)
*
*
*
*
*
* ;l
limpa
retira espaos em branco de final
*
*
de arquivo.
*
*
*
*
*
* ,bi
Edio binria
liga ou desliga edio binria
*
*
*
*
*
*
*
**************************************************************************
<F12> :call HideShowComment()<cr>
<F11> :call TurnOnOffNumber()<cr>
<F10> :call TurnOnOff_TAB_EOF()<cr>
<F9> :call BackupNomeData()<cr>
<F3> :call AjudaUsuario()<cr>

" utilizando o dicionrio aspell


map \BR :w!<CR>:!aspell check %<CR>:e! %<CR>
map \EN :w!<CR>:!aspell --lang=en check %<CR>:e! %<CR>
map ,bi :call TurnOnOff_EDITOR_BINARIO()<cr>
map ;l :%s/\s*$//g<cr>
" **************************************************************************
" *
*
" * Esse mapeamento gera uma cruz colorida (*selecionar linha do cursor
*
" * e selecionar colina do cursor *)
*
" *
*
" **************************************************************************
"highlight CRUZ ctermbg=blue ctermfg=black
"map ;cz :exe 'match CRUZ /\%' . line(".") . 'l\\|\%' . col(".") . 'c'<cr>

" **************************************************************************
" *
*
" * geralmente usamos ^I para representar uma tabulao
*
" * <Tab>, e $ para indicar o fim de linha. Mas possvel
*
" * customizar essas opes. sintaxe:
*
" *
*
" * set listchars=key:string,key:string
*
" *
*
" *
*
" * - eol:{char}
*
" *
*
" *
Define o caracter a ser posto depois do fim da linha
*
" *
*
" * - tab:{char1}{char2}
*
" *
*
" *
O tab mostrado pelo primeiro caracter {char1} e
*
" *
seguido por {char2}
*
" *
*
" * - trail:{char}
*
" *
*
" *
Esse caracter representa os espaos em branco.
*
" *
*
" * - extends:{char}
*
" *
*
" *
Esse caracter representa o incio do fim da linha sem quebra-la
*
" *
Est opo funciona com a opo nowrap abilitada
*
" *
*
" **************************************************************************
"exemplo 1:
"set listchars=tab:>-,trail:.,eol:#,extends:@
"exemplo 2:
"set listchars=tab:>"exemplo 3:
"set listchars=tab:>"exemplo 4:
set nowrap
"Essa opo desabilita a quebra de linha
"set listchars=extends:+
" **************************************************************************
" *
*
" * Em caso de se cometer um comando invlido aciona-se um alarme sonoro *
" * error-bells
*
" *
*
" **************************************************************************
"set eb
"
"
"
"
"
"
"
"

**************************************************************************
*
*
* Antes de sobrescrever um arquivo mantm um backup do mesmo
*
*
*
* por exemplo, aps salvar um arquivo de nome Alfa.txt, o vim cria uo
*
* outro arquivo chamado Alfa.txt~ com a configurao anterior do arquivo *
* antes do mesmo ser alterado
*
*
*

" **************************************************************************
"set bk
" **************************************************************************
" *
*
" * usar a pasta pessoal de backup
*
" *
*
" **************************************************************************
"set backupdir=$ICPATHBACKUP
" **************************************************************************
" *
*
" * Habilita a mudana de coluna quando movimenta-se atravs das linhas
*
" *
*
" **************************************************************************
"set startofline
"
"
"
"
"

**************************************************************************
*
*
* Eu gosto mas do formato UNIX
*
*
*
**************************************************************************

" evento: lendo arquivo (*O ARQUIVO EXISTE EM DISCO*)


" converte para o formato unix todo arquivo trabalhado
" a converso em mltiplos arquivos ocorre quando o buffer referente ao
" arquivo criado.
autocmd! BufReadPost * call Dos2UNIX()
"
"
"
"
"

**************************************************************************
*
*
*
Fechamento automtico para parnteses
*
*
*
**************************************************************************

"imap ( ()<esc>i
"inoremap ( ()<esc>i
"inoremap { {<Char-13>}<esc>i
"inoremap [ []<esc>i
"
"
"
"
"
set

**************************************************************************
*
*
* Diretrios onde o VIM busca por arquivos
*
*
*
**************************************************************************
path=.,/usr/include/,/usr/local/bin/

" **************************************************************************
" *
*
" *exemplo de como usar o dicionrio com mapeamento:
*
" * (1) dentro do modo de insero
-- INSERT -*
" * (2) posicione o cursor sob a palavra a ser completada
*
" * (3) ligar dicionrio ao pressionar a seqencia "CTRL+d"
*
"imap <c-d> <c-x><c-k>
" * (4) Completa uma palavra de forma ascendente
"<F7>"
*
"imap <F7> <c-n>
" * (5) Busca palavra no arquivo corrente
"<F8>"
*
"imap <F8> <c-x><c-n>
" *
*
" **************************************************************************

" **************************************************************************
" *
*
" * Quando completar uma palavra seguir a seguinte seqencia de
*
" * busca, sendo primeiro em 1, segundo em 2, ...
*
" *
*
" * 1 - no buffer atual
(.)
*
" * 2 - buffer de outra janela
(w)
*
" * 3 - outros buffers carregados
(b)
*
" * 4 - buffers no carregados
(u)
*
" * 5 - arquivo de tags
(t)
*
" * 6 - arquivo de include
(i)
*
" * 7 - dicionrio
(K)
*
" *
*
" *
*
" complete=.,w,b,u,t,i,k
(*default*)
*
" *
*
" *
*
" **************************************************************************
"setlocal complete=.,w,k,t,i
set complete-=k complete+=k
"o comando acima ativa o formato i_Ctrl_n_Ctrl_n para ativar o dicionrio
" **************************************************************************
" *
*
" * Completa a palavra ignorando se maiscula ou minscula
*
" *
*
" **************************************************************************
setlocal infercase
"
"
"
"
"
"
"
"au
"
"
"
"
"

**************************************************************************
*
*
* se uma linha ultrapassar o valor estipulado em textwidth ela ser
*
* mostrada em destaque coloc-la em uma funo de liga desliga junto
*
* com uma que mostre as linhas e colunas de um arquivo em destaque
*
*
*
**************************************************************************
BufNewFile,BufRead * exec 'match Error /\%>' . &textwidth . 'v.\+/'

****************************************************************************
*
*
*
Proteo De Arquivos
*
*
*
****************************************************************************

" **************************************************************************
" * Arquivos somente de leitura, no permitido alter-los
*
" * dotfile
*
" *
*
" **************************************************************************
"augroup dotfile
" au!
" au BufRead .* set readonly
"augroup END
"
"
"
"
"

**************************************************************************
*
*
* Alguns tipos de arquivos devem ser ignorados pelo editor
*
*
*
**************************************************************************

set wildignore=*.o,*.obj,*.bak,*.exe
"
"
"
"
"

****************************************************************************
*
*
*
Configurao da barra de status
*
*
*
****************************************************************************

" **************************************************************************
" * Uma configurao interessante defini-la com tamanho de duas linhas e*
" * fundo com cor azul e fonte branca.
*
" *
*
" **************************************************************************
setlocal laststatus=2
"Mostrar duas linhas.
highlight StatusLine ctermfg=blue ctermbg=white "Fundo azul e fonte branca.
"
"
"
"
"
set

"
"
"
"
"

**************************************************************************
*
*
*
configurando o formato da rgua
*
*
*
**************************************************************************
statusline=%t%m%r%h%w
\%=[FORMATO=%{&ff}]
\[TIPO=%Y]
\[CHAR=%3{GetCharCursor()}]
\[ASCII=%03b]
\[HEX=%02B]
\[\ XY=%04v,%04l]
\[%03P]

****************************************************************************
*
*
*
Configurao do Ttulo
*
*
*
****************************************************************************

"
"
"
"
"
set

**************************************************************************
*
*
*
Mostra o nome do arquivo na parte superior do prompt
*
*
*
**************************************************************************
title

" **************************************************************************
" *
*
" *
Mostra a mensagem selecionada quando sair do VIM
*
" *
*
" **************************************************************************
"set titleold=Ivan\ Carlos\ Da\ Silva\ Lopes
" **************************************************************************
" *
*
" *
Tamanho da barra de ttulo
*
" *
*
" **************************************************************************
"set titlelen=78
" **************************************************************************
" *
*
" *
Exibe a barra de ttulo no formato configurado
*

" *
*
" **************************************************************************
" **************************************************************************
" * exemplo1:
*
" * --------*
" *
*
" * formato:"nome="NomeArq.EXT [se alterado mostrar +]
*
" * set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%)
*
" *
*
" *
*
" * exemplos2:
*
" * ---------*
" *
*
" * set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:p\")})%)%(\ %a%)
*
" *
*
" **************************************************************************
set titlestring=%<Nome=%t%m%r%h%w
\%=
\BUFFER=%n
\%(\ %a%)
\%28([TOTAL\ DE\ LINHAS=%L]%)
" -------------------------- [Formato] --------------------------------------" [Nome=nome]
buffer={current} [Total de linhas=999]
'
" ---------------------------------------------------------------------------"
"
"
"

Se editar mltiplos arquivos


---------------------------------------------------------------------------[Nome=nome] buffer={current} [{current} of {max})] [Total de linhas=999] '
----------------------------------------------------------------------------

"
"
"
"
"

****************************************************************************
*
*
*
Definindo o formato de edio dos textos
*
*
*
****************************************************************************

" **************************************************************************
" *
*
" * Define qual o tamanho da margem direita para a quebra de linhas
*
" * automticas
*
" * wrapmargin
*
" *
*
" **************************************************************************
"setlocal wm=10
" **************************************************************************
" *
*
" * Quando esta opo encontra-se ativa o VIM l o arquivo, e qualquer
*
" * comando de configurao que estiver nas cinco primeiras linhas e cinco*
" * ultimas do arquivo, sero executados. Um exemplo disso so os arquivos*
" * do help, onde as ltimas linhas a apresentam a seguinte sintaxe:
*
" * 'vim:tw=78:ts=8:ft=help:norl:'
*
" *
*
" **************************************************************************
setlocal modeline

" **************************************************************************
" *
*
" * Definindo tamanho da linha, isto , coluna onde a linha deve ser
*
" * quebrada" com a insero de fim de linha (<EOL>, abreviao de
*
" * end-of-line).
*
" *
*
" **************************************************************************
setlocal textwidth=78
" **************************************************************************
" * acentuao
*
" * ---------*
" *
*
" * SE no tiver suporte para acentuao
*
" * retire as aspas das linhas mapeadas abaixo
*
" *
*
" **************************************************************************
"map! 'a
"map! 'A
"map! 'e
"map! 'E
"map! 'i
"map! 'I
"map! 'o
"map! 'O
"map! ~a
"map! ~A
"map! ^a
"map! ^A
"map! `a
"map! `A
"map! ,c
"map! ,C
"map! ^e
"map! ^E
"map! ^o
"map! ^O
"map! ~o
"map! ~O
"map! 'u
"map! 'U
"
"
"
"
"

****************************************************************************
*
*
*
Definindo e trabalhando com histrico da linha de comando
*
*
*
****************************************************************************

" **************************************************************************
" *
*
" * histrico da linha de comando
*
" *
*
" **************************************************************************
setlocal cedit=<Esc>
"
"
"
"

**************************************************************************
*
*
* (^[ o caracter ESC)
*
* Habilitando a apresentao do histrico da linha de comando com o
*

"
"
"
"
"
"

* comando esc. Por exemplo, escrevendo ':' e depois pressionando-se


*
* ESC, abre-se uma janela com a lista dos comandos anteriores. A relao *
* pode ser modificada como se fosse um arquivo. Quando se pressiona
*
* Enter sobre uma linha o comando correspondente executado.
*
*
*
**************************************************************************

" **************************************************************************
" *
*
" * (history) Define o tamanho do arquivo de histrico, onde <valor> o *
" * nmero de linhas de comandos a serem armazenados
*
" * setlocal hi=<valor>
*
" *
*
" **************************************************************************
setlocal hi=5000
" **************************************************************************
" *
*
" * Guarda posio do cursor e histrico da linha de comando :
*
" *
*
" **************************************************************************
setlocal viminfo='100,\"1000,:40,%,n~/.viminfo
"au BufReadPost * if line("'\"")|execute("normal `\"")|endif
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
"
"
"
"
"

****************************************************************************
*
*
*
Cores do sistema e formato de busca
*
*
*
****************************************************************************

" **************************************************************************
" *
*
" * Adicionando fundo escuro.
*
" *
*
" **************************************************************************
setlocal background=dark
" **************************************************************************
" *
*
" * Ligando configuraes de cor, isto , faz com que o vim busque no
*
" * diretrio /usr/share/vim/vim62/syntax os arquivos de configurao de *
" * cores de acordo com o tipo de arquivo que aberto
*
" *
*
" **************************************************************************
syntax on
" **************************************************************************
" *
*
" * Ativa o recurso de colorir, dando realce a pesquisa de palavra(s)
*
" * que estiver em andamento.
*
" *
*
" **************************************************************************
setlocal hlsearch
" ativa o contraste de cores
"hlsearch possui abreviao hls

" **************************************************************************
" *
*
" * O mtodo de busca pode ser incrementado com a adio do comando
*
" * incsearch". A pesquisa torna-se diferenciada e dinmica em tempo de
*
" * pesquisa, isto , antes do usurio entrar com o comando <enter> a fim *
" * de buscar os resultados, os mesmos j aparecero em sua tela.
*
" *
*
" **************************************************************************
setlocal incsearch
"
"
"
"
"
"
"
"
"
"
"

**************************************************************************
*
*
* Que tal trocar a cor do texto ?
*
* daquela seleo que aparece quando voc procura algo com o comando
*
* / ? fcil, basta definir a cor do componente da sintaxe. ah sim, a *
* opo hls (veja abaixo) deve estar ativa.
*
* voc pode colocar as cores que quiser, em ingls. note que
*
* ctermBG e FG, de background e foreground (fundo e letra). e veja
*
* tambm que o IncSearch (busca enquanto voc digita) invertido!
*
*
*
**************************************************************************
hi
Search ctermbg=yellow ctermfg=red
hi IncSearch ctermbg=green ctermfg=cyan
" **************************************************************************
" *
*
" * no vim temos diversas opes para modificar seu comportamento
*
" * atravs do comando set. para ver todas as opes disponveis, faa *
" * :setlocal all. diversas opes j vem ligadas por padro, ento
*
" * vamos mais opes de busca
*
" * IncrementedSearch, HighLightedSearch, IgnoreCase e SmartCaSe
*
" *
*
" **************************************************************************
setlocal ic scs
" opes espertas de busca
"
"
"
"
"
"hi
"hi
"
"
"
"
"

**************************************************************************
*
*
*
Cor da numerao lateral
*
*
*
**************************************************************************
LineNr
guifg=pink
ctermfg=lightMagenta
LineNr
guifg=green
ctermfg=lightGreen

****************************************************************************
*
*
*
configuraes especiais
*
*
*
****************************************************************************

"cores
"t_Co nmero de cores
"t_Sb tipo de cor do plano de fundo
"t_Sf tipo de cor da fonte
if &term =~ "xterm" || &term =~ "linux"
set background=dark
set t_Co=8
set t_Sf=[3%dm
set t_Sb=[4%dm

endif
" Delete key
if &term =~ "xterm"
set t_kD=[3~
endif
if argc() > 8
nmap > :bn<CR>
nmap < :bp<CR>
endif
" **************************************************************************
" * Faz o shift-insert comportar-se semelhante ao Xterm
*
" * Sendo assim voc seleciona um bloco de texto com o mouse
*
" * e cola com o boto do meio do mouse
*
" **************************************************************************
map <S-Insert> <MiddleMouse>
map! <S-Insert> <MiddleMouse>
" **************************************************************************
" *
*
" * Utilizando a barra de espao para mover uma pgina
*
" *
*
" **************************************************************************
"noremap <Space> <PageDown>
"
"
"
"
"
"
"
"
set

**************************************************************************
*
*
* O dicionrio de portugus est associado ao comando dictionary
*
*
*
* Dicionrio para procurar o auto-complemento de palavras
*
*
*
*
*
**************************************************************************
dictionary=$ICPATHCONF/dict/portugues/portugues.api

"=============================================================================
"FUNCOES E MAPEAMENTOS PADROES
(VI-IMproved)
"=============================================================================
"
"
-- Funes bsicas usadas pelo editor vim -so $ICPATHCONF/func/funcBasicas.vim
so $ICPATHCONF/func/increment.vim
so $ICPATHCONF/func/blocos.vim
"so $ICPATHCONF/func/completingEqualShell.vim
"
"
-- Mapeamento das funes e teclas -so $ICPATHCONF/mapa/mapa.vim
so $ICPATHCONF/mapa/mapafuncBasicas.vim
"
"
"
"
-- Abreviaes de palavras -source $ICPATHCONF/abbreviation/acento.vim
"
"
-- Lendo Manpage no editor
runtime ftplugin/man.vim"
"

"
"
-- Exportando o arquivo -"
" Exporta o arquivo no formato html.
cab buffer2html
\ :source $ICPATHCONF/syntax/2html.vim<cr>
\ :%s/<pre>/<pre>\r<font size=+2>/g<cr>
\ :%s/<\/pre>/<\/font>\r<\/pre>/g<cr>
\ :wq<cr>
\ :echo "O buffer " . expand("%p:r") . " foi impresso no formato HTML"
"
" Mapeamento
cmap cor Cor
com -nargs=1
com -nargs=0
\|
\|
\|
\|
\|
\|
\|
\|
\|
ida")
\|
\|

-- C O R E S -para configurar as cores do prompt de comando


Cor call ColoreTerminal(<arg>)
Testacor :let i=0
while i<=ArraySize(g:ArrayOfcolors,'')
call ColoreTerminal(i)
let i=i+1
sleep
redraw
if exists('g:colors_name')
call Message('info',g:colors_name.' - '.i)
else
call Message('Erro',"varivel g:colors_name[".i."] no defin
endif
endwhile

" Carrega arquivo corrente.


cab carrega so %<cr>:call Message('info',"arquivo carregado")<cr>
"
-- M O V I M E N T A C A O -"
" Movimentando grupo de texto.
"
"
-- Linhas -nnoremap <C-j> :call LinhaDesce()<cr>
nnoremap <C-k> :call LinhaSobe()<cr>
"
"
-- Colunas -" Movimentando-se para o lado direito
nnoremap <C-l> :call ColunaDEstra()<cr>
" Movimentando-se para o lado esquerdo
nnoremap <C-h> :call ColunaSInistra()<cr>
" Converte formato de janelas
com Hz :windo wincmd K
\|call Message('info','-- Horizontal --')<cr>
com Vt :windo wincmd H
\|call Message('info','-- Vertical --')<cr>
cmap hz Hz
cmap vt Vt
"=============================================================================
"A R Q U I V O S C A R R E G A D O S
(VI-IMproved)
"=============================================================================
" Nessa parte do cdigo vamos utilizar um mapeamento do tipo grupo, ou seja,
" de acordo com o tipo de arquivo vamos carregar determinadas propriedades do
" mesmo e eliminar propriedades carregadas no vlidas patra os mesmos.
" Aliviando portanto a rea de memria utilizada pelo editor e customizando a

" velocidade de processamento.


"
" Os grupos esto divididos em 7, sendo os mesmos:
" + grupo pascal
" + grupo vim
" + grupo algoritmo
" + grupo java
" + grupo cansi_cpp
" + grupo txt
" + grupo markuplanguage
" evento: se o arquivo no existe em disco
" Carrega um cabecalho dinmico referente as configuraes do tipo de arquivo
" editado.
autocmd BufNewFile * so $ICPATHCONF/func/cabecalho.vim | call GetHeader()
augroup pascal
au!
" Os arquivos pascal podem ter o seguinte formato
" <: (*.pas, *.PAS, *.PP, *.pp, inc, etc.) :>
"confgurao: {{{
"
" evento: se o arquivo no existe em disco
" Carrega configuraes pessoais do arquivo, como cores, mapeamento de
" teclado, tipo de comentrio e configurao de IDE para o Gvim.
au BufNewFile,BufReadPre *.\(pas\|pp\|inc\)
\ source $ICPATHCONF/autocom/pascal.autocom.vim
"
" evento: lendo arquivo (*O ARQUIVO EXISTE EM DISCO*)
" posiciona o cursor na primeira ocorrncia da palavra 'incio'
au BufRead
*.\(pas\|pp\) 1;/begin
"
" evento: Entrando e saindo do arquivo (*O ARQUIVO PODE OU NO EXISTIR*)
" ao entrar acrescenta dicionrio novo, e retira dicionrio de palavras
" ao sair.
au BufEnter *.\(pas\|pp\|inc\) call Dicionario()
au BufEnter *.\(pas\|pp\|inc\) call Dicionario('Liga')
au BufLeave *.\(pas\|pp\|inc\) call Dicionario('Desliga')
au BufLeave *.\(pas\|pp\|inc\) call Dicionario("portugues")
"}}}
augroup END
augroup VIM
au!
" Definindo a configurao de arquivos VIM
"confgurao: {{{
"
" evento: se o arquivo no existe em disco
" Carrega configuraes pessoais do arquivo, como cores, mapeamento de
" teclado, tipo de comentrio e configurao de IDE para o Gvim.
autocmd BufNewFile,BufReadPre *.vim so $ICPATHCONF/autocom/vim.autocom.vim
"
" evento: lendo arquivo (*O ARQUIVO EXISTE EM DISCO*)
" Marca os cabecalhos das funcoes vim
autocmd BufRead *.vim
\ exe "map ,, :g/^func\\(tion\\)\\=!\\=\\s\\+\\(:[sS]\\)\\=[A-Z].*/ p <c
r>"
"}}}
augroup END

augroup SH
au!
" Definindo a configurao de arquivos sh
"confgurao: {{{
"
" evento: se o arquivo no existe em disco
" Carrega configuraes pessoais do arquivo, como cores, mapeamento de
" teclado, tipo de comentrio e configurao de IDE para o Gsh.
autocmd BufNewFile,BufReadPre *.sh
\ so $ICPATHCONF/autocom/sh.autocom.vim
"}}}
augroup END
augroup algoritmo
au!
" Definindo a configurao de arquivos algoritmo
"confgurao: {{{
"
" evento: se o arquivo no existe em disco
" Carrega configuraes pessoais do arquivo, como cores, mapeamento de
" teclado, tipo de comentrio e configurao de IDE para o Gvim.
autocmd BufNewFile *.algoritmo so $ICPATHCONF/autocom/algoritmo.autocom.vim
"
" evento: se o arquivo no existe em disco
" Carrega um esqueleto do tipo de arquivo que est sendo editado. O
" interessante nesse trexo de cdigo a segunda linha que ilustra como
" chamar uma funo ou executar um comando quando um
" buffer criado pela primeira vez.
autocmd BufNewFile
*.algoritmo
\ 0r $ICPATHCONF/skeleton/algoritmo.skeleton.vim
autocmd BufNewFile
*.algoritmo
\ exe "%s/_NOME_/" . expand('%:r') . "/g"|
\ exe "%s/_DATA_/" . strftime('%d\/%m\/%Y') . "/g"
"
" evento: lendo arquivo (*O ARQUIVO EXISTE EM DISCO*)
" posiciona o cursor na primeira ocorrncia da palavra 'incio'
autocmd BufRead
*.algoritmo 1;/incio
"
" evento: Entrando e saindo do arquivo (*O ARQUIVO PODE OU NO EXISTIR*)
" ao entrar acrescenta dicionrio novo, e retira dicionrio de palavras
" ao sair.
autocmd BufEnter *.algoritmo set
\ dict+=$ICPATHCONF/dict/algoritmo/algoritmo.api
autocmd BufLeave *.algoritmo set
\ dict-=$ICPATHCONF/dict/algoritmo/algoritmo.api
"}}}
augroup END
augroup MarkupLanguage
au!
" Linguagens de marcao
" <: (*.htm, *.html, *.xml, *.xhtml, etc.) :>
"confgurao: {{{
"
" evento: se o arquivo no existe em disco
" Carrega configuraes pessoais do arquivo, como cores, mapeamento de
" teclado, tipo de comentrio e configurao de IDE para o Gvim.
autocmd BufNewFile,BufReadPre *.html,*.htm
\ so $ICPATHCONF/autocom/html.autocom.vim

autocmd BufNewFile,BufReadPre *.xml


\ so $ICPATHCONF/autocom/xml.autocom.vim
"
" evento: se o arquivo no existe em disco
" Carrega um esqueleto do tipo de arquivo que est sendo editado
autocmd BufNewFile *.xml read
\ $ICPATHCONF/skeleton/xml.skeleton.vim
"
" evento: Entrando e saindo do arquivo (*O ARQUIVO PODE OU NO EXISTIR*)
" ao entrar acrescenta dicionrio novo, e retira dicionrio de palavras
" ao sair.
" remove dicionrio de portugues
au BufEnter *.\<\(xml\)\|\(x\=html\=\)\>,*.js
\ set dictionary-=$ICPATHCONF/dict/portugues/portugues.a
pi
"
" HTML Xml
autocmd BufEnter *.\<\(xml\)\|\(x\=html\=\)\> set
\ dict+=$ICPATHCONF/dict/html/tags.api
autocmd BufLeave *.\<\(xml\)\|\(x\=html\=\)\> set
\ dict-=$ICPATHCONF/dict/html/tags.api
"
" JavaScript
autocmd BufEnter *.js set
\ dict+=$ICPATHCONF/dict/html/mat.api
autocmd BufLeave *.js set
\ dict-=$ICPATHCONF/dict/html/mat.api
"
" adiciona dicionrio de portugues
au BufLeave *.\<\(xml\)\|\(x\=html\=\)\>,*.js
\ set dictionary=$ICPATHCONF/dict/portugues/portugues.ap
i
"}}}
augroup END
"
"
"
"
"
"
"
"

**************************************************************************
* GVIM
*
* ---*
* Manter a compatibilidade de cdigo mais que necessrio para a
*
* edio com o vim. Dessa forma qualquer mudanca de sistema operacional *
* no ir alterar o funcionamento do editor.
*
*
*
**************************************************************************
if has("gui_running")
" tamanho da janela:
set lines=65
set columns=120
winpos 0 0
" definio de fonte
set guifont=Courier_New:h14:cANSI
" set guifont=Courier:h15:cANSI
" Minha cor preferida.
call ColoreTerminal(4)
" Menu Default
source $ICPATHCONF/ide/menu.vim
"----------------------------------------------------------------------------function ActiveDebug()

if !exists('g:botao')
call Message('info',"-- Debugador ativo com a tecla <F4>
--")
map <F4> \D1
let g:botao=1
else
call Message('warning',"-- Debugador inativo <F4> Libera
da --")
unmap <F4>
unlet g:botao
endif
endfunction
"----------------------------------------------------------------------------"
"
"
"
"
"
"
"

A comfigurao abaixo garante o funcionamento de programas UNIX dentro


do gvim. Caso esse tipo de configurao no esja hbilitada teremos os
seguinte tipos de erros:
exemplo:
:echo substitute(system('echo "8*9"|bc'),'\n','',"g")
(standard_in) 1: illegal character: ^M
Todavia, se configurado o shell retorna 72 no prompt-vim.

" Set shell to Cygwin bash


set shell=F:\\cygWin\\cygwin-root\\cygwin\\bin\\bash.exe
"set shell=F:\\cygWin\\cygwin-root\\cygwin\\cygwin.bat
" Shell arguments; -c: argument
set shellcmdflag=-c
" Shell redirect; copy stderr to stdout
set shellredir=>%s\ 2>&1
" Shell pipe; copy stderr to stdout
set shellpipe=2>&1\|\ tee
" Shell quote; embed command within quotes
set shellxquote=\"
set shellxquote='
set shellslash
endif
"=============================================================================
"D E B U G E A L T E R A C O E S D O D O C U M E N T O
(VI-IMproved)
"=============================================================================
"
-- Carrega Debugador -so $ICPATHCONF/func/debug.vim
if exists('b:DEBUG_LIB')
if has("gui_running")
nnoremap \D1 :call LinhaSelecionada('StatusLine','Cursor')<cr>
else
nnoremap \D1 :call LinhaSelecionada('StatusLine','DiffChange')<c
r>
endif
map \DB :map <F4> \D1<cr>
"
imap \DB <c-o>\D1
endif

" evento: lendo arquivo (*O ARQUIVO EXISTE EM DISCO*)


" corrige a o ndice do arquivo atual editado
autocmd BufRead .vimrc 1|call IndicePontoVimrc()
\|so $ICPATHCONF/autocom/vim.autocom.vim
"carrega o registro a com o ndice do arquivo
autocmd BufRead .vimrc map <F5> :27,43p<cr>
"=============================================================================
"N O T A S P O R V E R S A O
(VI-IMproved)
"=============================================================================
"
"
"
"=============================================================================
"A J U D A
(VI-IMproved)
"=============================================================================
"
" Definindo comandos AJUDA e de navegao no documento .vimrc
"
"
"
-- C O M A N D O S D O U S U A R I O -so $ICPATHCONF/doc/ajudausuario.vim
"cmap ajuda call AjudaUsuario()<cr>
com -nargs=0 MyAjuda call AjudaUsuario()
"

-- C O R E S --

cab cores call AjudaCores()


"
"=============================================================================
"B I B L I O G R A F I A
(VI-IMproved)
"=============================================================================
"
"
"
A. Mastering Regular Expressions
"
Powerful Techniques for Perl and Other Tools
"
by Jeffrey E.F. Friedl
"
Publisher: O'Reilly & Associates Inc.
"
"
" Essa a bblia de expresses regulares, deve ser lido por qualquer um que
" deseje se aprimorar com profundidade no assunto.
"
"
"
B. Guia de Expresses Regulares - by Aurlio Marinho Jargas
"
Publisher: NOVATEC Editora Ltda.
"
"
" Esse livro o passo inicial para qualquer usurio LINUX que deseja
" maximizar o potencial de seus comandos comandos de linhas.
"
"
"
C. Apostila CURSO PROGRAMAO PROFISSIONAL EM SHELL
"
Copyright 2003, 2004 por Aurlio Marinho Jargas
"
N Registro na BN: 303.593 Livro: 552 Folha: 253
"
"

" Um dos poucos bons livros sobre SHELL em portugus que vai alm do
" bsico. Alm de mostrar algumas tcnicas de programadores experientes em
" SHELL-SCRIPT
"
"
"
D. Editor Vi - By Roberto Severo de A. Coelho
"
Publisher: NOVATEC Editora Ltda.
"
"
" Esse nico livro sobre VI brasileiro. Apesar de no enfatizar
" com profundidade o potencial do VI imprescindvel a leitura do mesmo,
" por iniciastes e entusiastas do UNIX.
"
"
"
E. Learning the Vi Editor - by Linda Lamb&Arnold Robin
"
Publisher: O'Reilly & Associates Inc.
"
"
" fundamental a sua leitura para todo aquele que deseja utilizar o Editor
" VI e seus clones de forma eficiente e produtiva.
"
"
"
F. Site oficial do VIM
"
Mantenedor: Bram Moolenaar <bram@vim.org>.
"
HomePage do vim na WWW:
"
http://www.vim.org/
"
"
" a principal fonte de atualizaes do editor VIM, alm de centenas de
" exemplos de escripts e tutoriais sobre os mais diversos tpicos do editor.
"
"
"=============================================================================
"C R E D I T O S
(VI-IMproved)
"=============================================================================
" Esse arquivo dotfile do VIM foi em quase toda sua plenitude baseado no
" arquivo .vimrc de Aurelio Marinho Jargas.
"
" Aurlio Marinho Jargas desenvolvedor de software livre tem dois livros
" publicados e escreve com regularidade artigos sobre ferramentas LINUX-like
" e sobre a comunidade com muito bom humor.
"
" Dentre os softwares temos txt2tags, RAC, txt2regex e SedSoKoban
"
" Com relao aos livros temos O Guia de Expresses Regulares e Apostila
" do Curso de Shell.
"
"SITE:http://aurelio.net/
"
"
" ,----------------[ http://www.del.ufrj/~ivanczar/ ]------------------------.
" | 1. Sempre que voc pegar um trecho de cdigo de algum da comunidade
|
" |
informe seu nome, site e mail. Pois uma comunidade construda com |
" |
boas relaes de seus participantes.
|
" |
|
" | 2. Desencorajo qualquer cpia de documento no autorizada pelo autor da |
" |
obra ou editora.
|
" |
|
" | 3. A compra de bons livros de autores nacionais deve ser estimulada pela|
" |
comunidade. Como o incentivo aos mesmos que continuem a utilizar seu |

" |
talento e perspiccia na produo de livros de qualidade em bom
|
" |
portugus.
|
" |
|
" |
|
" |
Ivan Carlos Da Silva Lopes
|
" |
|
" `--------------------------------------------------------------------------/
"
"
"=============================================================================
"D I C A S
(VI-IMproved)
"=============================================================================
"
" 1. Lendo manpage:
" $ man assunto | col -b | vim " - no gvim (modo Ex)
"
:new|read!man tar|col -b
"
" 2. Abrir todos os arquivos que contenham uma determinada palavra.
" $ vim `fgrep -l <palavra> *.ext`
"
" 3. Mapeamento para inserir linha com repetio de char
"
:map - <Esc>o<Esc>78a-<Esc>
"
:let @q="*"|normal i" 6"qp
"
"
" 4. Mapeamento para Ctrl-key
"
"
exemplo01: mapeando a tecla Ctrl-t
"
:map  iOla Mundo
"
"
exemplo02: mapeando a tecla Ctrl-a
"
:map  iOla Mundo
"
"
exemplo03: mapeando a tecla Ctrl-a
"
:map <c-a> iOla Mundo
"
"
exemplo04: mapeando a tecla Ctrl-a
"
:map <char-1> iOla Mundo
"
"
" 5. Filtrando comandos internos.
"
Exemplo01:
"
1,10m$|g/Essas/ p
"
Exemplo02: move bloco de texto para ltima linha do arquivo e substitui
"
'Essas' por 'Aquelas' dentro do bloco.
"
1,10m$|s/Essas/Aquelas/g
"
" 6. Contando os padres encontrados na edio.
"
:let i=0|%g/{padrao}/let i=i+1
"
:echo i
"
" 7. Mapeamento.
"
- Qual o mapeamento de <F4> ? :map <F4>
"
- Quais os mapeamentos dos comandos que iniciam por ; ? :map ;
"
"
mapea
modo
limpar
exemplo
"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"
map
n
unmap
map <F5> :Ex<cr>
"
+-----> map!/imap
i
unmap!
imap ff File folder

"
|
iabb[rev]
i
una[bbreviate] iabbr oi oiMundo
"
+-----> cmap
lc
cunmap
cmap oi echo "oi mamae"
"
|
cab
lc
cuna
cab oi echo "Oi"
"
|
-------------------------------------------------------"
|
"
+--------------- no necessrio <spao> e/ou [enter] aps comando.
"
" n/c - modo normal ou modo de comando
" i - modo de insero
" lc - modo de linha de comando
" v - modo visual
" R - Reposio
" B - Busca
"
" sintaxe : comando-Mapeador {key[[key]...]} {comando[s]}
"
"
- Formato define-mapeia ou mapeamento referenciado
"
" sintaxe:
" nnoremap
\{nomeExterno}
{comando[s]}
" {map-modo01} {combinao-tecla[s]02} \{nomeExterno}
" {map-modo02} {combinao-tecla[s]03} \{nomeExterno}
" {map-modo03} {combinao-tecla[s]04} \{nomeExterno}
"
"
exemplo:
"
nnoremap \key :let @m="oi gente"<cr>:put m<cr>
"
nmap <F5> \key
"
imap <F5> <c-o>\key
"
" abreviacoes
" ----------"
"
ab
- mostra todas as abreviaes
"
abc[lear] - limpa todas as abreviaes
"
iab
- mostra todas as abreviaes do modo de insero
"
iabc[lear] - limpa todas as abreviaes do modo de insero
"
cab
- mostra todas as abreviaes do modo de comando
"
cabc[lear] - limpa todas as abreviaes do modo de comand
"
"
" 8. Movimentao por links:
"
"
movimentao '{char}
"
para linkar
:<range> mark {char}
"
" 9. Lendo man page ou help de programas externos:
"
read !man dc|col -b
"
read !bc --h
"
" 10. Convertendo formato entre janelasr:
"
"
- convertendo do formato horizontal para o vertical.
"
"
W|W|W
"para
"
W
"
W
"
W
"
"
:windo wincmd K

"
"
"
- convertendo do formato vertical para o horizontal.
"
"
W
"
W
"
W
"para
"
W|W|W
"
"
:windo wincmd H
"
" 11. Numerando linhas selecionadas
"
"
- usando um comando linux externo:
"
"
:'<,'>!cat -n
"
:3,10!cat -n|tr '^I' '-'
"
"
"
- usando Vim-Script:
"
"
- com varivel
"
a) let i=0|'<,'>g/^/let i=i+1|s//\=i/g
"
b) let i=0|'a,'eg/^/let i=i+1|s//\=i/g
"
c) let i=0|2,200g/^/let i=i+1|s//\=i/g
"
"
- com registro
"
a) let @s=0|'<,'>g/^/let @s=@s+1|s//\=@s/g
"
b) let @s=0|'a,'eg/^/let @s=@s+1|s//\=@s/g
"
c) let @s=0|2,200g/^/let @s=@s+1|s//\=@s/g
"
"
- com funcoes do Vim
"
a) '<,'>s/^/\=(line('.') - line("'<") + 1)/g"
"
b) 's,'qs/^/\=(line('.') - line("'s") + 1)/g"
"
c) '20,46s/^/\=(line('.') - 20 + 1)/g"
"
"
- com minhas prprias funcoes
"
"
a) '<,'>s/^/\=INC(1)/g"
"
"
" +====================+====================+====================+
" |
valor
| :echo (valor)
| :echo strlen(valor)|
" +====================+====================+====================+
" | 987654321 % 10
|
1
|
1
|
" | 987654321 % 100
|
21
|
2
|
" | 987654321 % 1000 |
321
|
3
|
" | 987654321 % 10000 |
4321
|
4
|
" | 987654321 % 100000 |
54321
|
5
|
" | 987654321 % 1000000|
654321
|
6
|
" +--------------------+--------------------+--------------------+
"
:let c=3|let s=20|exec "normal i+ ".c."i".Espaco(s,'-')."+"
"
insere a linha da tabele acima
"
"
" 12. invertendo linhas em arquivo:
"
"
:'<,'>g/^/m '<
"
:25,67g/^/m 25

"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"

13. Executando comando externo no modo de comando:


a)
no modo de comando de linha
:let @a=".!seq 5"
executando o comando contido no registro a:
@a
b)
no modo de comando de linha
:let @s=":%!sort -u"
executando o comando contido no registro s:
@s
14. Metacaracteres especiais:
meta exemplo
Casamentos
+~~~~~+~~~~~~~~~~~~~~~~~+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
|
|
|
|
| \@= | Buf\(Read\)\@= | BufReadPost, BufRead, BufReadPre,BufReadPost |
|
|
|
|
|
|
| siguinificado:casa 'Buf' se 'Buf' sucedido
|
|
|
| por 'Read'
|
+-----+-----------------+------------------------------------------------+
|
|
|
|
| \@! | Buf\(Read\)\@! | BufWritePost, BufNewFile, BufWritePre
|
|
|
|
|
|
|
| siguinificado:casa 'Buf' se 'Buf' no for
|
|
|
| sucedido por 'Read'
|
+~~~~~+~~~~~~~~~~~~~~~~~+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
|
|
|
|
|\@<! | \(Read\)\@<!Post| BufWritePost, FileWritePost, FileAppendPost
|
|
|
|
|
|
|
| siguinificado:casa 'Post' se 'Post' no for
|
|
|
| precedido por 'Read'
|
+-----+-----------------+------------------------------------------------+
15. Capturando sada de comando externo como string:
let a=system('ls')
echo matchstr(system('cygpath -m /'), "^.*\\ze\n") . '/'
echo substitute(system('gcc -v'),'\s\+','\n','g')
16. Comando duplos:
- [ indentexpr, indentexpr]
exemplo:
setlocal indentexpr=GetPascalIndent()
setlocal indentkeys+==end,=else,=type,=var,=Begin
- [ grepprg, grepformat]
exemplo:
setlocal grepprg=lid\ -Rgrep\ -s
setlocal grepformat=%f:%l:%m
- [ makeprg, errorformats]
exemplo:

"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"

set
set
set
let
set
set

let &l:makeprg
makeprg=make\ #<.o
efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m
makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
&mp = 'latex \\nonstopmode \\input\{$*}'
makeprg=gcc\ -o\ $*\ $*
efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m

17. Fechando blocos de cdigo:


let &foldmarker="if,endif"|echo &foldmarker
18. Isere string em linha especifica:
:call setline(5,strftime("%d.%m.%Y %X"))
19. Isere string em linha especifica:
:let id="valor"
:put =expand(id)
:let @g="Eu amo o VIM"
:exe 'normal 20"gp'
:exe "normal 200\p"
:exe "normal \iOi Caroline"
:'<,'>s/^/\='U'.Espaco(9,'k')/g
:'<,'>s/^/\='<'.Espaco(9,'-').'>'/g
:let m="<right>"|exe 'normal '.10.'i'.m
20. Deletando
: {linha} delete {contador}
por exemplo : n delete 5
ir deletar as linhas n,n+1,...,n+5
tipos de variveis
===================
aviso aos navegantes:
&texwidth o valor armazenado em texwidth
:set texwidth
78
:let b:a=texwidth
ERRADO
:let b:a=&texwidth
CERTO
echo (b:a)
78
:let &texwidth=25
:set texwidth
45

CERTO

selecione 12 < colune < 18 e linha <10


exe '/\%>' . '12c' . '\&.*' . '\%<18c' . '\&.*' . '\%<10l'
21. gravando o histrico da linha de comandos em um arquivo
$fc -l cp > ultimos-comandos vi lastcommands$ source lastcommands
|
|

" +------ O comando fc edita o shell com seu editor preferido.


"
" um exemplo interessante escrever na linha de comando `fc`
" $fc
"
" $fc -s
-- executa o ltimo comando editado na linha de comando
" $fc -s gcc -- executa o ltimo comando `gcc` editado na linha de comando
"
"
" 22. salvando como
" para tanto usamos o comando w (write)
"
"
"exemplo:
":2,8w nome_noivo_Arquivo.txt
"
"salvando da linha 2 a 8 no arquivo nome_noivo_Arquivo.txt
"
"exemplo2:
"
":g/pattern/ .+2 !>> nome_noivo_Arquivo.txt
"
"salva as linhas que casarem com a combinao pattern,
"sendo assim as mesmas 2 pontos abaixo.
"
"
"
" 23. Alterao em tempo de execuo
"
" vi -c":%s/include/Bala da GOMA/g" max.c
"
" 24. cidificando
" map <F12> ggVGg?
"
"Folding :
"
" i. Folding Markers := {{{ }}}
" ii. Close One Fold := zc
"iii. Open One Fold := zv
" iv. Open All Fold := zn
" v. Close All Fold := zm
"
"Move Around :
"
" i. First Line := :0
" ii. Last Line := :$
"iii. Move To Line := :XX (XX is for Line Number)
"
" nmap <c-s> :w<CR>
" vmap <c-s> <esc><c-s>
" imap <c-s> <esc><c-s>
"
" The F2 series of mappings are different; they only write if needed
" (performing an update) AND return you to where you were: insert mode,
" visual selection etc.
"
" nmap <f2> :update<cr>
" vmap <f2> <esc><f2>gv
" imap <f2> <c-o><f2>
"

"=============================================================================
" vim: set fdm=marker tw=78:ts=3:

También podría gustarte