Comment Vim est autoread travail?
:h autoread
dit:
Lorsqu'un fichier a été détecté pour avoir été modifié en dehors de Vim et il n'a pas été modifié à l'intérieur de Vim, automatiquement le lire de nouveau.
Après la mise set autoread
dans mon vimrc
, j'ouvre un fichier avec Vim, passez à un autre éditeur, modifiez le fichier et attendre de voir les changements dans Vim ainsi. Rien ne se passe. J'ai utiliser :e
pour recharger le fichier avec le nouveau contenu.
Qu'ai-je manqué? J'utilise Vim 7.2 sur Mac 10.5.8
- Ouais, je pense que le problème est que :set autoread ne fonctionne que dans une interface graphique de vim, et non pas à partir du terminal. Je sais que c'est une vieille question, mais j'ai eu un moment très difficile de trouver une bonne aide. La réponse ci-dessous avec la WatchForChanges fonction est d'or.
autoread
peut travailler dans la plaine de vim, à l'intérieur d'un émulateur de terminal, voir cette réponse.
Vous devez vous connecter pour publier un commentaire.
Autoread ne pas recharger le fichier, sauf si vous faites quelque chose
comme l'exécution de commandes externes (comme !ls ou !sh etc)
vim ne pas procéder à des vérifications régulièrement
vous pouvez recharger le fichier manuellement à l'aide de
:e
Plus de détails dans ce thread:
Cliquez ici
J'utilise le bout de code suivant, qui déclenche autoread chaque fois que je changer de tampon ou lors de la mise vim nouveau:
Aussi, il est logique de l'utiliser en combinaison avec l'extrait suivant, de sorte que les fichiers sont toujours sauvegardées lorsque vous quittez un tampon ou vim, en évitant les situations de conflit:
EDIT: Si vous voulez accélérer l'écriture en désactivant les crochets qui s'exécutent sur enregistrer (par exemple, des linters), vous pouvez ajouter un préfixe de la
w
de commande avecnoautocmd
::checktime
explicitement déclencher le chèque sans les bombardements? Aussi Vim doit déjà faire ceci sur FocusGained, vous ne devriez pas besoin d'un autocmd pour que!au InsertLeave * :slient! w
checktime
plutôt que!
. Sinon, mon neovim (lancer dans un terminal) ne le fait pas automatiquement sur FocusGainedComme par mon affichage sur superuser.com
Autoread ne fonctionne tout simplement pas. Utilisation suivantes.
http://vim.wikia.com/wiki/Have_Vim_check_automatically_if_the_file_has_changed_externally
J'ai obtenu les meilleurs résultats en appelant la fonction de configuration directement, comme si.
La raison pour cela, c'est que je veux exécuter un ipython/écran/vim de l'installation.
À l'extérieur de gvim, autoread ne fonctionne pas pour moi.
Pour contourner cela, j'utilise plutôt moche hack.
Cela semble être ce que le script irishjava lié à fait, mais qui vous permet de basculer ce pour les tampons. J'ai juste envie de travailler pour tout.
q:
).checktime
fait sa chose? Ça pourrait être sympa.De déclenchement lorsque le curseur s'arrête
Ajouter à votre
vimrc
:Par défaut, CursorHold est déclenché une fois que le curseur reste immobile pendant 4 secondes, et est configurable via updatetime.
Tampon déclencheurs de changement
Avoir
autoread
déclencher lors de la modification de tampons, l'ajouter à votrevimrc
:Fenêtre de Terminal focus déclencher
Avoir
FocusGained
(voir ci-dessus) dans la plaine de vim, à l'intérieur d'un émulateur de terminal (Xterm, tmux, etc) installer le plugin:vim-tmux-focus-événements
Sur tmux versions > 1.9, vous aurez besoin d'ajouter dans
.tmux.conf
:pour moi ça marche quand j'utilise la commande
Bien sûr, vous devez enregistrer le fichier dans l'autre éditeur avant que quelque chose se passe.
Un peu en retard à la fête, mais vim, de nos jours, les timers, et vous pouvez le faire: