swap-file – Levantar la ventana sosteniendo el archivo de intercambio

Pregunta:

De vez en cuando, mientras trabajo en varios proyectos, y / o lo que sea, me deja con (demasiadas) instancias de Vim abiertas; como sucede, abro un archivo que ya está abierto en otro lugar, dejándome con la opción de:

[O]pen Read-only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort

¿Hay alguna forma incorporada para generar la instancia, como en GUI / terminal, manteniendo el archivo abierto? Lo ideal sería llevar el archivo en cuestión al primer plano (si hay varios búferes).

A partir de ahora, estoy usando un script bash que extrae el PID del intercambio, verifique si ese PID pertenece a Vim y, si es así, usa wmctrl para wmctrl la ventana. Si bien esto funciona bien, al menos para GUI y en X11 Linux, estoy preguntando si hay una forma más nativa.

Respuesta:

Una solución sería usar una sola instancia de vim por proyecto, lo que evitaría este problema a menos que sus múltiples proyectos tuvieran archivos superpuestos.

Sin embargo, voy a suponer que está buscando una solución automatizada, en lugar de una sugerencia para cambiar su comportamiento.

Existe la posibilidad de otra solución en FocusLost que sea más nativa de vim.

El evento de autocomando FocusLost funciona en GUI Vim y en algunos terminales de consola. Podría, en lugar de cambiar al archivo en la versión de vim que está abierta (que, si está usando múltiples ventanas de interfaz gráfica de usuario, es complicado), persistir los cambios que no se escribieron en la otra instancia de vim no se perderán (un separar la rama de git, guardar y luego deshacer para que esté en el árbol de deshacer, o simplemente guardarlo) y abrirlo en la nueva instancia con una indicación de que se abrió antes.

Otro evento de autocomando potencialmente útil, disponible en vim 7, es SwapExists , que indica que existe un archivo de intercambio para el archivo, es decir, está abierto.

Si mantuvo todo en tmux o screen, probablemente haya una manera de cambiar a la ventana / panel apropiado.

Una breve búsqueda en github también muestra https://github.com/lynnard/editexisting.vim, que parece funcionar para administradores de ventanas específicos como Xmonad.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım