Se você curte o vim e controle de versão cvs ou svn já deve ter passado pela situação de ver vários arquivos .swp ou até mesmo os de backup do tipo “arquivo~” quando você está comparando a sua cópia local com a cópia remota e ter que ficar “pulando” esses arquivos na hora do commit, convenhamos, é um processo meio chato.
Portanto, com a inserção de 2 novas linhas no seu .vimrc (_vimrc, _gvimrc no windows) você resolve o problema.
set directory=/home/usuario/.vimbkp,/tmp "nesse caso você terá 2 cópias dos arquivos .swp
set backupdir=/home/usuario/.vimbkp,/tmp "nesse caso você terá 2 cópias dos arquivos "arquivo~" de backup
Para quem gosta daquele esquema de fechar automáticamente parênteses, chaves, colchetes, aspas duplas e aspas simples, que vários editores possuem. Basta adicionar o seguinte trecho de código ao seu ~/.vimrc
Para quem não conhece, o mutt é um cliente de email que roda em console, muito bom, flexível, configurável, usável, otimizável e *ável.
Navegando na net procurando por novidades sobre o mutt, me deparei com o site do Lunar-Linux em que um maluco criou um path para que seja exibido do lado esquerdo do mutt um sidebar com a lista das suas “pastas” de email que você pode conferir na imagem abaixo.
Notem que além dele listar as “pastas” em sua esquerda ele conta quantas mensagens antigas e quantas novas há armazenadas, lembrando que eu utilizo o formato maildir de arquivamento das minhas mensagens ao invés do formato mbox.
A instalação ocorreu sem nenhum problema, segui exatamente o que o autor diz no site:
1
2
3
4
5
6
$ wget-q-O - ftp://ftp.mutt.org/mutt/devel/mutt-1.5.16.tar.gz |tar xvfz - $ cd ./mutt-1.5.16
$ wget-q-O - http://lunar-linux.org/~tchan/mutt/patch-1.5.16.sidebar.20070704.txt |patch-p1
$ ./configure
$ make
$ ./mutt
$ makeinstall(optional, <strong>you need to be root for this</strong>)
Após a instalação do mutt devidamente patcheado, vamos editar o seu ~/.muttrc ou ~/.mutt/muttrc, depende de como ta sua configuração, e adicionar as seguintes linhas:
# set up the sidebar, default not visiblesetsidebar_width=30setsidebar_visible=no
setsidebar_delim='|'# which mailboxes to list in the sidebar
mailboxes =inbox =ml
# color of folders with new mail
color sidebar_new yellow default
# ctrl-n, ctrl-p to select next, prev folder# ctrl-o to open selected folderbind index \CP sidebar-prev
bind index \CN sidebar-next
bind index \CO sidebar-open
bind pager \CP sidebar-prev
bind pager \CN sidebar-next
bind pager \CO sidebar-open
# I don't need these. just for documentation purposes. See below.# sidebar-scroll-up# sidebar-scroll-down# b toggles sidebar visibility
macro index b 'toggle sidebar_visible'
macro pager b 'toggle sidebar_visible'# Remap bounce-message function to "B"bind index B bounce-message
# Mario Holbe suggests:# macro index b 'toggle sidebar_visible'# macro pager b 'toggle sidebar_visible'#
Modifique o que achar necessário, agora reinicie o mutt e aperte a tecla “b” e… voilà! O mutt agora possui a lista dos diretórios como mostrado na imagem acima :-)
Vamos imaginar o seguinte, você abrindo um arquivo com diversas linhas, diversas “funções/métodos” e se não estiver com as marcações para folding, você verá que a apresentação não é uma das melhores.
Agora abra o arquivo MDB2.php que está no pacote PEAR::MDB2 que com suas mais de 4.000 linhas, devidamente marcados com os foldings, olha como fica joiado
Mas como fazer para que seu arquivo fique assim? Basta adicionar ao seu .vimrc o seguinte:
1
setfdm=marker
Existem diversas formas de marcações para o folding, não vou descrever todas as formas, apenas a que eu uso, acho interessante e prática, mas cada um pode utilizar a que achar melhor ok.
A geração dos foldings são muito fáceis, primeiro coloque o vim em modo visual <ESC>v e selecione a área que deseja que seja criado o folding, depois basta apertar as telcas zf e pronto, o folding está criado. Para abrir ou fechar o folding, use za, quer abrir todos os foldings zR e para fechar zM. Basicamente e muito simplificado os comandos mais utilizados seriam esses (IMHO).
Uma coisa que gosto de fazer em meus códigos é colocar um pequeno comentário na mesma linha da declaração da função e logo após criar o folding, o resultado é ótimo, veja, como fica organizado o código.
Como disse, da para fazer o folding de diversas maneiras, publiquei a maneira que eu acho mais simples e prática, se você tiver algo a acrescentar ao artigo, poste nos comentários :-) T+
Continuando com a série de artigos sobre o vim, vamos fazer algo simplismente fodástico, integrar o manual do php! Que tal você simplismente digitar
1
:help funcao_php
e ele mostrar exatamente a função no manual? Joia não? Então, para isso basta você adicionar ao seu .vimrc as seguintes linhas:
1
2
3
if has("autocmd")
autocmd BufNewFile,Bufread *.php,*.php3,*.php4 setkeywordprg="help"
endif
Feito isso, diga para o vim onde ta seus manuais (você pode ter mais de um, é claro, e também de outras linguagens), no caso, o do php que é a linguagem que eu utilizo diariamente, portanto foi o convidado da vez.
1
helptags /home/USUARIO/.vim/doc
Agora so falta o manual, que como sou um cara legal, vou deixar tudo mastigado para você, clique aqui e salve o arquivo no seu ~/.vim/doc
Pronto! Tudo certo, faça um teste agora, abra um arquivo php e digite :help funcao<cr> e pronto, você terá uma lista das funções, e digo mais, se você seguiu o artigo anterior que falo sobre utilizar a tecla TAB para autocompletar, você poderá digitar apenas o início da função e terá uma lista de funções correspondentes, como na imagem abaixo
Ah, mas você gostaria que o seu manual estivesse com a última atualização do mundo, do universo e ainda com todos os comentários? Então, adicione a linha abaixo ao seu .vimrc e coloque o cursor encima de uma função php e aperte F10 e veja, lembrando que há a dependencia do navegador para console lynx.
Nesse artigo sobre o vim, falei um pouco sobre a personalização do .vimrc, agora vamos adicionar um dicionário das funções php para que você consiga autocompletar suas funções como aqueles editores pesados como o phpeclipse faz, mas ao invés de usarmos o CTRL+espaço, vamos usar apenas o TAB.
Se tem algo que me faz gosto em programar, é a extensibilidade do editor vim, há anos uso ele diariamente e confesso que no início foi um pouco dificil de me acostumar, mas depois que se acostuma os ganhos em agilidade são imensos, estou pensando em fazer vários mini tutoriais a respeito do vim, o que acham? O propósito desse artigo é falar um pouco sobre a personalização do seu .vimrc. Antes de tudo, abra um terminal e digite os 2 comandos abaixo:
cdvim .vimrc
Pronto, com o arquivo aberto vamos la! Bem, como programador php, a maioria dos arquivos que eu abro são com extensões .php o que o vim syntaxia ele automaticamente pois eu tenho a linha abaixo habilitada
syntax on
Mas e quando um merda santo resolve criar uma classe php e coloca como extensão .cls, .inc ou ainda .module? Ai o vim não syntaxia automaticamente, lascou né? Não, basta colocar:
au BufRead,BufNewFile *.cls,*.inc,*.module setfiletype=php
Aqui transformando os arquivos com extensões .tpl e .html como html
au BufRead,BufNewFile *.tpl,*.html setfiletype=html
Resolvido o problema da syntax, vamos colocar mais algumas opções, lembrando que as aspas duplas querem dizer comentários ok.
set nu "colocar as linhas automaticamente"set cindent "indentação no estilo C"set is hls ic scs "opções de busca"set sm "mostra o início do bloco que acabou de ser fechado, sm é o mesmo que ShowMatch"setwildmode=longest,list "para completar com TAB igualzinho o bash faz"set ai "auto indent"setshiftwidth=4"se mudar o valor eu te mato :-P, numero de espaço usado quando rolar o autoindent"setsofttabstop=4"se mudar aqui, tb te mato! numero de espaços que deve-se dar quando apertar o TAB"settabstop=4"por favor, também nao mude isso! numero de espações que deve-se voltando quando apertar o backspace num tab"setbs=2"para o backspace se comportar como a gente gosta"setfdm=marker "o modo como o folding deverá trabalhar, prometo escrever um artigo falando sobre o folding no vim"settermencoding=utf8 "Yeah!! UTF-8 em tudo!"
filetype plugin on
filetype indent on
Sou um preguiçoso, por isso me tornei programador, então, vai ai algums atalhos que uso constantemente para debugar partes dos meus scripts
"isso aqui é FERA quando tem algum zoiudo vendo o que vc ta fazendo, aperte F8 e a tela fica embaralhada e F8 para voltar ao normal"
map ggVGg?
"isso é FODA, coloque o cursor encima de alguma funcao PHP e aperte o F10 e ele vai buscar no site do php.net a definição para ela, sinistro heim?"
map "vyiw:new:execute "r!lynx--dump http://br.php.net/manual/en/function.".@v.".php":set nonu:1
"sabe aqueles ^M xaropes que ficam no final de arquivos salvos pelo windows? Aperte F2 e suma com eles :-D"
map :%s/\r//g
"útil para quando vc deixa a tecla CAPS LOCK ativada e nao viu, umas abreviações porretas"
cab W w | cab Q q | cab Wq wq | cab wQ wq | cab WQ wq
Bem, por hora é só, aguarde que teremos outros artigos sobre o vim, tem muita coisa para falar dele, t+
Há muito tempo uso o screen para janelizar o modo texto, o pontapé inicial foi lendo os artigos do Aurélio como esse e esse há alguns anos atrás ainda na extinta Revista do Linux, também peguei o .screenrc dele e modifiquei para deixar ele mais joiado (IMHO) e o resultado pode ser conferido abaixo.