Blog do TaQ

Instância solitária do Vim

Publicado em GNU/Linux

Logotipo do VIM

O meu amigo Lorn estava com uma dúvida agora há pouco. Ele é chique (ah, eu tenho que dar uma zuadinha vai) e tem um Mac onde utiliza o Textmate e queria saber se dava para replicar a seguinte feature no Vim: sempre abrir os arquivos na mesma instância do editor, em uma aba nova.

Se você gostou da idéia, continue lendo. Vamos trabalhar nesse script em um ambiente *NIX (onde o Mac OS se encaixa também) e com o editor no modo gráfico, se você quiser no console é só trocar de gvim para vim e fazer as adaptações necessárias. Vamos fazer alguns testes para ver se o script vai funcionar:

  1. Feche todas as instâncias do editor que estiverem abertas.
  2. Verifique se quando você digita vim --serverlist você não recebe uma mensagem de erro.
  3. Se recebeu, teste com gvim --serverlist. Se mesmo assim ocorreu a mensagem de erro, ou o seu editor está em uma versão muito antiga ou não foi compilado com esse recurso. Aí você tem que dar um jeito de atualizar ou compilar o bicho na unha e depois voltar nesse passo.
  4. Ok, se tudo correu bem, ele não deve retornar nada pois não há nenhuma instância aberta (você fez o que eu pedi no item 1, não fez?). Se houvessem algumas instâncias pipocando por seu computador, seria(m) retornado(s) o(s) nome(s) que o editor se "registrou".
  5. Para evitar dar algum piripaque, vamos garantir que vamos pegar sempre o primeiro nome retornado se por acaso já havia alguma coisa aberta. Vamos pegar isso com o head -n1, que vai extrair a primeira linha. Fica assim: gvim --serverlist | head -1
  6. Ok, agora vamos criar um alias para chamar o editor dizendo o seguinte para ele "ei, se já tiver uma instância aberta conecte-se nela e abra o arquivo que estou pedindo em uma nova aba". Para isso vamos inserir o conteúdo do nosso comando acima dentro de outro:

    alias tvim="gvim --servername `gvim --serverlist | head -1` --remote-tab"

  7. Chamei o alias de tvim, de "tab vim", mas sintam-se à vontade para chamá-lo do que quiserem, tipo "ovtrta" (one Vim to rule them all). ;-)

Pronto, a partir desse momento sempre que o alias for chamado ele vai abrir os arquivos sempre na mesma instância do editor, em uma aba nova. Ah, tem que ser o Vim 7.x para frente, onde há os suportes de abas. Mais detalhes sobre essas opções podem ser encontrados aqui.


Tags:


Comentários

comments powered by Disqus

Twitter

Recomendados!