VIM takas dosyası en iyi uygulamaları?


14

Bağlantımı kaybederek vim'de bir seanstan her defasında dred ile doluyum (ve yine de vim kullanmaya devam ediyorum ... ne mazoşist olmalıyım) çünkü dosyalarımı tekrar açtığımda bir yığın takas- dosyaları işimi yok etmek için bir şans bekliyor. Vim takas dosyalarıyla çalışmak için en iyi uygulamalar nelerdir? En yenisini mi seçiyorsun? Dosya beklediğiniz şekilde çalışıyorsa, takas dosyalarını siliyor musunuz? Onlardan nasıl kurtulursun?


5
Takas dosyaları işinizi korumak için orada. GNU ekranını kullanmayı düşünün.

1
İşlevselliği kapatmak istemiyorum; sinir bozucu ama yararlı olduğunu belirttiğiniz gibi.
leeand00

1
Sadece nasıl düzgün kullanılacağını bilmek istiyorum.
leeand00

2
@DrEval Ben kullanıyorum tmux
leeand00

2
Tmux kullanıyorsanız, bağlantınızı kaybetme konusunda endişelenmenize gerek yoktur: yeniden bağlandığınızda oturumunuza yeniden bağlanmanız yeterlidir. Ayrıca ilginizi çekebilir mosh ve @ ChristianBrabandt's Recover eklentisi .
Zengin

Yanıtlar:


24

Panik yapma!

Dosyaları kurtarma olduğunu hep vim, çünkü güvenli asla bunları kendiniz yazmak kadar herhangi bir değişiklik yazar. Bu yüzden bir takas dosyasından kurtarma ve kaydetmeden kapatma hiçbir şeyi değiştirmez.

Takas dosyalarınızı düzenleyin:

Tüm takas dosyalarınızı aynı yere koymak için vim alın, böylece nerede olduklarını her zaman bilirsiniz:

set directory^=$HOME/.vim/swap//

veya nerede isterseniz. Kullanım //ad çakışmalarını alamadım bu yüzden dosya adının sonunda takas dosya adları için mutlak dosya yollarını kullanmak vim yapar. Dizinin var olduğundan emin olun, yoksa vim dizini kullanmaz (sizin için oluşturmaz).

Not: Bu yalnızca ortam değişkenleri üzerinde çalışır, bir vimscript değişkeni kullanmak istiyorsanız, biraz :executesihir kullanmamız gerekir :

execute "set directory^=".my_vim_home_var."/swap//"

Farkları zorlayın:

Vim'ın yardım bu durumda kullanmak için çok yararlı bir komut önerir: :DiffOrig. Bu varsayılan bir vim komutu değildir , bu yüzden uygulamayı :h :DiffOrigvimrc'nize kopyalayın . ( $VIMRUNTIME/defaults.vimvim8'iniz varsa da ). Şimdi, dosyayı kurtarabilir ve değiştirilmemiş sürümden nelerin değiştiğini görmek için DiffOrig'i çalıştırabilirsiniz.

Birden çok takas dosyasının içeriğini karşılaştırmak istiyorsanız, dosyanızı her farklı takas dosyasıyla kurtarın ve sonucu geçici dosyalara yazın. Şimdi dosyaları yükleyin ve :diffthisher dosyada çalıştırın , istediğiniz değişiklikleri yapın, orijinal dosyaya geri yazın ve geçici ve takas dosyalarını silin.

Yararlı komutlar:

:swapname: vim'in geçerli arabellek için takas dosyası için kullandığı adı al ( :h :swapname) :recover: vim'i başlattığınız ve R( :h :recover) tuşuna bastığınız gibi seçilen dosyayı kurtarır

Yardıma göz atın:

: Vim bütün bir toparlanma üzerindeki kullanıcı kılavuzunun bölüm vardır :usr_11.txt
: Vim'ın referans yardımına takas dosyaları :h swap-file, h recovery
(takas dosyası konumunu ayarlamak için) dizin seçeneği Yardımı::h 'directory'

Düzenleme: @B Layer tarafından yapılan yorumlarda belirtildiği gibi dizin ayarı için değiştirilmiş örnek


Birden fazla takas dosyası bulduğunuzda ne olur? Birçok bağlantı kopması nedeniyle mi?
leeand00

1
"Farkları Fark Et" in ikinci paragrafında bahsetmiştim. Hangi değişiklikleri tutmak istediğinizi belirlemek için diffs kullandıktan sonra, yaptığınız tüm geçici dosyaları ve eski takas dosyalarını silin (artık tüm takas dosyalarının nerede olduğunu biliyorsunuz).
flemingfleming

1
Bilginize, kullanmanıza gerek yok exec... başlatılmış bir ortam değişkeni set directory^=$HOME/.vim/swap//olduğu sürece iyi çalışıyor $HOME. Bkz :h expand-env. Ayrıca çalışır dictionary, undodirve backupdirbirkaç isim.
B Katmanı

Bana bunu hatırlattığın için teşekkürler! Ben orada yerine benim yapılandırmada bir vimscript değişkeni kullanın, bu nedenle yürütmek ve unuttum ortam değişkenleri buna gerek yok. Bunu düşünürken, muhtemelen bir ortam değişkeni ayarlamak için vim kullanmalıyım.
flemingfleming

2

Şahsen, takas dosyaları ve yedekleme dosyaları her yerde takas ve yedekleme dosyaları oluşturma eğiliminde olduğundan ve sık sık çatışmalar oluşturduğu için takas ve yedekleme dosyalarını kapattım. Vim'in sürekli geri alması çok daha güvenilir ve hatasız olmuştur.

Vim şu anda kalıcı bir geri alma özelliğine sahip, çok daha ince taneli bir yedekleme yöntemi. Düğmesine her basışınızda Esc, dosyanın geçerli durumu yakalanır.

Geri alma geçmişinize göz atmak için gundo veya ağaç geri alma:undolist gibi eklentileri kullanabilirsiniz .

Vim'i bu şekilde kullanmak için:

  • her dosya için geçmişi düzenlediğiniz bir dizin oluşturun
  • vim'e bu dizini kullanmasını söyle
  • kalıcı geri almayı etkinleştir

Kabukta:

mkdir ~/.vim/undodir

Vim'de

set undodir=~/.vim/undodir
set undofile

Takas dosyalarını kapatmak için: :set noswapfile


1
Bu cevapla ilgili birkaç büyük sorun var. 1. Kalıcı geri alma, dosyaları değiştirmek için farklı bir sorunu çözer (ve 'writebackup'yine bir başka sorunu çözer). Kalıcı geri alma işlevinin etkin olması, bilgisayarınız kilitlenirse yardımcı olmaz. Sen olabilir takas dosyaları başka nedenlerle (modern OS istikrar, UPSes varlığı) için gereksizdir, ancak bu cevap yapmadıysanız savunuyorlar. 2. Ayar 'undodir' gelmez kalıcı geri alma etkinleştirmek! Sen ayarlamanız gerekir 'undofile'bunun için
Zengin
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.