Вы находитесь на странице: 1из 18

Vim/Como editar preferncias

Origem: Wikilivros, livros abertos por um mundo aberto. < Vim

ndice
1 Como editar preferncias no Vim 1.1 Onde colocar plugins e temas de cor 2 Comentrios 3 Notas sobre mapeamentos 4 Recarregando o arquivo de configurao 5 Set 5.1 Exibindo caracteres invisveis 5.2 Setando macros prvias 6 Mapeamentos 6.1 Limpando o buffer de buscas 6.2 Destacar palavra sob o cursor 6.3 Remover linhas em branco duplicadas 7 Os atalhos 7.1 Autocomandos 8 Fechamento automtico de parnteses 9 Destaque colorido para endereos IP 10 Fechamento automtico de Tags HTML 11 Data automtica 12 Change log 13 Barra de status 14 Mudar cor da barra de status dependendo do modo 15 Rolar outra janela 16 Funo para numerar linhas 17 Funo para trocar o esquema de cores 18 Miscelnea 19 Funo para gerar backup 20 Como adicionar o python ao path do vim? 21 Criando um menu 21.1 Criando menus para um modo especfico 21.2 Exemplo de menu 22 Outros mapeamentos 23 Fazendo buscas e substituies 24 Complementao com tab 25 Abreviaes 26 Referncias

Como editar preferncias no Vim

O arquivo de preferncias do vim ".vimrc", um arquivo oculto que pode ser criado no home do usurio
~ / . v i m r c

Caso use o Windows o arquivo :


~ \ _ v i m r c

Onde colocar plugins e temas de cor


No windows procure ou crie uma pasta chamada 'vimfiles' que fica em
c : \ d o c u m e n t sa n ds e t t i n g s \ s e u u s u a r i o \

No linux procure ou crie uma pasta chamada .vim que deve ficar em
/ h o m e / u s e r / . v i m

Nesta pasta '.vim' ou 'vimfiles' deve haver pastas tipo


v i m f i l e s | + c o l o r | + d o c | + s y n t a x | + p l u g i n

Comentrios
"l i n h a sc o m e a d a sc o ma s p a ss oc o m e n t r i o s "ep o r t a n t os e r oi g n o r a d a sp e l ov i m

Ao fazer modificaes comente usando aspas duplas no comeo da linha, os comentrios lhe ajudaro mais tarde, pois medida que o seu vimrc cresce podem aparecer dvidas sobre o que determinado trecho faz :)

Notas sobre mapeamentos


Mapeamentos so um ponto importante do vim, com eles podemos controlar aes com quaisquer teclas, mas antes temos que saber que:
T e c l a < C R > < E S C > < L E A D E R > < B A R > < C W O R D > :T e c l am a p e a d a :E n t e r :E s c a p e :n o r m a l m e n t e\ :|p i p e :P a l a v r as o boc u r s o r

< C F I L E > < C F I L E > < < S F I L E > < L E F T > < U P > < M F 4 > < C f > < B S > < s p a c e > < T A B >

:A r q u i v os o boc u r s o r :A r q u i v os o boc u r s o rs e me x t e n s o :C o n t e d od oa r q u i v os o boc u r s o r :S a l t au mc a r a c t e r ep a r ae s q u e r d a :E q u i v a l ec l i c a re m' s e t aa c i m a ' :At e c l aA L T>M m a i sat e c l aF 4 :C o n t r o lf :B a c k s p a c e :E s p a o :T a b

No Vim podemos mapear uma tecla para o modo normal, realizando determinada operao e a mesma tecla pode desempenhar outra funo qualquer em modo insert ou comando, veja:
"m o s t r aon o m ed oa r q u i v oc o moc a m i n h o m a p< F 2 >: e c h oe x p a n d ( " % : p " )

"i n s e r eu mt e x t oq u a l q u e r i m a p< F 2 >N o m ed eu m ap e s s o a

A nica diferena nos mapeamentos acima que o mapeamento para modo insert comea com 'i', assim como para o modo comando ':' comea com 'c' no caso cmap.

Recarregando o arquivo de configurao


Cada alterao no arquivo de configurao do vim s ter efeito na prxima vez que voc abrir o vim a menos que voc coloque isto dentro do mesmo
"r e c a r r e g a rov i m r c "S o u r c et h e. v i m r co r_ v i m r cf i l e ,d e p e n d i n go ns y s t e m i f& t e r m= =" w i n 3 2 "| |" p c t e r m "| |h a s ( " g u i _ w i n 3 2 " ) m a p, v: e$ H O M E / _ v i m r c < C R > n m a p< F 1 2 >: < C u > s o u r c e~ / _ v i m r c< B A R >e c h o" V i m r cr e c a r r e g a d o ! " < C R > e l s e m a p, v: e$ H O M E / . v i m r c < C R > n m a p< F 1 2 >: < C u > s o u r c e~ / . v i m r c< B A R >e c h o" V i m r cr e c a r r e g a d o ! " < C R > e n d i f

Agora basta pressionar F12 em modo normal e as alteraes passam a valer instantaneamente!

Set
Os comandos set podem ser colocados no .vimrc:
s e tn u

ou digitados como comandos:


: s e tn u

s e tn u " m o s t r an u m e r a od el i n h a s s e ts h o w m o d e" m o s t r aom o d oe mq u ee s t a m o s

s e ts h o w c m d " m o s t r an os t a t u so sc o m a n d o si n s e r i d o s s e tt s = 4 " t a m a n h od a st a b u l a e s s y n t a xo n " h a b i l i t ac o r e s s e th l s " d e s t a c ac o mc o r e so st e r m o sp r o c u r a d o s s e ti n c s e a r c h" h a b i l i t aab u s c ai n c r e m e n t a l s e ta i " a u t oi d e n t a o s e ta w " s a l v a m e n t oa u t o m t i c o-v e j a: h e l pa w s e ti g n o r e c a s e" f a zov i mi g n o r a rm a i s c u l a sem i n s c u l a sn a sb u s c a s s e ts m a r t c a s e " S ec o m e a ru m ab u s c ae mm a i s c u l oe l eh a b i l i t aoc a s e s e ti c " i g n o r am a i s c u l aem i n s c u l a se mu m ab u s c a s e ts c s " a of a z e ru m ab u s c ac o mm a i s c u l o sc o n s i d e r a rc a s es e n s i t i v e s e tb a c k u p s e tb a c k u p e x t = . b a c k u p s e tb a c k u p d i r = ~ / . b a c k u p , . / s e tc u l " a b r e v i a od ec u r s o rl i n e( d e s t a c al i n h aa t u a l ) s e tv e = a l l " p e r m i t em o v e roc u r s o rp a r a r e a so n d en oh t e x t o s e tt t y f a s t " E n v i am a i sc a r a c t e r e sa ot e r m i n a l ,m e l h o r a n d oor e d r a wd ej a n e l a s . s e tc o l u m n s = 8 8" D e t e r m i n aal a r g u r ad aj a n e l a . s e tm o u s e m o d e l = p o p u p" e x i b eoc o n t e d od ef o l d e r ses u g e s t e ss p e l l

O comando gqap ajusta o pargrafo atual em modo normal


"*c o l o c a2e s p a o sa p so.q u a n d ou s a n d oog q " s e tn o j o i n s p a c e s "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * "* * "* g e r a l m e n t eu s a m o s^ Ip a r ar e p r e s e n t a ru m at a b u l a o * "* < T a b > ,e$p a r ai n d i c a rof i md el i n h a .M a sp o s s v e l * "* c u s t o m i z a re s s a so p e s .s i n t a x e : * "* * "* s e tl i s t c h a r s = k e y : s t r i n g , k e y : s t r i n g * "* * "* * "*-e o l : { c h a r } * "* * "* D e f i n eoc a r a c t e ras e rp o s t od e p o i sd of i md al i n h a * "* * "*-t a b : { c h a r 1 } { c h a r 2 } * "* * "* Ot a bm o s t r a d op e l op r i m e i r oc a r a c t e r{ c h a r 1 }e * "* s e g u i d op o r{ c h a r 2 } * "* * "*-t r a i l : { c h a r } * "* * "* E s s ec a r a c t e rr e p r e s e n t ao se s p a o se mb r a n c o . * "* * "*-e x t e n d s : { c h a r } * "* * "* E s s ec a r a c t e rr e p r e s e n t aoi n c i od of i md al i n h a s e mq u e b r l a * "* E s t o p of u n c i o n ac o mao p on o w r a ph a b i l i t a d a * "* * "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " e x e m p l o1 : " s e tl i s t c h a r s = t a b : > , t r a i l : . , e o l : # , e x t e n d s : @

" e x e m p l o2 : " s e tl i s t c h a r s = t a b : > -

" e x e m p l o3 : " s e tl i s t c h a r s = t a b : > -

" e x e m p l o4 : s e tn o w r a p " E s s ao p od e s a b i l i t aaq u e b r ad el i n h a " s e tl i s t c h a r s = e x t e n d s : +

C a s oe s t e j au s a n d oog v i mp o d es e t a ru me s q u e m ad ec o r e s s e tc o l od e s e r t

Exibindo caracteres invisveis


: s e tl i s t

Setando macros prvias


Definindo uma macro de nome 's' para ordenar e retirar linhas duplicadas
l e t@ s = " : % s o r tu "

Para executar a macro 's' definida acima faa:


@ s

O Vim colocar no comando


: % s o r tu

Bastando pressionar <ENTER>. Observao: esta macro prvia pode ficar no vimrc ou ser digitada em comando ':' Obs: O vim partir de sua verso '7' passou a ter um comando de ordenao prprio, ou seja, ele no depende mais de comandos externos para ordenar e retirar duplicados
: 5 , 2 0 s o r tu " d al i n h a5a t al i n h a2 0o r d e n eer e t i r ed u p l i c a d o s

: s o r tn "o r d e n em e ud o c u m e n t oc o n s i d e r a n d on m e r o s "i s t o t i lp o i ss eap r i m e i r ac o l u n ac o n t i v e r "n m e r o sao r d e n a op o d ef i c a re r r a d ac a s on ou s e m o s "op a r m e t r o' n '

Mapeamentos
Mapeamentos permitem criar atalhos de teclas para quase tudo. Tudo depende de sua criatividade e do quanto conhece o Vim.

Os mapeamentos abaixo so teis para quem escreve cdigos html, permitem inserir caracteres reservados do html usando uma barra invertida para proteger os mesmos, o vim substituir os "barra alguma coisa" pelo caractere correspondente.
i n o r e m a p\ && a m p ; i n o r e m a p\ <& l t ; i n o r e m a p\ >& g t ; i n o r e m a p\ .& m i d d o t ;

O termo inoremap significa: em modo "insert" no remapear, ou seja ele mapeia o atalho e no permite que o mesmo seja remapeado, e o mapeamento s funciona em modo insert, isso significa que um atalho pode ser mapeado para diferentes modos de operao. Veja este outro mapeamento:
m a p< F 1 1 >< e s c > : s e tn u ! < c r >

Permite habilitar ou desabilitar nmeros de linha do arquivo corrente. A exclamao ao final torna o comando booleano, ou seja, se a numerao estiver ativa ser desabilitada, caso contrrio ser ativada. O "<cr>" ao final representa um ENTER.

Limpando o buffer de buscas


A cada busca, se a opo 'hls' estiver habilitada o vim faz um destaque colorido, mas se voc quiser limpar pode fazer este mapeamento
n n o< S F 1 1 >< e s c > : l e t@ / = " " < C R >

um mapeamento para o modo normal que faz com que a combinao de teclas Shift-F11 limpe o buffer de buscas

Destacar palavra sob o cursor


n m a p< s f >: l e t@ / = " < C r > < C w > " < C R >

O atalho acima 's-f' corresponde a Shift-f

Remover linhas em branco duplicadas


m a p, d< e s c > : % s / \ ( ^ \ n \ { 2 , } \ ) / \ r / g < c r >

No mapeamento acima estamos associando o atalho


, d

ao desejada, fazer com que linhas em branco sucessivas seja substituidas por uma s linha em branco, vejaos como funciona:

m a p. . . . . . . . . . . . . . . . . . . . . .m a p e a r , d. . . . . . . . . . . . . . . . . . . . . . .a t a l h oq u eq u e r m o s < e s c >. . . . . . . . . . . . . . . . . . . .s ee s t i v ee mm o d oi n s e r ts a i :. . . . . . . . . . . . . . . . . . . . . . . .e mm o d od ec o m a n d o %. . . . . . . . . . . . . . . . . . . . . . . .e mt o d ooa r q u i v o s. . . . . . . . . . . . . . . . . . . . . . . .s u b s t i t u a \ n. . . . . . . . . . . . . . . . . . . . . . .q u e b r ad el i n h a { 2 , }. . . . . . . . . . . . . . . . . . . . .d u a so um a i sv e z e s \ r. . . . . . . . . . . . . . . . . . . . . . .t r o c a d op o r\ re n t e r g. . . . . . . . . . . . . . . . . . . . . . . .g l o b a l m e n t e < c r >. . . . . . . . . . . . . . . . . . . . .c o n f i r m a od oc o m a n d o

As barras invertidas podem no ser usadas se o seu vim estiver com a opo magic habilitada
: s e tm a g i c

Por acaso este um padro portanto tente usar assim pra ver se funciona
m a p, d: % s / \ n { 2 , } / \ r / g < c r >

Os atalhos
Para criar mapeamentos, precisamos conhecer a maneira de representar as teclas e combinaes. Alguns exemplos:
< C X > o n d e' C ' c o r r e s p o n d eaC T R Le' X 'au m at e c l aq u a l q u e r < L e f t > s e t ap a r aae s q u e r d a < R i g h t >s e t ap a r aad i r e i t a < C M A >C T R L + A L T + A

Podemos fazer mapeamentos globais ou que funcionam em apenas um modo:


m a p -f u n c i o n ae mq u a l q u e rm o d o n m a p-a p e n a sn om o d oN o r m a l i m a p-a p e n a sn om o d od eI n s e r o

Mover linhas com Ctrl+(seta abaixo) ou Ctrl+(seta acima):


"t e mq u ee s t a re mm o d on o r m a l ! n m a p< C D o w n >d d p n m a p< C U p >d d k P

Salvando com uma tecla de funo:


"s a l v ac o mF 9 n m a p< F 9 >: w < c r > "F 1 0-s a id ov i m n m a p< F 1 0 >< e s c > : q < c r >

Convertendo as iniciais de um documento para maisculas

"M i n u s c u l a s M a i u s c u l a s :c o n v e r t eap r i m e i r al e t r ad ec a d a "f r a s ep a r aM A I S C U L A S n m a p, m m: % s / \ C \ ( [ . ! ? ] [ ] ) " ' ] * \ ( $ \ | [] \ ) \ _ s * \ ) \ ( \ l \ ) / \ 1 \ U \ 3 / g < C R > " c a s oq u e i r ac o n f i r m a oc o l o q u eu m al e t r a' c 'n of i n a ld al i n h aa c i m a : "( . . . )\ 3 / g c < C R >

Autocomandos
Autocomandos habilitam comandos automticos para situaes especficas. Se voc deseja que seja executada uma determinada ao ao iniciar um novo arquivo o seu autocomando dever ser mais ou menos assim:
a uB u f N e w F i l et i p oa o

Veja um exemplo:
a uB u f N e w F i l e , B u f R e a d* . t x ts o u r c e~ / . v i m / s y n t a x / t x t . v i m

No exemplo acima o vim aplica autocomandos para arquivos novos "BufNewFile" ou existentes "BufRead" do tipo 'txt' e para estes tipos carrega um arquivo de syntax, ou seja, um esquema de cores especfico.
"h t t p : / / a u r e l i o . n e t / d o c / v i m / t x t . v i m c o l o q u ee m~ / . v i m / s y n t a x a uB u f N e w F i l e , B u f R e a d* . t x ts o u r c e~ / . v i m / s y n t a x / t x t . v i m

Para arquivos do tipo txt '*.txt' use um arquivo de syntax em particular O autocomando abaixo coloca um cabealho para scripts 'bash' caso a linha 1 esteja vazia, observe que os arquivos em questo tem que ter a extenso .sh
a uB u f E n t e r* . s hi fg e t l i n e ( 1 )= =" "|: c a l ls e t l i n e ( 1 ," # ! / b i n / b a s h " )|e n d i f

Autocomando para arquivos python


"a u t o c o m a n d o sp a r ap y t h o n a u t o c m dB u f R e a d* . p ys e ts m a r t i n d e n tc i n w o r d s = i f , e l i f , e l s e , f o r , w h i l e , t r y , e x c e p t , f i n a l l y , d e f , c l a s s

Fechamento automtico de parnteses


""A t i v af e c h a m e n t oa u t o m t i c op a r ap a r n t e s e "S e ta u t o m a t i ce x p a n s i o no fp a r e n t h e s i s / b r a c k e t s i n o r e m a p(( ) < e s c > : c a l lB C _ A d d C h a r ( " ) " ) < c r > i i n o r e m a p{{ } < e s c > : c a l lB C _ A d d C h a r ( " } " ) < c r > i i n o r e m a p[[ ] < e s c > : c a l lB C _ A d d C h a r ( " ] " ) < c r > i "i n o r e m a p"" " < e s c > : c a l lB C _ A d d C h a r ( " " " ) < c r > i " "m a p e i aC T R L + jp a r ap u l a rf o r ad ep a r n t e s e sc o l c h e t e se t c . . . i n o r e m a p< C j >< e s c > : c a l ls e a r c h ( B C _ G e t C h a r ( ) ," W " ) < c r > a "F u n c t i o nf o rt h ea b o v e f u n c t i o n !B C _ A d d C h a r ( s c h a r ) i fe x i s t s ( " b : r o b s t a c k " )

l e tb : r o b s t a c k=b : r o b s t a c k.a : s c h a r e l s e l e tb : r o b s t a c k=a : s c h a r e n d i f e n d f u n c t i o n f u n c t i o n !B C _ G e t C h a r ( ) l e tl : c h a r=b : r o b s t a c k [ s t r l e n ( b : r o b s t a c k ) 1 ] l e tb : r o b s t a c k=s t r p a r t ( b : r o b s t a c k ,0 ,s t r l e n ( b : r o b s t a c k ) 1 ) r e t u r nl : c h a r e n d f u n c t i o n

Outra opo para fechamento de parnteses


"F e c h a m e n t oa u t o m t i c od ep a r n t e s e s i m a p{{ } < l e f t > i m a p(( ) < l e f t > i m a p[[ ] < l e f t >

"p u l a rf o r ad o sp a r n t e s e s ,c o l c h e t e sec h a v e s ,m o v e roc u r s o r "n om o d oi n s e r t i m a p< c l >< e s c > < r i g h t > a i m a p< c h >< e s c > < l e f t > a

Destaque colorido para endereos IP


Referncias: http://vim.wikia.com/wiki/Mathing_valid_IP_address

s y nm a t c hi p a d d r / \ ( \ ( 2 5 \ _ [ 0 5 ] \ | 2 \ _ [ 0 4 ] \ _ [ 0 9 ] \ | \ _ [ 0 1 ] \ ? \ _ [ 0 9 ] \ _ [ 0 9 ] \ ? \ ) \ . \ ) \ { 3 \ } \ ( 2 5 \ _ [ 0 5 ] \ | h il i n ki p a d d rI d e n t i f i e r

Fechamento automtico de Tags HTML


i m a p> < T a b >> < E s c > m t ? < \ w < C r > : l e t@ / = " " < C r > l y i w ` t a < / > < E s c > P ` t l i

Agora basta escrever a sua tag e ao fech-la com * aperte <Tab> para completar com seu respectivo fechamento.

Data automtica
Caso esta funo esteja configurada corretamente, a cada salvamento do arquivo a data contida no cabealho ser atualizada.
"= = = = = = = = = = = = = = =D A T AA U T O M T I C A= = = = = = = = = = = = = = = = = = = = = = = = = = = "i n s i r an ae ms e u sa r q u i v o s= " u l t i m am o d i f i c a o : " "e mq u a l q u e rd a st r sp r i m e i r a sl i n h a s f u n !S e t D a t e ( ) m a r kz i fg e t l i n e ( 1 )= ~" . * u l t i m am o d i f i c a o : "| | \g e t l i n e ( 2 )= ~" . * u l t i m am o d i f i c a o : " | | \g e t l i n e ( 3 )= ~" . * u l t i m am o d i f i c a o : " | | \g e t l i n e ( 4 )= ~" . * u l t i m am o d i f i c a o : " | | \g e t l i n e ( 5 )= ~" . * u l t i m am o d i f i c a o : "

e x e c" 1 , 5 s / \ s * u l t i m am o d i f i c a o :. * $ / u l t i m am o d i f i c a o :".s t r f t i m e ( " % c " )." / " e n d i f e x e c" ' z " e n d f u n " a b a i x oac h a m a d aaf u n od ed a t aq u ec h a m a d at o d av e zq u ev o c " s a l v au ma r q u i v op r e e x i s t e n t e f u n !L a s t C h a n g e ( ) m a r kz i fg e t l i n e ( 1 )= ~" . * L a s tC h a n g e : "| | \g e t l i n e ( 2 )= ~" . * L a s tC h a n g e : " | | \g e t l i n e ( 3 )= ~" . * L a s tC h a n g e : " | | \g e t l i n e ( 4 )= ~" . * L a s tC h a n g e : " | | \g e t l i n e ( 5 )= ~" . * L a s tC h a n g e : " e x e c" 1 , 5 s / \ s * L a s tC h a n g e :. * $ / L a s tC h a n g e :".s t r f t i m e ( " % c " )." / " e n d i f e x e c" ' z " e n d f u n "c o l o q u e id u a so p e s( a l t e r a oem o d i f i c a o ) ,a s s i m "n ot e mp e r i g od ev o c e s q u e c e reos i s t e m a "n oa t u a l i z a rad a t ad os a l v a m e n t o ,o u t r am e l h o r i an af u n o "q u ea g o r av l i d ap a r aq u a l q u e rt i p od ea r q u i v o .s eu s a r "n u mh t m lp o re x e m p l oi n s i r au mc o m e od ec o m e n t r i on al i n h a "d ad a t aef e c h eoc o m e n t r i on ap r x i m al i n h a " a b a i x oac h a m a d aaf u n od ed a t aq u ec h a m a d at o d av e zq u ev o c " s a l v au ma r q u i v op r e e x i s t e n t e a uB u f W r i t e P r e*c a l lS e t D a t e ( ) a uB u f W r i t e P r e*c a l lL a s t C h a n g e ( ) " = = = = = = = = = = = =F i md aD a t aA u t o m t i c a= = = = = = = = = = = = = = = = = = =

Change log
"= = =C r i au mr e g i s t r od ea l t e r a e sd ea r q u i v o= = = = = = = = "C h a n g e L o ge n t r yc o n v e n i e n c e "F u n op a r ai n s e r i ru ms t a t u sd oa r q u i v o "c i r a d o :d a t ad ec r i a o ,a l t e r a o ,a u t o re t c( e mm o d on o r m a l ) f u n !I n s e r t C h a n g e L o g ( ) n o r m a l ( 1 G ) c a l la p p e n d ( 0 ," A r q u i v o " ) c a l la p p e n d ( 1 ," C r i a d o :".s t r f t i m e ( " % a% d / % b / % Yh s% H : % M " ) ) c a l la p p e n d ( 2 ," u l t i m am o d i f i c a o :".s t r f t i m e ( " % a% d / % b / % Yh s% H : % M " ) ) c a l la p p e n d ( 3 ," A u t o r :S r g i oL u i zA r a j oS i l v a " ) n o r m a l ( $ ) e n d f u n m a p, c l: c a l lI n s e r t C h a n g e L o g ( ) < c r > A " "C r i au mc a b e a l h op a r as c r i p t sb a s h f u n !I n s e r t H e a d B a s h ( ) n o r m a l ( 1 G ) : s e tf t = b a s h : s e tt s = 4 c a l la p p e n d ( 0 ," # ! b i n / b a s h " ) c a l la p p e n d ( 1 ," #C r i a d oe m : ".s t r f t i m e ( " % a% d / % b / % Yh s% H : % M " ) ) c a l la p p e n d ( 2 ," #u l t i m am o d i f i c a o : ".s t r f t i m e ( " % a% d / % b / % Yh s% H : % M " ) ) c a l la p p e n d ( 3 ," #N o m ed ae m p r e s a " ) c a l la p p e n d ( 3 ," #P r o p s i t od os c r i p t " ) n o r m a l ( $ ) e n d f u n m a p, s h: c a l lI n s e r t H e a d B a s h ( ) < c r > A

Barra de status
"Ot r e c h oa b a i x of o r m a t aab a r r ad es t a t u sc o ma l g u m a so p e si n t e r e s s a n t e s !

"m o s t r aoc d i g oa s c i id oc a r a c t e r es o boc u r s o reo u t r a sc o i s a sm a i s s e ts t a t u s l i n e = % F % m % r % h % w[ F O R M A T O = % { & f f } ][ T I P O = % Y ][ A S C I I = \ % 0 3 . 3 b ][ H E X = \ % 0 2 . 2 B ] s e tl a s t s t a t u s = 2"S e m p r ee x i b eab a r r ad es t a t u s

[ P O S I O = % 0 4 l , % 0

Mudar cor da barra de status dependendo do modo


"A oe n t r a re mm o d oi n s e r te l em u d aac o rd ab a r r ad es t a t u s "a l t e r aac o rd al i n h ad es t a t u sd e p e n d e n d od om o d o i fv e r s i o n> =7 0 0 a uI n s e r t E n t e r*h iS t a t u s L i n et e r m = r e v e r s ec t e r m b g = 5g u i = u n d e r c u r lg u i s p = M a g e n t a a uI n s e r t L e a v e*h iS t a t u s L i n et e r m = r e v e r s ec t e r m f g = 0c t e r m b g = 2g u i = b o l d , r e v e r s e e n d i f

Rolar outra janela


Se voc dividir janelas tipo
C t r l w n

pode colocar esta funo no seu .vimrc


"r o l aj a n e l aa l t e r n a t i v a f u n !S c r o l l O t h e r W i n d o w ( d i r ) i fa : d i r= =" d o w n " l e tm o v e=" \ < C E > " e l s e i fa : d i r= =" u p " l e tm o v e=" \ < C Y > " e n d i f e x e c" n o r m a l\ < C W > p ".m o v e." \ < C W > p " e n d f u n n m a p< s i l e n t >< M D o w n >: c a l lS c r o l l O t h e r W i n d o w ( " d o w n " ) < C R > n m a p< s i l e n t >< M U p >: c a l lS c r o l l O t h e r W i n d o w ( " u p " ) < C R >

Esta funo acionada com o atalho 'alt' + setas acima e abaixo

Funo para numerar linhas


Adicione as linhas abaixo ao seu vimrc
" n u m e r a rl i n h a s c o m m a n d !n a r g s = *r a n g eN l i s t< l i n e 1 > , < l i n e 2 > c a l lN l i s t ( < f a r g s > ) f u n c t i o n !N l i s t ( . . . )r a n g e i f2= =a : 0 l e ts t a r t=a : 1 l e ta p p e n d=a : 2 e l s e i f1= =a : 0 l e ts t a r t=a : 1 l e ta p p e n d="" e l s e l e ts t a r t=1 l e ta p p e n d="" e n d i f "t r yt ow o r kl i k eg e t l i n e( i . e .a l l o wt h eu s e rt op a s si n.$o r' x )

i f0= =( s t a r t+0 ) l e ts t a r t=l i n e ( s t a r t ) e n d i f e x ea : f i r s t l i n e." , ".a : l a s t l i n e.' s / ^ / \ = l i n e ( " . " ) a : f i r s t l i n e + s t a r t . a p p e n d / ' e n d f u n c t i o n

Agora voc pode fazer uma seleo visual


S h i f t v

Pressionar 'j' at selecionar o trecho desejado e


: ' < , ' > N l i s t

O vim numerar o trecho selecionado partir de 1 outro modo seria assim:


m a p, n< e s c > : l e ti = 1< b a r >g / ^ / s / / \ = i . " \ t " /< b a r >l e ti = i + 1 < c r >

S que deste modo ele numeraria todo o arquivo usando o atalho ,n

Funo para trocar o esquema de cores


f u n c t i o n !< S I D > S w i t c h C o l o r S c h e m e s ( ) i fe x i s t s ( " g : c o l o r s _ n a m e " ) i fg : c o l o r s _ n a m e= =' n a t i v e ' c o l o r s c h e m eb i l l w e l s e i fg : c o l o r s _ n a m e= =' b i l l w ' c o l o r s c h e m ed e s e r t e l s e i fg : c o l o r s _ n a m e= =' d e s e r t ' c o l o r s c h e m en a v a j o n i g h t e l s e i fg : c o l o r s _ n a m e= =' n a v a j o n i g h t ' c o l o r s c h e m e z e n b u r n e l s e i fg : c o l o r s _ n a m e= =' z e n b u r n ' c o l o r s c h e m eb m i c h a e l s e n e l s e i fg : c o l o r s _ n a m e= =' b m i c h a e l s e n ' c o l o r s c h e m ew i n t e r s d a y e l s e i fg : c o l o r s _ n a m e= =' w i n t e r s d a y ' c o l o r s c h e m es u m m e r f r u i t e l s e i fg : c o l o r s _ n a m e= =' s u m m e r f r u i t ' c o l o r s c h e m en a t i v e e n d i f e n d i f e n d f u n c t i o n m a p< s i l e n t >< F 6 >: c a l l< S I D > S w i t c h C o l o r S c h e m e s ( ) < C R >

baixe os esquemas aqui: http://nanasi.jp/old/colorscheme_0.html

Miscelnea
Uma funo para inserir cabealho de scrip bash para chamar a funo basta pressionar, sh em modo normal
"C r i au mc a b e a l h op a r as c r i p t sb a s h f u n !I n s e r t H e a d B a s h ( )

n o r m a l ( 1 G ) : s e tf t = b a s h : s e tt s = 4 c a l la p p e n d ( 0 ," # ! / b i n / b a s h " ) c a l la p p e n d ( 1 ," #C r i a d oe m : ".s t r f t i m e ( " % a% d / % b / % Yh s% H : % M " ) ) c a l la p p e n d ( 2 ," #u l t i m am o d i f i c a o : ".s t r f t i m e ( " % a% d / % b / % Yh s% H : % M " ) ) c a l la p p e n d ( 3 ," #N O M ED AS U AE M P R E S A " ) c a l la p p e n d ( 3 ," #P r o p s i t od os c r i p t " ) n o r m a l ( $ ) e n d f u n m a p, s h: c a l lI n s e r t H e a d B a s h ( ) < c r >

Funo para inserir cabealhos python


"f u n op a r ai n s e r i rc a b e a l h o sp y t h o n f u n !B u f N e w F i l e _ P Y ( ) n o r m a l ( 1 G ) : s e tf t = p y t h o n : s e tt s = 2 c a l la p p e n d ( 0 ," # ! / u s r / b i n / e n vp y t h o n " ) c a l la p p e n d ( 1 ," ##* -c o d i n g :I S O 8 8 5 9 1* " ) c a l la p p e n d ( 2 ," #C r i a d oe m : ".s t r f t i m e ( " % a% d / % b / % Yh s% H : % M " ) ) c a l la p p e n d ( 3 ," #L a s tC h a n g e :".s t r f t i m e ( " % a% d / % b / % Yh s% H : % M " ) ) c a l la p p e n d ( 4 ," #I n s t i t u i c a o :< + n o m e + > " ) c a l la p p e n d ( 5 ," #P r o p o s i t od os c r i p t :< + d e s c r e v a + > " ) c a l la p p e n d ( 6 ," #A u t o r :< + s e u N o m e + > " ) c a l la p p e n d ( 7 ," #s i t e :< + s e u S i t e + > " ) n o r m a lg g e n d f u n a u t o c m dB u f N e w F i l e* . p yc a l lB u f N e w F i l e _ P Y ( ) m a p, p y: c a l lB u f N e w F i l e _ P Y ( ) < c r > A

" Ao editar um arquivo ser aberto no ltimo ponto em " que foi editado
a u t o c m dB u f R e a d P o s t* \i fl i n e ( " ' \ " " )>0& &l i n e ( " ' \ " " )< =l i n e ( " $ " )| \ e x e" n o r m a lg ` \ " "| \e n d i f

" "P e r m i t er e c a r r e g a roV i mp a r aq u em o d i f i c a e sn o "P r p r i ov i m r cs e j aa t i v a d a sc o mom e s m os e n d oe d i t a d o n m a p< F 1 2 >: < C u > s o u r c e$ H O M E / . v i m r c< B A R >e c h o" V i m r cr e c a r r e g a d o ! " < C R >

Redimensionar janelas
"R e d i m e n s i o n a raj a n e l ac o m "A L T + s e t a d i r e i t aee s q u e r d a m a p< M r i g h t >< E S C > : r e s i z e+ 2< C R > m a p< M l e f t >< E S C > : r e s i z e2< C R >

Funo para pular para uma linha qualquer


" i rp a r al i n h a "i rp a r au m al i n h ae s p e c f i c a

f u n c t i o n !G o T o L i n e ( ) l e tl n=i n p u t d i a l o g ( " i rp a r aal i n h a . . . " ) e x e" : ".l n e n d f u n c t i o n " n om e uc a s oom a p e a m e n t oc o mC t r l l " u s eoq u em e l h o rl h ec o n v i e r i m a p< S l >< C o > : c a l lG o T o L i n e ( ) < C R > n m a p< S l >: c a l lG o T o L i n e ( ) < C R >

Funo para gerar backup


A funo abaixo til para ser usada quando voc vai editar um arquivo gerando modificaes significativas, assim voc poder restaurar o backup se necessrio
"Am a p p i n gt om a k eab a c k u po ft h ec u r r e n tf i l e . f u n !W r i t e B a c k u p ( ) l e tf n a m e=e x p a n d ( " % : p " )." _ _ ".s t r f t i m e ( " % d % m % Y _ % H : % M : % S " ) s i l e n te x e" : w".f n a m e e c h o" W r o t e".f n a m e e n d f u n n n o r e m a p< L e a d e r > b a: c a l lW r i t e B a c k u p ( ) < C R >

O atalho
< l e a d e r >

em geral a contrabarra "\" na dvida


: h e l p< l e a d e r >

Como adicionar o python ao path do vim?


fonte: http://vim.wikia.com/wiki/Automatically_add_Python_paths_to_Vim_path Coloque o seguinte script em: ~/.vim/after/ftplugin/python.vim (on Unix systems) $HOME/vimfiles/after/ftplugin/python.vim (on Windows systems)
p y t h o n< <E O F i m p o r to s i m p o r ts y s i m p o r tv i m f o rpi ns y s . p a t h : #A d de a c hd i r e c t o r yi ns y s . p a t h ,i fi te x i s t s . i fo s . p a t h . i s d i r ( p ) : #C o m m a n d' s e t 'n e e d sb a c k s l a s hb e f o r ee a c hs p a c e . v i m . c o m m a n d ( r " s e tp a t h + = % s "%( p . r e p l a c e ( "" ,r " \" ) ) ) E O F

Isto lhe permite usar 'gf' ou Ctrl-w Ctrl-F para abrir um arquivo sob o cursor

Criando um menu
Como no vim podemos ter infinitos comandos fica complicado memorizar tudo a que entram os menus, podemos colocar nossos plugins e atalhos favoritos em um menu veja este exemplo
a m e n uF e r r a m e n t a s . E x i b i r N o m e D o T e m a: e c h og : c o l o r s _ n a m e < c r >

O comando acima diz:


a m e n u. . . . . . . . . . . . . . . . . . . . . . . . . . .c r i au mm e n u F e r r a m e n t a s . E x i b i r N o m e D o T e m a. . . . . . . . .M e n up l u g i ns u b m e n uE x i b i r N o m e D o T e m a : e c h og : c o l o r s _ n a m e < c r >. . . . . . . . .c o m a n d op a r ae x i b i ron o m ed ot e m ad ec o r e sa t u a l

Caso haja espaos no nome a definir voc pode fazer assim


a m e n uF e r r a m e n t a s . E x i b i r \n o m e \d o \t e m a: e c h og : c o l o r s _ n a m e < c r >

Criando menus para um modo especfico


: m e n u. . . .N o r m a l ,V i s u a leO p e r a t o r p e n d i n g : n m e n u. . .M o d oN o r m a l : v m e n u. . .M o d oV i s u a l : o m e n u. . .O p e r a t o r p e n d i n gm o d o : m e n u !. . .I n s e r teC o m a n d o : i m e n u. . .M o d oI n s e r t : c m e n u. . .M o d od ec o m a n d o : a m e n u. . .t o d o so sm o d o s

Exemplo de menu
" cores
m e n uT & e m a s . c o r e s . q u a g m i r e: c o l oq u a g m i r e < C R > m e n uT & e m a s . c o r e s . i n k p o t: c o l oi n k p o t < C R > m e n uT & e m a s . c o r e s . g o o g l e: c o l og o o g l e < C R > m e n uT & e m a s . c o r e s . i r _ b l a c k: c o l oi r _ b l a c k < C R > m e n uT & e m a s . c o r e s . m o l o k a i: c o l om o l o k a i < C R > "F o n t e s m e n uT & e m a s . f o n t e . I n c o n s o l a t a: s e tg f n = I n c o n s o l a t a : h 1 0 < C R > m e n uT & e m a s . f o n t e . A n o n y m o u s: s e ta n t ig f n = A n o n y m o u s : h 8 < C R > m e n uT & e m a s . f o n t e . E n v y \C o d e: s e ta n t ig f n = E n v y _ C o d e _ R : h 1 0 < C R > m e n uT & e m a s . f o n t e . M o n a c o: s e tg f n = m o n a c o : h 9 < C R > m e n uT & e m a s . f o n t e . C r i s p: s e ta n t ig f n = C r i s p : h 1 2 < C R > m e n uT & e m a s . f o n t e . L i b e r a t i o n \M o n o: s e tg f n = L i b e r a t i o n \M o n o : h 1 0 < C R >

O comando
: u p d a t e

Atualiza o menu recem modificado.

Quando o comando
: a m e n u

usado sem nenhum argumento o vim mostra os menus definidos atualmente Para listar todas as opes de menu para 'Plugin' por exemplo faa:
: a m e n uP l u g i n

Outros mapeamentos
Destaca espaos e tabs redundantes Highlight redundant whitespace and tabs.
h i g h l i g h tR e d u n d a n t W h i t e s p a c ec t e r m b g = r e dg u i b g = r e d m a t c hR e d u n d a n t W h i t e s p a c e/ \ s \ + $ \ |\ + \ z e \ t /

Explicando com detalhes


\ s. . . . . . . . . . . . . . . .e s p a o \ +. . . . . . . . . . . . . . . .u m ao um a i sv e z e s $. . . . . . . . . . . . . . . . .n of i n a ld al i n h a \ |. . . . . . . . . . . . . . . .o u "". . . . . . . . . . . . . . .e s p a o( v e j ai m a g e ma c i m a ) \ +. . . . . . . . . . . . . . . .u m ao um a i sv e z e s \ z e. . . . . . . . . . . . . . .a t of i m \ t. . . . . . . . . . . . . . . .t a b u l a o

Portanto a expresso regular acima localizar espaos ou tabulaes no final de linha e destacar em vermelho. "Remove espaos redundantes no fim das linhas
m a p< F 7 >< e s c > m z : % s / \ s \ + $ / / g < c r > ` z

Um detalhe important
m z. . . . . . . . . . . . . .m a r c aap o s i oa t u a ld oc u r s o rp a r at e r n o r n a rn of i n a ld oc o m a n d o ` z. . . . . . . . . . . . . .r e t o r n am a r c ac r i a d a

Se no fosse feito isto o cursor iria ficar na linha da ltima substituio! "Abre o vim-vim explorer
m a p< F 6 >< e s c > : v n e. < c r > < b a r > : v e r t i c a lr e s i z e3 0 < c r > < b a r > : s e tn o n u < c r >

Fazendo buscas e substituies

Podemos usar expresses regulares (http://guia-er.sourceforge.net) em buscas do Vim veja um exemplo para retirar todas as tags html
" m a p e a m e n t op a r ar e t i r a rt a g sh t m lc o mC t r l + A l t + t n m a p< C M t >: % s / < [ ^ > ] * > / / g< c r >

" Quebra a linha atual no local do cursor com F2


n m a p< F 2 >a < C R > < E s c >

" join lines -- Junta as linhas com Shift F2


n m a p< S F 2 >A < D e l > < S p a c e >

Complementao com tab


" W o r dc o m p l e t i o n " C o m p l e m e n t a od ep a l a v r a s s e td i c t i o n a r y + = / u s r / d i c t / w o r d s s e tc o m p l e t e = . , w , k " = = = = = =c o m p l e m e n t a od ep a l a v r a s= = = = " u s aot a be mm o d oi n s e r tp a r ac o m p l e t a rp a l a v r a s f u n c t i o n !I n s e r t T a b W r a p p e r ( d i r e c t i o n ) l e tc o l=c o l ( ' . ' )-1 i f! c o l| |g e t l i n e ( ' . ' ) [ c o l-1 ]! ~' \ k ' r e t u r n" \ < t a b > " e l s e i f" b a c k w a r d "= =a : d i r e c t i o n r e t u r n" \ < c p > " e l s e r e t u r n" \ < c n > " e n d i f e n d f u n c t i o n i n o r e m a p< t a b >< c r > = I n s e r t T a b W r a p p e r( " f o r w a r d " ) < c r > i n o r e m a p< s t a b >< c r > = I n s e r t T a b W r a p p e r( " b a c k w a r d " ) < c r >

Abreviaes
Tambm no .vimrc voc pode colocar abreviaes, que so uma espcie de auto-texto para o vim
i a bs l a sS r g i oL u i zA r a j oS i l v a i a bL i n u xG N U / L i n u x i a bl i n u xG N U / L i n u x

" Esta abreviao legal para usar com o python


i m: < C R >: < C R > < T A B >

Referncias

http://www.dicas-l.com.br/dicas-l/20050118.php Obtido em "http://pt.wikibooks.org/w/index.php?title=Vim/Como_editar_preferncias&oldid=237719" Categoria: Livro/Vim Esta pgina foi modificada pela ltima vez (s) 04h05min de 26 de julho de 2012. Este texto disponibilizado nos termos da licena Creative Commons Atribuio-Compartilhamento pela mesma Licena 3.0 Unported; pode estar sujeito a condies adicionais. Consulte as Condies de Uso para mais detalhes.