Suponiendo que un archivo no tiene cambios no guardados en el búfer VIM, me gustaría que se vuelva a cargar automáticamente si el archivo cambia en el disco. El caso de uso más frecuente para esto es cuando actualizo la copia de trabajo en la que reside el archivo.
¿Cómo puedo conseguir esto?
Respuestas:
En su
~/.vimrc
:fuente
autoread
, solo se activará después de ejecutar un comando externo. Esta respuesta detalla las soluciones.Esto es lo que funcionó para mí.
La primera línea no era suficiente por sí sola. Puedes poner en ti
.vimrc
crédito a Phan Hai Quang
fuente
:help timestamp
" parece indicar que soy el que está equivocado, y que Vim solo realiza la verificación de eventos específicos, por lo tanto, el autocmd podría ser necesario para que se verifique con más frecuenciaLa lectura automática no funciona correctamente. Lo siguiente funciona para mí:
Primero debe instalar el script desde aquí .
Obtuve los mejores resultados llamando directamente a la función de configuración, así.
La razón de esto es que quiero ejecutar una configuración de ipython / screen / vim.
Puede convertir esto fácilmente en una versión mejorada de la vista.
guión del proceso ..
fuente
El complemento vim-autoread me ha funcionado hasta ahora:
fuente
j
) para ver la actualización efectiva. Creéde esta respuesta (refiriéndose a una respuesta de PhanHaiQuang y un comentario de @flukus)
Uno puede ejecutar este oneliner desde ex (dentro de vim) cuando sea necesario (o poner cada comando en vimrc, para cuando se abren los archivos de registro).
:set autoread | au CursorHold * checktime | call feedkeys("lh")
Explicación:
- autoread : lee el archivo cuando se cambia desde el exterior (pero no funciona por sí solo, no hay un temporizador interno o algo así. Solo leerá el archivo cuando vim realice una acción, como un comando en ex
:!
- CursorHold * checktime : cuando el usuario no mueve el cursor durante el tiempo especificado en 'updatetime' (que es 4000 milisegundos por defecto) se ejecuta checktime, que verifica los cambios desde fuera del archivo
- llame a las teclas de alimentación ("lh") : el cursor se mueve una vez, hacia la derecha y hacia la izquierda, y luego no pasa nada (... lo que significa que se activa CursorHold, lo que significa que tenemos un bucle )
fuente
lh
no hace nada, si el cursor está en la última posición de la línea,lh
cambiará su ubicación.Hay algunos complementos enumerados aquí que pueden funcionar dependiendo de su versión de Vim.
Otro enfoque es enviar periódicamente el
checktime
comando a vim desde un proceso externo. Aquí hay un script de ShellJS para hacer esto (requiereshelljs-plugin-sleep
, NeoVim ynvr
)fuente