Puis-je partager l'historique des commandes Vim entre les instances en temps réel?
J'entends par là ce que les gens font en bash de cette façon:
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Autrement dit, lorsque j'exécute une commande echo test1
dans un shell, puis appuie Upsur un autre, je vois echo test1
. (Pour être précis, il faut appuyer Enteravant Uppour que cela fonctionne.)
Est-ce possible avec Vim? Au début, je pensais que l'utilisation de l' +clientserver
option fonctionnerait. Mais cela semble être autre chose.
command-history
x-yuri
la source
la source
Réponses:
L'historique des commandes est stocké dans le fichier viminfo (
:help viminfo
). Habituellement, cela est lu au démarrage et écrit à la sortie, mais vous pouvez explicitement persister et synchroniser entre les instances de Vim avec une combinaison de:wviminfo
et:rviminfo
. Notez que cela synchronisera toutes les informations; c'est-à-dire également enregistrer le contenu, les marques, les listes de tampons, etc.la source
À Vim, le plus proche que vous pouvez obtenir est (comme mentionné la réponse d'Ingo et le commentaire de Christian) est:
Il est important de réaliser que les commandes
Focus*
automatiques ne sont pas toujours exécutées lorsque vous utilisez Vim à partir d'un terminal, surtout pas si vous utilisez tmux ou screen. Vous devez d'abord tester cela en utilisant:au FocusLost :echoerr "Focus lost!"
.Autant que je sache, il n'y a pas de bonne solution si ces commandes automatiques ne fonctionnent pas pour vous. L'utilisation d'autres événements (tels que
CursorHold
) me semble problématique en raison de problèmes de synchronisation qui surviendront presque certainement.Neovim est livré avec "ShaDa", qui remplace le système viminfo de Vim. Un aspect où il est préférable de fusionner des fichiers de différentes instances, et bien qu'il ne prenne pas en charge directement la synchronisation entre plusieurs instances (pour l' instant ), cela semble bien fonctionner pour au moins un développeur Neovim :
Voir
:help shada-merging
pour plus de détails sur le processus de fusion.la source
:h viminfo-timestamp