Comment empêcher vim de créer (et de laisser) des fichiers temporaires?

163

Pourquoi vim crée- <filename>~t-il des fichiers? Y a-t-il un moyen de désactiver cela?

Si c'est pour la sauvegarde (ou quelque chose), j'utilise git pour ça.

En outre, ces .<filename.with.path.hints>.swpfichiers aussi.

Comment dire à vim de ne pas les créer, ou du moins de les nettoyer après lui-même?

ÉDITER

oups, dupliquer:

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

J'ai adopté la réponse de rogeriopvl à partir de là.

copie textuelle:

set nobackup       "no backup files
set nowritebackup  "only in case you don't want a backup file while editing
set noswapfile     "no swap files
hasen
la source
13
Git ne vous aidera jamais à récupérer le travail après une panne du système. Git peut également ignorer vos fichiers * .swp. = D
vmassuchetto
lol est-ce que quelqu'un a sérieusement marqué cette question comme un double après six ans de publication?
hasen

Réponses:

80

Je recommande fortement de continuer à travailler avec des fichiers d'échange (au cas où Vim plante).

Vous pouvez définir le répertoire dans lequel les fichiers d'échange sont stockés, afin qu'ils n'encombrent pas vos répertoires normaux:

set swapfile
set dir=~/tmp

Voir également

:help swap-file
user55400
la source
4
eh bien, je n'ai jamais eu besoin de ceux avec notepad ++, sauf si vous dites que vim plantera trop souvent!
hasen le
8
non, je n'impliquais pas que vim plante trop souvent (même si je l'ai vu planter). Mais pour mon environnement de travail, la connexion réseau à un hôte sur lequel je travaille est assez instable, donc une édition interrompue se produit. Les fichiers d'échange y contribuent.
user55400
9
@ user55400 entendu parler de GNU / Screen? (ou tmux, ou cette alternative japonaise)
Elazar Leibovich
J'ai ajouté ceci à mon fichier _vimrc sous Windows, et je reçois toujours des fichiers fichier ~. Est-ce que je ne fais pas quelque chose correctement?
FilBot3
2
@noircc Je déconseillerais d'utiliser / tmp. Si tout le système tombe en panne et que vous devez redémarrer, vos fichiers d'échange auront disparu.
57

Mettez ceci dans votre fichier de configuration .vimrc.

set nobackup
Chad Birch
la source
5
Nous l'avons fait sur Windows 8.1 avec Vim. Les fichiers d'échange sont toujours présents.
Shaun Luttin
1
Shaun, vous devrez peut-être également ajouter "set noswapfile" à votre .vimrc pour empêcher la création de nouveaux fichiers d'échange, comme mentionné dans l'édition de la question d'origine.
Earl Zedd
Qu'en est-il de la position :assise comme préfixe avant le setmot-clé? Est-ce nécessaire? Cela ne ressemble pas à un commentaire ..
Stephane
@Stephane un :préfixe signifie que c'est fait en mode commande, mais vous n'en avez pas besoin :lors de l'écriture de votre vimrc
TankorSmash
Ce n'est pas vraiment une bonne idée. Ce qui précède de laisser ces fichiers dans le dossier temp / est déjà bien meilleur.
MonsieurMan
36

; Pour les utilisateurs Windows de revenir au répertoire temporaire

set backup
set backupdir=C:\WINDOWS\Temp
set backupskip=C:\WINDOWS\Temp\*
set directory=C:\WINDOWS\Temp
set writebackup
Sooraj
la source
6
J'ai dû ajouter set undodir = C: \ WINDOWS \ Temp
Cela n'a pas fonctionné pour moi - j'ai dû utiliser set dir = $ TEMP à la place
Frank Schmitt
10

J'ai créé un plugin appelé "noswapsuck" qui n'active le fichier d'échange que lorsque le tampon contient des modifications non enregistrées. Une fois les modifications enregistrées, le fichier d'échange est effacé. Par conséquent, les fichiers d'échange qui contiennent le même contenu que le fichier sur le disque seront supprimés.

Obtenez-le ici: noswapsuck.vim

Cela a bien fonctionné pour moi, mais je ne l'ai jamais fait connaître auparavant, alors je serais heureux de recevoir des commentaires.

Avantages:

  • Les seuls fichiers d'échange qui resteront sur votre disque seront des fichiers d'échange importants qui diffèrent en fait du fichier!

Désavantages:

  • Si le tampon a un fichier d'échange, il ne sera pas détecté lors de la première ouverture du fichier. Il ne sera détecté que lorsqu'il swapfileest activé, c'est-à-dire lorsque vous commencez à éditer le tampon. C'est terriblement tard et vous interrompra. (Résolu: nous recherchons maintenant un fichier d'échange préexistant lorsqu'un tampon est ouvert, en réactivant temporairement l' swapfileoption.)

  • Si vous travaillez dans un environnement où vous souhaitez minimiser les écritures sur disque (par exemple, faible consommation d'énergie, fichiers montés sur un réseau, ou modification d'un fichier volumineux), il n'est pas idéal de continuer à supprimer et à recréer le fichier d'échange sur chaque enregistrer et modifier. Dans de telles situations, vous pouvez faire:

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    

    qui conservera le fichier d'échange après une écriture, mais le supprimera quand même lorsque le tampon perdra le focus.

En passant, j'ai un autre petit plugin :DiffAgainstFileOnDiskqui peut être très utile après avoir frappé (r)ecover, pour vérifier si le tampon que vous avez récupéré est plus récent ou plus ancien que le fichier existant, ou identique à celui-ci.

joeytwiddle
la source
8

Sous Windows, ajoutez les lignes suivantes à _vimrc

" store backup, undo, and swap files in temp directory
set directory=$HOME/temp//
set backupdir=$HOME/temp//
set undodir=$HOME/temp//
Vlad Bezden
la source
5

Cette réponse s'applique à l'utilisation de gVim sur Windows 10. Je ne peux pas garantir les mêmes résultats pour d'autres systèmes d'exploitation.

Ajouter:

set nobackup
set noswapfile
set noundofile

Dans votre fichier _vimrc.

Remarque: c'est la réponse directe à la question (pour Windows 10) et probablement pas la chose la plus sûre à faire (lisez les autres réponses), mais c'est la solution la plus rapide dans mon cas.

wlwl2
la source
0

J'ai cette configuration dans mon Ubuntu .vimrc. Je ne vois aucun fichier d'échange dans mes fichiers de projet.

set undofile
set undolevels=1000         " How many undos
set undoreload=10000        " number of lines to save for undo

set backup                        " enable backups
set swapfile                      " enable swaps
set undodir=$HOME/.vim/tmp/undo     " undo files
set backupdir=$HOME/.vim/tmp/backup " backups
set directory=$HOME/.vim/tmp/swap   " swap files

" Make those folders automatically if they don't already exist.
if !isdirectory(expand(&undodir))
    call mkdir(expand(&undodir), "p")
endif
if !isdirectory(expand(&backupdir))
    call mkdir(expand(&backupdir), "p")
endif
if !isdirectory(expand(&directory))
    call mkdir(expand(&directory), "p")
endif
Raza
la source