Varsayılan olarak, vimtakas dosyalarını proje dizinimde bırakır ve çökmelerde yedekleme dosyaları bırakır.
Bunu önleyebilir miyim? Yoksa tüm projelerimin .VCSignoredosyasını güncellemem gerekiyor mu?
Varsayılan olarak, vimtakas dosyalarını proje dizinimde bırakır ve çökmelerde yedekleme dosyaları bırakır.
Bunu önleyebilir miyim? Yoksa tüm projelerimin .VCSignoredosyasını güncellemem gerekiyor mu?
Yanıtlar:
Varsayılan olarak Vim, yedekleme dosyalarını geride bırakmaz. Bunlar Vim arabelleği diske kaydederken var olan geçici dosyalardır. :help backup-tableBu davranışta açıklandığı gibi 'backup've 'writebackup'seçenekleri ile kontrol edilebilir :
'backup' 'writebackup' action ~
off off no backup made
off on backup current file, deleted afterwards (default)
on off delete old backup, backup current file
on on delete old backup, backup current file
Takas dosyalarına gelince, bunları özel bir dizinde toplamak yararlı olabilir. Bu 'directory'seçenek ile yapılabilir . Örneğin
:set directory^=$HOME/.vim/tmp//
, $HOME/.vim/tmptakas dosyası oluştururken Vim'in kullanmaya çalışacağı dizin listesinin başına ekleyecektir . Sondaki //Vim farklı dizinlerden benzer adlandırılmış dosyaları ile çarpışmalar bulunmamaktadır yüzden dosyası için tüm yol adı kodlamak yapar.
Uyarı : Bu, takas dosyaları farklı konumlarda depolandığından Vim'in birden çok kullanıcının aynı dosyayı düzenlemeye çalıştığını fark etmesini etkin bir şekilde devre dışı bırakır.
Aşağıdaki snippet ( tpope'nun vimrc'sinden uyarlanmış ), değiştirilmediğinde bir arabellek için takas dosyasını da devre dışı bırakır, böylece Vim / bilgisayarınız bir grup dosya açıkken çökerse, geride bırakılan takas dosyaları yalnızca değiştirilmiş dosyalar için.
autocmd CursorHold,BufWritePost,BufReadPost,BufLeave *
\ if isdirectory(expand("<amatch>:h")) | let &swapfile = &modified | endif
Uyarı : Takas dosyası yalnızca arabellek değiştirildiğinde mevcut olduğundan, bu ayar ile benzer bir etkiye sahiptir 'directory'. Arabellek değiştirilmezse, başka bir Vim bildirimde bulunmadan düzenlemeye başlayabilir. İkinci Vim, birincisi daha fazla değişiklik yapmadan önce kaydederse, kullanıcı kaydetmeye çalışana veya bir şey dosyanın değiştirilip değiştirilmediğini kontrol etmek için Vim'i tetikleyene kadar fark edilmez.
.vimrcPaylaşılan sunucular da dahil olmak üzere birden çok makinede kullanıyorum . İnsanların üzerinde çalıştığım dosyaları görebilmelerini istemiyorum ve ana dizinimi nispeten temiz tutmayı seviyorum. İşte bu benim Linux ve Mac OS X üzerinde çalışacak olan çözümüm.
" Sets central temp file location, to prevent local default behavior.
if isdirectory($HOME . '/.vim/.tmp') == 0
:silent !mkdir -m 700 -p ~/.vim/.tmp > /dev/null 2>&1
endif
set backupdir=~/.vim/.tmp ",~/.local/tmp/vim,/var/tmp,/tmp,
set directory=~/.vim/.tmp ",~/.local/tmp/vim,/var/tmp,/tmp,
Bunun zaten yoksa .tmpaltında bir dizin oluşturacağını unutmayın ~/.vim. Bu, takas dosyalarınızın yeni evi olacaktır. Geri alma dosyaları için, benim de .vimrc(ki oldukça benzer) aşağıdakiler var:
if exists("+undofile")
" undofile -- This allows you to use undos after exiting and
" restarting. NOTE: only present in 7.3+
" :help undo-persistence
if isdirectory( $HOME . '/.vim/.undo' ) == 0
:silent !mkdir -m 700 -p ~/.vim/.undo > /dev/null 2>&1
endif
set undodir=~/.vim/.undo
set undofile
endif
Benim vimrc yaptığım budur:
fun! MkdirIfNeeded(dir, flags, permissions)
if !isdirectory(a:dir)
call mkdir(a:dir, a:flags, a:permissions)
endif
endfun
" Set (& create if needed) a temp directory to keep backup & swap files
if has('win32')
let whoami = substitute(system("whoami /LOGONID"), '\n', '', '')
let tmpdir = 'C:/tmp/vim_' . whoami
else
let whoami = substitute(system("whoami"), '\n', '', '')
let tmpdir = '/var/tmp/vim_' . whoami
endif
call MkdirIfNeeded(tmpdir, 'p', 0700)
let &backupdir = tmpdir
let &dir = tmpdir
let &undodir = tmpdir
Bu yaratacak /var/tmp/vim_<username>ve tüm vim ilgili dosyaları depolamak için kullanabilir. Proje dizininizi temiz tutmak.
Kullanma whoami, vimrc'yi ayrı dizinler kullanırken global olarak (yani kullanıcı ve kök için) kullanabilmenizi sağlar; buna ihtiyacınız yoksa, daha hızlı başlatma için sabit kodlu bir dizinle değiştirebilirsiniz. ~/.vim/Dizini de kullanabilirsiniz , ancak /var/tmpgenellikle ayrı bir dosya sistemi olduğu için kullanmayı seviyorum .
Kullandığım /var/tmpçünkü /tmpsık sık yeniden başlatma temizlenir. Muhtemelen bu dizini dünya çapında yazılabilir olarak istemezsiniz, çünkü insanlar bir dosyayı açtığınızda potansiyel olarak zararlı şeyler yapmak için dosyaları buraya yerleştirebilirler.
adduserkullanıcı yapmak için veya kullandığınız her şeyi eklemek istersiniz . Her durumda, çoğu kişi Vim'i güvenilir makinelerde kullanır (ancak yorumunuz iyi bir şeydir).
$HOMEyere koymadığından emin değilim .
/var/Farklı bir dosya sistemidir. Teori bunun üzerine yazma bir sürü engeller yani, /, /usr, veya /home, daha az parçalanma ve bir kaza durumunda dosyanın bozulması riski yol açan ... Bu posta kutuları ve malzeme üzerinde neden de /varvarsayılan olarak değil, ev yapımı ...
/var/tmpher zaman dünya çapında yazılabilir bir sistem temp dizinidir. (Bunu, olmayacak şekilde değiştirebilirsiniz, ancak bu, Unix benzeri sistemlerin parçaları kırdıktan sonra tutmanıza izin vermekten mutluluk duyduğu şeylerden biridir). Sistemde başka bir kullanıcınız varsa,/var/tmp/vim_«your_username»kendi seçtiği izinlerle oluşturabilir . Ve sonra muhtemelen vim tempfiles tarafından yok edilecek önemli dosyalarınıza semboliklerle doldurun.