Question Puis-je reprendre un processus vim existant?


Quand j'ai quitté mon travail hier, j'ai quitté Vim Open avec les fichiers sur lesquels je travaillais. Je travaille à la maison aujourd'hui, alors je me suis connecté à VPN, et quand je vais éditer ces mêmes fichiers, je reçois un avertissement indiquant qu'une autre session vim est actuellement ouverte avec ces fichiers.

Je sais que je pourrais simplement forcer la déconnexion de mon autre utilisateur, mais cela tuerait la session vim existante. je pense mes changements seraient tous enregistrés dans le .swp fichier.

Au lieu de cela, est-il possible que je prenne cette session vim existante et l'ouvre avec ma deuxième connexion? De cette façon, il conserverait toutes mes modifications et je n’aurais plus à ouvrir les mêmes onglets.


4
2017-09-13 15:14


origine




Réponses:


Vous pouvez tuer vim (mais n'utilisez pas -9) et toutes vos modifications seront enregistrées dans le .swp des dossiers. Ensuite, vous démarrez une nouvelle vim et utilisez Recover.


6
2017-09-13 15:19





Que diriez-vous d'utiliser screen ou tmux comme alternative? De cette façon, vous pouvez déconnecter votre session d’écran lorsque vous avez terminé, puis vous connecter ultérieurement (éventuellement depuis une autre machine) et vous reconnecter.


2
2017-09-13 16:20





Vous avez raison de dire qu'une déconnexion / suppression forcée de votre autre processus vim vous permettra de récupérer le fichier ".swp" qui reste et de commencer à l'utiliser. Je viens de tester cette théorie et celle-ci fonctionnait de toute façon sur Ubuntu. Assurez-vous simplement de sélectionner l'option "Récupérer" lorsqu'il vous indique qu'un fichier d'échange existe déjà.

Cela devrait avoir toutes les modifications qui n'ont pas été enregistrées, mais je ne suis pas sûr des autres informations de session comme l'historique des commandes.


1
2017-09-13 15:20



... et évidemment, cela ne fonctionne que si vous avez en fait des fichiers d'échange - si vous éditez un fichier dans un répertoire où vous ne pouvez pas créer de nouveaux fichiers, vim ne pourra pas créer le fichier d'échange (et vous le dis). Les choses fonctionneront toujours, mais les modifications non enregistrées seront perdues lorsque vous tuez vim. - tdammers


Il y a ce petit programme appelé retty, mais je n'ai absolument aucune idée de sa fiabilité.


0
2017-09-13 15:15





Vous ne pouvez pas prendre en charge les processus lancés depuis un autre terminal. Si vous aviez démarré vim inside screen, vous auriez été capable de détacher la session écran puis de vous reconnecter depuis un autre terminal (y compris un terminal externe sur ssh).

Puis il y a retty, mais il n'est pas disponible pour toutes les plates-formes matérielles, et il est au stade expérimental - essentiellement, à vos risques et périls.

Une autre option est de faire :mks (faire session) de temps en temps; si vous tuez alors vim et démarrez-le à partir d'un terminal différent, vous pouvez simplement générer le Session.vim fichier que la commande mks a créé (ou démarrer vim avec vim -S Session.vim) et reprendre votre session (vous devrez peut-être répondre à quelques invites de restauration).


0
2017-09-13 15:18





reptyr: Utilitaire pour prendre un programme en cours d'exécution et l'attacher à un nouveau terminal

Du homme page: "reptyr est un utilitaire permettant de connecter un programme existant à un nouveau terminal. Lancer un processus de longue durée sur ssh, mais doit partir et ne pas vouloir l’interrompre? Il suffit de démarrer un écran, utilisez reptyr pour le saisir, puis tuer la session ssh et se diriger vers la maison. "


0
2018-02-01 22:48