227 votes

Pourquoi Vim enregistre-t-il les fichiers avec une extension ~ ?

J'ai constaté qu'en utilisant Vim sous Windows, Vim enregistre le fichier, une .ext.swp qui est supprimé à la fermeture de la fenêtre Vim et un fichier .ext~ fichier.

Je suppose que le .ext.swp est une sauvegarde de la session en cas de plantage de Vim. Quel est l'objectif du fichier .ext~ Cependant, le fichier de l'entreprise n'a pas été modifié ? S'agit-il d'un fichier de sauvegarde permanent ? C'est ennuyeux car j'aimerais copier tous les fichiers sur lesquels je travaille sur mon hôte, sans ces doublons. Comment puis-je désactiver cette fonction ou si c'est là pour une bonne raison, cacher les fichiers ?

0 votes

Si vous avez un fichier ouvert simultanément à plusieurs endroits, ils créeront un message d'erreur. .ext.swp .

2 votes

Dirkgently : Non, ici je peux ouvrir un fichier dans la seule fenêtre vim et cela créera le fichier .swp. Je ne suis pas trop préoccupé par cela car il est supprimé lorsque je sauvegarde/ferme la fenêtre.

257voto

user183135 Points 982

Je pense que la meilleure solution est de placer ces lignes dans votre fichier vimrc

set backupdir=~/vimtmp//,.
set directory=~/vimtmp//,.

La première ligne est pour les fichiers de sauvegarde, la deuxième ligne pour les fichiers d'échange. Le double slash à la fin assure qu'il n'y a pas de conflit dans le cas de deux fichiers ayant le même nom, voir les commentaires (au moment de cette édition, cette option n'est honorée que pour les fichiers d'échange, pas encore pour les fichiers de sauvegarde ). Le site ,. permettre vim pour utiliser le répertoire courant si le premier n'existe pas.

Vous devez créer un répertoire dans votre répertoire personnel appelé vimtmp pour que cela fonctionne. Vérifiez également que les sauvegardes sont activées dans votre configuration (ajouter set backup si non).

De cette façon, vous obtenez le bénéfice des deux mondes, vous n'avez pas à voir les fichiers, mais si quelque chose se passe mal, vous pouvez aller chercher votre fichier de sauvegarde dans vimtmp. N'oubliez pas de nettoyer le répertoire de temps en temps.

29 votes

+1 En fait, le mien est réglé sur ~/.vim/tmp, mais quoi qu'il en soit, cela m'a sauvé la mise plus d'une fois.

12 votes

Pourquoi avez-vous besoin de ,. à la fin de chaque ligne ?

10 votes

@shin Vim utilisera le premier répertoire disponible, donc dans ce cas, si ~/vimtmp n'existe pas, il utilisera le répertoire de travail actuel.

248voto

Tomalak Points 150423

Le site *.ext~ est un fichier de sauvegarde, contenant le fichier tel qu'il était avant que vous ne le modifiiez.

Le site *.ext.swp est le fichier d'échange, qui sert de fichier de verrouillage et contient l'historique des opérations d'annulation et de rétablissement ainsi que toute autre information interne dont Vim a besoin. En cas de crash, vous pouvez rouvrir votre fichier et Vim restaurera son état précédent à partir du fichier d'échange (ce que je trouve utile, donc je ne le désactive pas).

Pour désactiver la création automatique de fichiers de sauvegarde, utilisez (dans votre vimrc) :

set nobackup
set nowritebackup

Donde nowritebackup modifie le comportement par défaut de Vim en matière d'enregistrement, qui est le suivant :

  1. écrire le tampon dans un nouveau fichier
  2. supprimer le fichier original
  3. renommer le nouveau fichier

et fait en sorte que Vim écrive le tampon dans le fichier d'origine (avec le risque de le détruire en cas d'erreur d'E/S). Mais il permet d'éviter de "sauter des fichiers" sur le bureau de Windows, ce qui est la raison principale pour laquelle j'utilise nowritebackup en place.

9 votes

+1 Pour you prevent "jumping files" on the Windows desktop . J'ai cherché sur Google et j'ai trouvé cette réponse

2 votes

En fait, dois-je avoir les deux ? nobackup y nowritebackup ? Existe-t-il un moyen d'écrire une copie du fichier en tant que sauvegarde, mais sans faire ce truc d'écriture/suppression/renommage ?

0 votes

@Merlyn : Si vous avez backup (par opposition à nobackup ), alors Vim créera une sauvegarde (le bouton *.ext~ fichier). Cela n'a rien à voir avec nowritebackup .

27voto

rogeriopvl Points 9619

Pour désactiver ces fichiers, il suffit d'ajouter ces lignes au fichier .vimrc (fichier de configuration de vim sur les systèmes d'exploitation basés sur unix) :

set nobackup       #no backup files
set nowritebackup  #only in case you don't want a backup file while editing
set noswapfile     #no swap files

14voto

f3lix Points 13634
:set nobackup 

désactivera les sauvegardes. Vous pouvez également définir un backupdir si vous voulez toujours avoir ces fichiers de sauvegarde mais dans un dossier central. De cette façon, votre répertoire de travail n'est pas encombré de fichiers ~.

Vous trouverez plus d'informations sur les sauvegardes sous :he backup .

14voto

Zsolt Botykai Points 20615

Et vous pouvez également définir une extension de sauvegarde différente et l'endroit où enregistrer ces sauvegardes (je préfère ~/.vimbackups sur linux). J'avais l'habitude d'utiliser des sauvegardes "versionnées", via :

au BufWritePre * let &bex = '-' . strftime("%Y%m%d-%H%M%S") . '.vimbackup'

Cela définit une extension de sauvegarde dynamique ( ORIGINALFILENAME-YYYYMMDD-HHMMSS.vimbackup ).

3 votes

Vous pourriez inclure la façon de configurer le répertoire de sauvegarde, c'est-à-dire mettre set backupdir=~/.vimbackups dans votre ~/.vimrc

1 votes

L'aide de vim décrit entièrement cette technique. Voir :help backupext

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X