Dia 29: Ctrlp

"Ctrlp" é baseado no atalho "Ctrl+P" do TextMate/SublimeText: Abrir arquivos usando "fuzzy" search.

Para instalar basta adicionar no vimrc:

Plugin 'kien/ctrlp.vim'

Uma vez instalado, vocês podem usar o atalho Ctrl+P para abrir um diálogo de abrir arquivo.

"Fuzzy search" funciona assim: quando vocês digitarem "a", ele vai procurar qualquer arquivo que tenha um "a" no meio (mais ou menos o mesmo que fazer um "find . -name 'a'"); se vocês digitarem "act", ele vai procurar todos os arquivos que tenham um "a", alguma coisa, um "c", alguma coisa, e um "t" (usando a analogia do find, "find . -name 'act'")

Ctrlp conhece também repositórios, então se vocês  estiverem num diretório qualquer, o ctrlp vai tentar detectar um .git ou .svn e fazer o search em cima do diretório base (tipicamente, o que seria a base do projeto).

Para abrir um arquivo, vocês podem usar:

  • [Enter] para abrir na janela atual; se houver alguma alteração no arquivo aberto que não esteja salvo, o VIM vai fazer um split.
  • [C-t] abre o arquivo em uma nova aba.
  • [C-v] abre o arquivo em um split vertical.
  • [C-x] abre o arquivo em um split horizontal.

Uma coisa que vocês vão notar  é que pode acontecer de surgir uma pilha de arquivos que vocês não tem o menor interesse.

Para controlar quem podem aparecer ou não, vocês podem alterar a configuração de auto-complete de arquivos do próprio vim (sabe quando vocês pressionam tab depois do ":e"? pois é, é isso)

Essa configuração é o "wildignore"

Por exemplo:

set wildignore+=*/build/*,*.egginfo,*.pyc,*.mo,*/dist/*

... vai ignorar tudo que tenha um diretório "build" no meio, arquivos com extensão "egginfo" e "pyc" (coisas de python), arquivos com extensão "mo" (traduções do gettext) e qualquer arquivo que esteja numa árvore com "dist".

wildignore é uma lista, separada por ",". qualquer coisa que vocês quiserem colocar vai ser feito match e, batendo, não vai aparecer.

Aproveitando o gancho, como "wildignore" é uma lista, vocês podem ficar adicionar coisas na lista com "+=" ao invés de simplesmente "=".

(No exemplo, está sendo mantida a lista original e adicionando estas opções no final).

Se vocês só quiserem tirar alguma coisa de uma configuração de lista, podem usar "-=".

(DICA BÔNUS! BOOM!)