2009-05-04 4 views
186

Y at-il un moyen de désactiver la création de fichiers .swp dans vim? ou au moins les créer tous en un seul endroit afin que je puisse les trouver et les supprimer facilement. Je les trouve particulièrement gênants lorsque je copie le répertoire parent en même temps que je les édite. Bien sûr, je sais que je peux utiliser find -exec pour les trouver et les supprimer. Mais je veux une solution plus pratique.Désactivation de la création de fichiers d'échange dans vim

+1

http://stackoverflow.com/questions/607435/pourquoi-does-vim-save-files-with-a-extension pourrait aider – Ross

+2

http://stackoverflow.com/questions/743150/how-to-prevent -vim-from-creation-and-leaving-temporary-files/743209 # 743209 – maxaposteriori

Répondre

217

Pour désactiver les fichiers d'échange à partir de vim, type

:set noswapfile 

Pour désactiver les fichiers d'échange permanent, ajoutez le ci-dessous à votre fichier ~/.vimrc Pour plus de détails, voir le Vim docs on swapfile

+4

Les fichiers d'échange sont bons si votre éditeur tombe en panne (coupure de courant, etc.), gardez juste à l'esprit. – koonse

+0

Une autre option est toujours d'utiliser le fichier d'échange, mais laissez-le en mémoire, de sorte qu'il ne continuera pas à écrire le disque dur. Cela ne peut pas vous empêcher de perdre le fichier pendant une panne, mais si vous ouvrez le même fichier dans un autre vim, il vous le dira immédiatement. La commande est: set directory =/dev/shm – webbertiger

+0

[la réponse de trusktr] (https://stackoverflow.com/a/15317146/712526) vous permet de conserver les avantages des fichiers d'échange tout en répondant aux préoccupations de l'OP. – jpaugh

3

Si vous mettez set directory="" dans votre fichier exrc, vous allez désactiver le fichier d'échange. Cependant, cela désactivera la récupération.

Plus d'infos here.

27

Voici mes paramètres de sauvegarde personnels ~/.vimrc

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup 
36

Je trouve la réponse here:

vim -n <file> 

ouvre le fichier sans fichier d'échange.

En plus:

set dir=/tmp 

dans .vimrc crée les fichiers d'échange dans /tmp.

+0

Qu'en est-il des fichiers de sauvegarde '* .ext ~'? Y a-t-il une option de ligne de commande pour les désactiver aussi? –

+0

C'est très utile pour ces énormes fichiers uniques! Merci. –

6

Vous pouvez définir backupdir et directory à null afin de désactiver complètement vos fichiers d'échange, mais il est généralement recommandé de simplement les placer dans un répertoire centralisé. Vim prend soin de s'assurer qu'il n'y a pas de collisions de noms ou quelque chose comme ça; donc, c'est une alternative tout à fait sûr:

set backupdir=~/.vim/backup/ 
set directory=~/.vim/backup/ 
+2

Vous devez ajouter une double barre oblique '//' à la fin des chemins afin que vous puissiez modifier deux fichiers avec le même nom en même temps. –

12

Je suis d'accord avec ceux qui remettent en question pourquoi vim a besoin de tout ce genre de choses « de reprise après incident » lorsque aucun autre éditeur de texte pris la peine avec elle. Je ne veux pas que vim crée AUCUN fichier supplémentaire dans le répertoire du fichier édité quand je l'édite, merci beaucoup. À cette fin, j'ai dans mon _vimrc pour désactiver les fichiers d'échange, et déplacer irritantes fichiers « sauvegarde » à la Temp dir:

" Uncomment below to prevent 'tilde backup files' (eg. myfile.txt~) from being created 
"set nobackup 

" Uncomment below to cause 'tilde backup files' to be created in a different dir so as not to clutter up the current file's directory (probably a better idea than disabling them altogether) 
set backupdir=C:\Windows\Temp 

" Uncomment below to disable 'swap files' (eg. .myfile.txt.swp) from being created 
set noswapfile 
+7

Je pense que le fait que les autres éditeurs ne s'en soucient pas reflète plus mal sur les autres éditeurs que sur ceux de vi (m). Le choix de faire du même répertoire l'emplacement par défaut pour mettre ces fichiers est un peu malheureux, mais au moins marginalement défendable. (Par exemple, dans un environnement multiserveur, fortement cross-monté, il peut ne pas être évident où trouver un fichier de récupération au moment où vous en avez le plus besoin) –

+2

La manipulation de fichier d'échange de Vim est juste horrible. Je l'ai utilisé pour récupérer des données perdues peut-être 5 fois. Mais j'ai été harcelé pour récupérer un fichier d'échange environ 9 000 fois, ce qui est invariablement identique au fichier de toute façon, ou pire une version périmée. Ce pourrait être une bonne fonctionnalité si le processus de récupération ne craint pas si terriblement. recover.vim aide un peu, mais est encore trop interactif. – joeytwiddle

+3

Sublime Le texte a une «reprise après sinistre». J'aime ça! Je n'ai même pas à enregistrer un fichier, quand je reprends toutes les modifications que j'ai faites, sauvegardées ou non, sont remontées. – leetNightshade

136

Définissez les variables suivantes dans Vimrc ou/etc/vimrc pour faire mettre vim échange, de sauvegarde et de fichiers dans un undo emplacement spécial au lieu du répertoire de travail du fichier en cours d'édition:

set backupdir=~/.vim/backup// 
set directory=~/.vim/swap// 
set undodir=~/.vim/undo// 

les barres obliques à double fin dans le chemin dit vim pour activer une fonction où il évite les collisions de noms. Par exemple, si vous modifiez un fichier dans un emplacement et un autre fichier dans un autre emplacement et que les deux fichiers portent le même nom, vous ne souhaitez pas qu'une collision de noms se produise dans ~/.vim/swap /. Si vous spécifiez ~/.vim/swap // avec deux barres obliques, vim créera des fichiers d'échange en utilisant le chemin complet des fichiers édités pour éviter les collisions (les barres obliques dans le chemin du fichier seront remplacées par le symbole%).Par exemple, si vous modifiez /path/one/foobar.txt et /path/two/foobar.txt, vous verrez deux fichiers d'échange dans ~/.vim/swap/nommés% path% one % foobar.txt et% path% deux% foobar.txt, respectivement.

+0

Vous pouvez également ajouter que les fichiers de sauvegarde sauvegardés peuvent sauver un skin –

+0

Commentaire: (pas de critique), Cela semble bon principalement pour le développement car pour la lecture de fichiers et de petites éditions ou la tenue de notes sans importance qui est une grande partie de l'utilisation vim pour beaucoup de gens, il semble que l'on doive mieux faire un travail de book booking. Personnellement, je préfère pour tous les travaux d'avoir tout simplement pas d'échanges ou d'autres sauvegardes automatiques. Si j'ai vraiment besoin de développer quelque chose, je préférerais avoir un framework de plus haut niveau pour me protéger, de préférence avec un contrôle de version de code, etc. –

+0

@LelaDax Vrai, la plupart du temps ces fichiers sont inutiles car j'utilise git pour tous mes code source. Dans de rares occasions (comme un accident), ils sont utiles. Mais en fait, l'histoire d'annulation que j'utilise beaucoup. Il est beaucoup plus facile de naviguer aussi vite que de vérifier les commits git pour voir l'histoire précédente.gundo rend facile et agréable de naviguer dans l'arborescence d'annulation. Je pourrais vivre sans le swap et les fichiers de sauvegarde si. – trusktr

0

Pour tous ceux qui essaient de mettre ce pour des projets Rails, ajouter

set directory=tmp,/tmp 

dans votre

~/.vimrc 

Ainsi, les fichiers .swp seront dans leur emplacement naturel - le répertoire tmp (par projet) .

2

créer aucun fichier d'échange de vim juste pour un fichier particulier

autocmd bufenter c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile 
+1

Ou pour tous les fichiers dans un répertoire particulier, ce qui suit semble fonctionner (seulement un bref test): 'autocmd bufenter c:/aaa/Dropbox/TapNote/*: set noswapfile' – scottkosty

2

Si vous utilisez git, vous pouvez ajouter *.swp-.gitignore.

+0

Je pense que c'est ce dont les utilisateurs ont besoin! La désactivation des fichiers d'échange est une mauvaise pratique. – DenisKolodin

Questions connexes