Instância solitária do Vim
Publicado em GNU/Linux
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:
- Feche todas as instâncias do editor que estiverem abertas.
- Verifique se quando você digita vim --serverlist você não recebe uma mensagem de erro.
- 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.
- 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".
- 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
- 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" - 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:



Uia.. Mandou bem nessa dica TaQ. Muito interessante e util esse negócio ai.
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
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
Iniciei um projeto para a criação de um livro sobre o vim em português no meu blog: http://vivaotux.blogspot.com/2009/01/nosso-livro-sobre-o-vim.html - há uma postagem sobre e um previw em um frame do site scribd.
Há um grupo de discussão
http://groups.google.com/group/vimbook
e a página oficial do projeto
http://code.google.com/p/vimbook/
A idéia é que as pessoas que dominam melhor o vim e o Latex adicionem suas melhores idéias a este projeto! Você topa junta-se a este projeto?
Sérgio, antes de mais nada, parabéns pela iniciativa!
É engraçado que eu vi hoje de manhã a notícia nos meus RSS's e inclusive fiz download do PDF e estou dando uma olhada. Eu entro em contato por email com você e a gente conversa melhor, beleza?
E se eu quizer dividir a janela existente?
Cara, esta e outras dicas suas bem que poderiam ir para o Livro, só não sei exatamente em que local. Fique a vontade!!
Mais uma dúvida, se abrir à partir do terminal beleza, mas se tento digitar dentro do comando executar não funciona, como resolver?