Deaktivieren der Erstellung von Auslagerungsdateien in vim

216

Gibt es eine Möglichkeit, die Dateierstellung .swpin vim zu deaktivieren ? oder zumindest alle an einem Ort erstellen, damit ich sie leicht finden und löschen kann.

Ich finde sie besonders ärgerlich, wenn ich das übergeordnete Verzeichnis kopiere und gleichzeitig bearbeite. Natürlich weiß ich, dass ich find -exec verwenden kann, um sie zu finden und zu löschen. Aber ich möchte eine praktischere Lösung.

Nadia Alramli
quelle

Antworten:

255

Geben Sie ein, um Auslagerungsdateien in vim zu deaktivieren

:set noswapfile

Fügen Sie Ihrer ~/.vimrcDatei Folgendes hinzu, um Auslagerungsdateien dauerhaft zu deaktivieren

set noswapfile

Weitere Informationen finden Sie in den Vim-Dokumenten zur Auslagerungsdatei

dwc
quelle
6
Swap-Dateien sind gut, wenn Ihr Editor abstürzt (Stromausfall usw.). Denken Sie jedoch daran.
Koonse
1
Eine andere Option ist die Verwendung der Auslagerungsdatei, die jedoch im Speicher verbleibt, damit nicht weiterhin Festplatten geschrieben werden. Dies kann Sie nicht vor dem Verlust der Datei während eines Ausfalls schützen. Wenn Sie jedoch dieselbe Datei in einem anderen Vim öffnen, werden Sie sofort darüber informiert. Der Befehl lautet: set directory = / dev / shm
webbertiger
Mit der Antwort von trusktr können Sie die Vorteile von Auslagerungsdateien beibehalten und gleichzeitig auf die Bedenken des OP eingehen .
Jpaugh
Von innen können Sie auch die Auslagerungsdatei deaktivieren, während Sie eine Datei öffnen::noswapfile edit /path/to/file
Torkel Bjørnson-Langen
Meine persönliche Philosophie über Datenverlust ist DBAB und oft speichern ...
Samy Bencherif
156

Legen Sie die folgenden Variablen in .vimrc oder / etc / vimrc fest, damit vim Swap-, Backup- und Undo-Dateien an einem bestimmten Speicherort anstelle des Arbeitsverzeichnisses der zu bearbeitenden Datei ablegt:

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

Durch die Verwendung von doppelten Schrägstrichen im Pfad wird vim angewiesen, eine Funktion zu aktivieren, mit der Namenskollisionen vermieden werden. Wenn Sie beispielsweise eine Datei an einem Speicherort und eine andere Datei an einem anderen Speicherort bearbeiten und beide Dateien denselben Namen haben, möchten Sie nicht, dass in ~ / .vim / swap / eine Namenskollision auftritt. Wenn Sie ~ / .vim / swap // mit zwei nachgestellten Schrägstrichen angeben, erstellt vim Auslagerungsdateien unter Verwendung des gesamten Pfads der zu bearbeitenden Dateien, um Kollisionen zu vermeiden (Schrägstriche im Pfad der Datei werden durch das Prozentzeichen% ersetzt).

Wenn Sie beispielsweise /path/one/foobar.txt und /path/two/foobar.txt bearbeiten, werden in ~ / .vim / swap / zwei Auslagerungsdateien mit dem Namen% path% one% foobar.txt angezeigt bzw.% path% two% foobar.txt.

trusktr
quelle
Sie können auch hinzufügen, dass einige Zeit die gespeicherten Sicherungsdateien einen Entwickler-Skin speichern könnten
Bartek Skwira
Kommentar: (keine Kritik), Das scheint vor allem für die Entwicklung gut zu sein, da es für das Lesen von Dateien und kleinen Änderungen oder für unwichtige Notizen, die für viele Leute einen großen Teil der Verwendung von Vim ausmachen, wie ein zusätzlicher Buchhaltungsjob erscheint, der besser ausgelassen wird. Ich persönlich bevorzuge, dass alle Jobs keine Swaps oder andere automatische Backups haben. Wenn ich wirklich etwas entwickeln muss, hätte ich lieber ein
höheres
@LelaDax Richtig, meistens sind diese Dateien meistens nutzlos, weil ich git für meinen gesamten Quellcode verwende. In seltenen Fällen (wie bei einem Absturz) haben sie sich jedoch als nützlich erwiesen. Aber eigentlich benutze ich die Rückgängig-Historie oft. Es ist viel einfacher, so schnell zu navigieren, als Git-Commits auszuchecken, um den vorherigen Verlauf anzuzeigen. gundo macht es schön und einfach, durch den Rückgängig-Baum zu navigieren. Ich könnte allerdings ohne die Swap- und Backup-Dateien leben.
trusktr
26
Nur zu Ihrer Information für Leute, die neu sind (wie ich, haha ​​...), müssen Sie zu ~ / .vim / gehen und die Verzeichnisse selbst erstellen. Sie werden nicht automatisch für Sie erstellt.
August
1
Sie können auch Code in Ihr vimrc schreiben, um automatisch die Ordner für Sie zu erstellen, was ich in meinem getan habe. Auf neuen Systemen bekomme ich einfach mein vimrc und es kümmert sich um den Rest.
trusktr
42

Ich habe die Antwort hier gefunden :

vim -n <file>

öffnet die Datei ohne Auslagerungsdatei.

Zusätzlich:

set dir=/tmp

im .vimrc erstellt die Swapfiles in /tmp.

markus_b
quelle
Was ist mit den *.ext~Sicherungsdateien? Gibt es eine Befehlszeilenoption, um sie ebenfalls zu deaktivieren?
Salman von Abbas
Das ist sehr nützlich für diese einmaligen riesigen Dateien! Vielen Dank.
Felipe Alvarez
28

Hier sind meine persönlichen ~ / .vimrc-Backup-Einstellungen

" 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
cpjolicoeur
quelle
13

Ich stimme denen zu, die sich fragen, warum vim all dieses "Disaster Recovery" -Ding benötigt, wenn sich kein anderer Texteditor darum kümmert. Ich möchte nicht, dass vim irgendwelche zusätzlichen Dateien im Verzeichnis der bearbeiteten Datei erstellt, wenn ich sie bearbeite. Vielen Dank. Zu diesem Zweck habe ich dies in meinem _vimrc, um Auslagerungsdateien zu deaktivieren und irritierende 'Backup'-Dateien in das Temp-Verzeichnis zu verschieben:

" 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
Jez
quelle
9
Ich denke, die Tatsache, dass andere Redakteure sich nicht damit beschäftigen, spiegelt die anderen Redakteure mehr schlecht wider als vi (m). Die Entscheidung, dasselbe Verzeichnis zum Standardspeicherort für diese Dateien zu machen, ist etwas unglücklich, wenn auch zumindest geringfügig vertretbar. (z. B. In einer Multiserver-Umgebung mit hohem Cross-Mount-Status ist es möglicherweise nicht offensichtlich, wo sich eine Wiederherstellungsdatei befindet, wenn Sie sie am dringendsten benötigen.)
Domingo Ignacio,
3
Vims Umgang mit Swapfiles ist einfach schrecklich. Ich habe es verwendet, um verlorene Daten vielleicht 5 Mal wiederherzustellen. Aber ich hatte Probleme, eine Swap-Datei ungefähr 9.000 Mal wiederherzustellen, was ohnehin immer mit der Datei identisch ist, oder schlimmer noch, eine veraltete Version. Es könnte eine gute Funktion sein, wenn der Wiederherstellungsprozess nicht so schrecklich war. recovery.vim hilft ein wenig, ist aber immer noch zu interaktiv.
Joeytwiddle
3
Erhabener Text hat disaster recovery. Ich liebe es! Ich muss nicht einmal eine Datei speichern, wenn ich alle Änderungen, die ich vorgenommen habe, gespeichert habe oder nicht, wieder aufrufe.
leetNightshade
Ich habe einen einfachen Autobefehl, der alle Änderungen schreibt, sobald sie vorgenommen werden, wodurch sowohl Swap-Dateien als auch Backups unbrauchbar werden.
tbodt
2
@ TorkelBjørnson-Langen Es ist wahrscheinlich meine Schuld, meinen Computer neu zu starten, ohne alle meine Vim-Sitzungen zu schließen, und dann paranoid zu sein, welche Wiederherstellungsdateien tatsächlich gültig sind. Wie auch immer, ich habe versucht, das Beste aus beiden Welten herauszuholen
verwaltet,
7

Sie können backupdir und directory auf null setzen, um Ihre Auslagerungsdateien vollständig zu deaktivieren. Es wird jedoch generell empfohlen, sie einfach in einem zentralen Verzeichnis abzulegen. Vim achtet darauf, dass es keine Namenskollisionen oder ähnliches gibt. Das ist also eine absolut sichere Alternative:

set backupdir=~/.vim/backup/
set directory=~/.vim/backup/
Monokrom
quelle
3
Sie sollten //am Ende der Pfade einen doppelten Schrägstrich einfügen, damit Sie zwei Dateien mit demselben Namen gleichzeitig ändern können.
Samuel O'Malley
Danke, @ SamuelO'Malley. Was macht das //?
Monokrom
Schauen :help directorySie sich an, ob Sie die Dokumente dazu lesen möchten. Ein doppelter Schrägstrich weist vim an, den vollständigen Pfad der Datei in den Namen der Auslagerungsdatei zu codieren, z. B. %home%sam%dotfiles%.gitignore.swpund nicht nur .gitignore.swp.
Samuel O'Malley
3

Wenn Sie set directory=""Ihre exrc-Datei einfügen, deaktivieren Sie die Auslagerungsdatei. Dadurch wird jedoch die Wiederherstellung deaktiviert.

Mehr Infos hier .

Brian Rasmussen
quelle
3

Wenn Sie verwenden git, können Sie hinzufügen *.swpzu .gitignore.

Evan Hu
quelle
Ich denke, das ist es, was die meisten Benutzer brauchen! Das Deaktivieren von Auslagerungsdateien ist eine schlechte Praxis.
DenisKolodin
2

Erstellen Sie keine VIM-Auslagerungsdatei nur für eine bestimmte Datei

autocmd bufenter  c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile
zzapper
quelle
1
Oder für alle Dateien in einem bestimmten Verzeichnis scheint das Folgende zu funktionieren (nur kurze Tests):autocmd bufenter c:/aaa/Dropbox/TapNote/* :set noswapfile
Scottkosty
1

Fügen Sie für alle, die versuchen, dies für Rails-Projekte festzulegen, hinzu

set directory=tmp,/tmp

in dein

~/.vimrc

Die SWP-Dateien befinden sich also an ihrem natürlichen Speicherort - dem tmp-Verzeichnis (pro Projekt).

valk
quelle