Bien souvent, je travaille avec des fichiers dont la version est contrôlée. Il est donc possible de les modifier en dehors de Vim.
Quel est un moyen rapide de recharger le fichier sans avoir à fermer et rouvrir Vim? Et est-il possible de le faire automatiquement?
file-operations
load
Kevin Brown
la source
la source
" Compare buffer with saved version
nnoremap gd :DiffSaved<CR>
:h vim-faq
et effectuer une recherche/reload
. Le tag difficile à mémoriser est:h faq-5.8
.Réponses:
La commande que vous voulez est
:e
(courte:edit
). Si vous l'utilisez:edit!
, les modifications locales seront ignorées et rechargées.Vous pouvez également demander à vim de le faire automatiquement
set autoread
dans votre vimrc.la source
autoread
.:bufdo :e
ou:bufdo :e!
:
est optionnelle::bufdo e
fonctionnera de la même manière.Dans de nombreux cas,
set autoread
cela ne fonctionnera pas comme l' explique cette réponse :Les événements de focus se déclenchent
autoread
, mais ils ne sont pas capturés sauf si vous les utilisezgvim
. Donc, si vous travaillez en clairvim
dans une fenêtre de terminal ou dans tmux, installez le plugin vim-tmux-focus-events .Sur les versions de tmux> 1.9, vous devrez ajouter
.tmux.conf
:Pour plus de commodité, ajouter ce qui suit à votre
vimrc
volonté sera déclenchéautoread
lors de la modification des tampons à l' intérieur de vim:la source
Si vous avez déjà exécuté une commande externe de Vim modifiant le tampon actuel, vous avez peut-être remarqué qu'elle vous invite à recharger le fichier depuis que des modifications ont été apportées au disque. Vous pouvez réellement appeler cette invite à l'aide de la
:checktime
commande.la source
Beau plugin pour améliorer
autoread
https://github.com/djoshea/vim-autoreadla source
J'ai eu le problème de regarder le contenu d'un fichier, de mettre à jour le fichier en externe, d'afficher le fichier modifié et d'avoir la possibilité de le modifier si nécessaire. Je l'ai résolu avec les options de ligne de commande serveur / distant de Vim, inspirées par cette réponse .
Avec les commandes suivantes, un fichier peut être rechargé via une commande externe. Commencez par ouvrir le fichier en question avec Vim tout en démarrant une instance de serveur.
Supposons que le fichier a été modifié en externe, par exemple par un fichier
echo "Curiouser and curiouser" >> /tmp/alice.log
. Si nécessaire, envoyez une commande à l'instance du serveur pour recharger le fichier. Cette commande se terminera rapidement et ne générera pas un nouvel éditeur.Si le fichier ouvert a été modifié dans Vim et en externe, il y aura un conflit lors du rechargement (un message d'avertissement apparaîtra). Pour ce cas, une décision doit être prise: laissez-le avec cela et conservez les modifications dans Vim, ou ignorez les modifications locales et forcez un rechargement .
La commande
--remote-send
ci-dessus nécessite un rechargement manuel. Cependant, cette commande pourrait être liée à une simple boucle, en utilisantfor
/while
, ou en utilisant un hacky one-liner sous Linux / Unix:Bien que cela n’ait pas été testé, je suis certain qu’un tel résultat pourrait également être réalisé dans PowerShell.
Sous Linux / Unix, une approche basée sur les événements peut être réalisée en écoutant les événements du système de fichiers en utilisant par exemple la bibliothèque inotify , si vous n’utilisez pas de systèmes de fichiers trop fous. Personnellement, j'aime beaucoup utiliser l'outil entr , qui semble être inclus dans les principales distributions Linux. Alors je reçois:
la source