En supposant qu'un fichier n'a pas de modifications non enregistrées dans le tampon VIM, je voudrais qu'il se recharge automatiquement si le fichier change sur le disque. Le cas d'utilisation le plus fréquent est lorsque je mets à jour la copie de travail dans laquelle réside le fichier.
Comment puis-je atteindre cet objectif?
Réponses:
Dans votre
~/.vimrc
:la source
autoread
il ne se déclenchera qu'après l'exécution d'une commande externe. Cette réponse détaille les solutions.C'est ce qui a fonctionné pour moi
La première ligne n'était pas suffisante en soi. Vous pouvez mettre en vous
.vimrc
crédit à Phan Hai Quang
la source
:help timestamp
" semble indiquer que je suis celui qui a commis une erreur, et que Vim n'effectue la vérification que sur des événements spécifiques, ainsi l'autocmd pourrait être nécessaire pour le faire vérifier plus fréquemment.La lecture automatique ne fonctionne pas correctement. Ce qui suit fonctionne pour moi:
Vous devez d'abord installer le script à partir d' ici .
J'ai obtenu les meilleurs résultats en appelant directement la fonction de configuration, comme ça.
La raison en est que je veux exécuter une configuration ipython / screen / vim.
Vous pouvez facilement le convertir en une version améliorée de la vue.
script le processus ..
la source
Le plugin vim-autoread a fonctionné pour moi jusqu'à présent:
la source
j
) pour voir la mise à jour effective. J'ai créé un problème ici à ce sujet: github.com/djoshea/vim-autoread/issues/3de cette réponse (se référant à une réponse de PhanHaiQuang et un commentaire de @flukus)
On peut exécuter ce oneliner depuis ex (dans vim) en cas de besoin (ou mettre chaque commande dans vimrc, lorsque les fichiers journaux sont ouverts.)
:set autoread | au CursorHold * checktime | call feedkeys("lh")
Explication:
- lecture automatique : lit le fichier lorsqu'il est modifié de l'extérieur (mais cela ne fonctionne pas seul, il n'y a pas de temporisateur interne ou quelque chose comme ça. Il ne lira le fichier que lorsque vim fait une action, comme une commande dans ex
:!
- CursorHold * checktime : lorsque le curseur n'est pas déplacé par l'utilisateur pendant la durée spécifiée dans 'updatetime' (qui est de 4000 millisecondes par défaut) checktime est exécuté, qui vérifie les modifications de l'extérieur du fichier
- appelez les touches de flux ("lh") : le curseur est déplacé une fois, à droite et en arrière à gauche, puis rien ne se passe (... ce qui signifie que CursorHold est déclenché, ce qui signifie que nous avons une boucle )
la source
lh
ne fait rien, si le curseur est à la dernière position sur la ligne,lh
changera son emplacement.Certains plugins répertoriés ici peuvent fonctionner en fonction de votre version de Vim.
Une autre approche consiste à envoyer périodiquement la
checktime
commande à vim à partir d'un processus externe. Voici un script ShellJS pour ce faire (nécessiteshelljs-plugin-sleep
NeoVim etnvr
)la source