También uso a menudo monitores múltiples, así que hice una solución simple para usar hasta que vim implemente esta función. Utilizando un script lua llamado gitv, puedo abrir un archivo en varias instancias de GVIM al mismo tiempo. Básicamente, cuando hay dos instancias de GVIM llamadas GVIM1 y GVIM2, lo que hice fue simplemente asegurarme de que solo un archivo sea editable a la vez, y todos los demás son lectores. (Todo se hace automáticamente sin preguntar).
Flujo de trabajo: actualmente, gitv está diseñado para repositorios git, por lo que solo se puede usar para esos archivos en un repositorio git. Puede cambiar fácilmente este comportamiento predeterminado modificando la función lsFiles ().
Para abrir primero a.txt en GVIM1, use
$ gitv gvimr GVIM1 a.txt
Esto abrirá una ventana de gvim si no hay una. Luego, para abrir el mismo a.txt en otra instancia de GVIM2, use
$ gitv gvimr GVIM2 a.txt
(o puede hacer un alias como $ gvim2 a.txt)
Entonces gitv hace internamente lo siguiente:
- encuentre todas las instancias de gvim que tengan abierto "a.txt". (En este caso, GVIM1)
- configure todos esos búferes a.txt "solo lectura", "nomodificable" y "lectura automática".
- El búfer que se modificó se escribirá en el disco antes de establecer "solo lectura".)
- eliminar el archivo de intercambio.
- Vuelva a abrir a.txt en GVIM2. (gvim puede abrir ese archivo sin problema porque no hay un archivo de intercambio).
Si desea editar a.txt en el monitor 1 en lugar del monitor 2, haga esto para cambiar el búfer activo: $ gitv gvimr GVIM1 a.txt (o gvim1 a.txt) Esto se puede hacer más fácilmente dentro de gvim1 usando ctrl + g + a.txt
(Esto establecerá automáticamente el mismo búfer abierto en otras instancias de gvim "solo lectura" para evitar la corrupción de datos).
gitv se puede descargar aquí: http://code.google.com/p/gitv/
Se probó solo en linux gvim, pero se podía portar fácilmente a MacVIM.