Blog

LISTAR TODOS OS POSTS - Assine os feeds dos posts e comentários

Instância solitária do Vim

Publicado/atualizado em 14/11/2007 22:07

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.

Permalink: http://eustaquiorangel.com/posts/477

salvar no del.icio.ussalvar no diggsalvar no rec6 Veja o que estão dizendo sobre isso.

Comente

Linhas em branco viram saltos de linha. Se você quiser mostrar algum código, por favor use o pastebin e informe a URL.

*

*

Responda: Que cor é o céu?  
Clique aqui se não souber essa resposta!

* campos obrigatórios

Comentários

1 - Giuliani Sanches disse em 14/11/2007 19:28

Uia.. Mandou bem nessa dica TaQ. Muito interessante e util esse negócio ai.


2 - davi disse em 25/11/2007 15:03

Boa dica, TaQ... Mas eu reparei que, ao menos comigo, eu não posso utilizar um tvim /path/do/arquivo: ele abre uma nova instância do gVim.

Segui uma dica e acabei com isso: http://pastebin.com/f7a69dcd7

Abraço


3 - Éverton disse em 03/12/2007 22:56

Muito boa a dica,

Procurei no link que você indicou mais não achei nada sobre fazer com que a janela do gvim ganhe o foco quando abrir um arquivo em uma aba. Tem alguma ideia de como fazer isso?

Obrigado


Anterior Próximo Últimos Índice