Também costumo usar vários monitores, portanto, fiz uma solução simples para usar até que o vim implemente esse recurso. Usando um script lua chamado gitv, posso abrir um arquivo em várias instâncias do GVIM ao mesmo tempo. Basicamente, quando há duas instâncias do GVIM denominadas GVIM1 e GVIM2, o que eu fiz foi simplesmente garantir que apenas um arquivo seja editável por vez e todos os outros sejam visualizadores. (Tudo é feito automaticamente sem aviso prévio.)
Fluxo de trabalho: Atualmente, o gitv é projetado para repositórios git, portanto, pode ser usado apenas para esses arquivos em um repositório git. Você pode alterar facilmente esse comportamento padrão modificando a função lsFiles ().
Para abrir primeiro a.txt no GVIM1, use
$ gitv gvimr GVIM1 a.txt
Isso abrirá uma janela gvim se não houver uma. Em seguida, para abrir o mesmo a.txt em outra instância GVIM2, use
$ gitv gvimr GVIM2 a.txt
(ou você pode criar um alias como $ gvim2 a.txt)
Em seguida, o gitv realiza internamente o seguinte:
- encontre todas as instâncias do gvim com "a.txt" abertas. (Nesse caso, GVIM1)
- defina todos esses buffers a.txt "somente leitura", "nomodificável" e "leitura automática".
- O buffer modificado será gravado no disco antes de ser definido como "somente leitura".)
- remova o arquivo de troca.
- reabra o a.txt no GVIM2. (o gvim pode abrir esse arquivo sem problemas porque não há arquivo de troca.)
Se você deseja editar a.txt no monitor 1 em vez do monitor 2, faça isso para alternar o buffer ativo: $ gitv gvimr GVIM1 a.txt (ou gvim1 a.txt) Isso pode ser feito mais facilmente dentro do gvim1 usando ctrl + g + a.txt
(Isso definirá automaticamente o mesmo buffer aberto em outras instâncias do gvim "somente leitura" para evitar corrupção de dados.)
O gitv pode ser baixado aqui: http://code.google.com/p/gitv/
Foi testado apenas no linux gvim, mas pode ser portado facilmente para o MacVIM.