Beruflich Dokumente
Kultur Dokumente
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
O arquivo de preferncias do vim ".vimrc", um arquivo oculto que pode ser criado no home do usurio
~ / . v i m r c
No linux procure ou crie uma pasta chamada .vim que deve ficar em
/ h o m e / u s e r / . v i m
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 :)
< 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 >
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 " )
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.
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
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
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
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
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.
um mapeamento para o modo normal que faz com que a combinao de teclas Shift-F11 limpe o buffer de buscas
ao desejada, fazer com que linhas em branco sucessivas seja substituidas por uma s linha em branco, vejaos como funciona:
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
"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
"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
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
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 !
[ P O S I O = % 0 4 l , % 0
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 >
" 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 >
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 >
O atalho
< l e a d e r >
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 >
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
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 /
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 >
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 >
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
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.