Vim'in geçici dosyalar oluşturmasını (ve bırakmasını) nasıl önleyebilirim?


163

Vim neden <filename>~dosya oluşturur ? Bunu devre dışı bırakmanın bir yolu var mı?

Yedekleme içinse (ya da bir şey), bunun için git kullanıyorum.

Ayrıca, bu .<filename.with.path.hints>.swpdosyalar da.

Vim'e bunları yaratmamasını veya en azından kendi başına temizlemesini nasıl söyleyebilirim?

DÜZENLE

boş, yinelenen:

Vim neden ~ uzantılı dosyaları kaydediyor?

Oradan rogeriopvl'in cevabını kabul ettim .

kelimesi kelimesine kopya:

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

13
Git, bir sistem çökmesinden sonra işinizi kurtarmanıza asla yardımcı olmaz. Git * .swp dosyalarınızı da göz ardı edebilir. = D
vmassuchetto



lol birisi bu soruyu gönderdikten altı yıl sonra ciddi bir şekilde bu soruyu tekrarladı mı?
hasen

Yanıtlar:


80

Takas dosyalarıyla çalışmaya devam etmenizi şiddetle tavsiye ederim (Vim çökerse).

Takas dosyalarının depolandığı dizini ayarlayabilirsiniz, böylece normal dizinlerinizi karıştırmazlar:

set swapfile
set dir=~/tmp

Ayrıca bakınız

:help swap-file

4
vim'in çok sık çökeceğini söylemedikçe, notepad ++ ile asla ihtiyacım yoktu!
hasen

8
hayır, vim'in çok sık çöktüğünü ima etmiyordum (çöktüğünü gördüm). Ancak çalışma ortamım için üzerinde çalıştığım bazı ana bilgisayarlara ağ bağlantısı oldukça kararsız, bu nedenle kesintili düzenleme gerçekleşiyor. Dosya değiştirme yardımcı olur.
user55400

9
@ user55400 GNU / Screen duydunuz mu? (veya tmux veya bu Japon alternatifi)
Elazar Leibovich

Bunu Windows'ta _vimrc dosyama ekledim ve hala dosya ~ dosyaları alıyorum. Bir şeyi doğru yapmıyor muyum?
FilBot3

2
@noircc / tmp komutunu kullanmamayı öneririm. Tüm sistemin çökmesi ve yeniden başlatılması gerektiğinde, takas dosyalarınız kaybolacaktır.

57

Bunu .vimrc yapılandırma dosyanıza koyun.

set nobackup

5
Bunu Vim ile Windows 8.1'de yaptık. Takas dosyaları hala mevcut.
Shaun Luttin

1
Shaun, orijinal soruya düzenleme bölümünde belirtildiği gibi yeni takas dosyalarının oluşturulmasını önlemek için .vimrc'ye "set noswapfile" eklemeniz gerekebilir.
Earl Zedd

Anahtar kelimeden :önce önek olarak oturmaya ne dersiniz set? Gerekli mi? Bu bir yorum gibi görünmüyor ..
Stephane

@Stephane bir :önek komut modunda yapıldığı anlamına gelir, ancak :
vimrc'nizi

Bu gerçekten iyi bir fikir değil. Bu dosyaların temp / klasöründe oturmasına izin vermenin çok daha iyi olduğu zaten.
MonsieurMan

36

; Windows Kullanıcılarının geçici dizine dönmesi

set backup
set backupdir=C:\WINDOWS\Temp
set backupskip=C:\WINDOWS\Temp\*
set directory=C:\WINDOWS\Temp
set writebackup

6
Set undodir = C: \ WINDOWS \ Temp

Bu benim için işe yaramadı - bunun yerine set dir = $ TEMP kullanmalıydım
Frank Schmitt

10

Ben sadece tampon kaydedilmemiş değişiklikler içeriyorsa swapfile etkinleştiren "noswapsuck" adlı bir eklenti yaptım. Değişiklikler kaydedildikten sonra, takas dosyası temizlenir. Bu nedenle, diskteki dosyayla aynı içeriği içeren takas dosyaları kaldırılacaktır.

Buradan edinin: noswapsuck.vim

Benim için iyi çalışıyor, ama daha önce hiç yayınlamamıştım, bu yüzden geri bildirimi memnuniyetle karşılarım.

Avantajları:

  • Diskinizde kalan tek swap dosyaları, dosyadan gerçekten farklı olan önemli swap dosyaları olacaktır!

Dezavantajları:

  • Arabellek bir takas dosyasına sahipse, dosya ilk açıldığında algılanmaz. Yalnızca swapfileetkinleştirildiğinde, yani arabelleği düzenlemeye başladığınızda algılanır . Bu can sıkıcı bir şekilde geç ve sizi yarıda kesecek. (Çözüldü: Şimdi, arabellek açıldığında, swapfileseçeneği geçici olarak tekrar açarak önceden var olan bir takas dosyasını kontrol ediyoruz .)

  • Disk yazma işlemlerini en aza indirmek istediğiniz bir ortamda (örneğin, düşük güç veya ağa bağlı dosyalar veya büyük bir dosyayı düzenleme) çalışıyorsanız, takas dosyasını her kaydedin ve düzenleyin. Bu gibi durumlarda şunları yapabilirsiniz:

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    

    Bu, bir yazma işleminden sonra swap dosyasını saklar, ancak arabellek odağı kaybettiğinde yine de kaldırır.

Bu arada, :DiffAgainstFileOnDiskvurduktan sonra oldukça yararlı olabilecek başka bir küçük eklentim var, (r)ecoverkurtardığınız tamponun mevcut dosyadan daha yeni veya daha eski olup olmadığını veya onunla aynı olup olmadığını kontrol etmek için.


8

Windows'ta _vimrc öğesine aşağıdaki satırları ekleyin

" store backup, undo, and swap files in temp directory
set directory=$HOME/temp//
set backupdir=$HOME/temp//
set undodir=$HOME/temp//

5

Bu yanıt Windows 10'da gVim kullanımı için geçerlidir. Diğer işletim sistemleri için aynı sonuçları garanti edemiyorum.

Ekle:

set nobackup
set noswapfile
set noundofile

_Vimrc dosyanıza.

Not: Bu sorunun doğrudan cevabı (Windows 10 için) ve muhtemelen yapılacak en güvenli şey değil (diğer cevapları okuyun), ancak bu benim durumumdaki en hızlı çözüm.


0

Bu kurulumu Ubuntu .vimrc dosyamda var. Proje dosyalarımda takas dosyaları görmüyorum.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.