Vim Hatası E138: $ HOME / .viminfo viminfo dosyası yazılamıyor!


20

Korkarım oldukça garip bir şeyle karşılaştım. Bir dosyayı normal olarak açtığımda vim README.txther şey yolunda. Ancak sudo vim README.txt, dosya boş hale gelir ve E138: Can't write viminfo file $HOME/.viminfo!çıkmaya çalıştığımda bana bir hata verir .

.viminfoDosyanın bozuk olduğundan şüphelendim , bu yüzden sildim. Bu sorun devam ediyor. Biri yardım edebilir mi?


Çalışırken sonuç gönderebilir misiniz ls .viminf*?
cuonglm

Viminfo dosyasındaki izinler nelerdir? Çıktısı nedir ls -la .vininf*?
Darnir

Yanıtlar:


29

Çalıştırdığınızda sudo vimvim'i root olarak başlatırsınız. Bu, sorunun / root içindeki viminfo dosyası olduğu anlamına gelir. Yapmalısın rm /root/.viminf*.

Bundan emin olmak için, çalıştırmak sudo vimve bu komutu çalıştırın: :!echo $HOME. Bu, ana dizininizin / root olduğunu gösterecektir.

Vim'i root olarak çalıştırmamanızı tavsiye ederim, aksine kullanın sudoedit. Editör kök olarak çalışmadığından bu daha güvenli bir çözümdür. Bir eklentinin ne yapabileceğini asla bilemezsiniz. Buna ek olarak, vimrc köklerinde değil, kendi ayarlarınızı ve eklentilerinizi vim'de kullanmanızı sağlar. sudoeditkoşmakla aynıdır sudo -e. sudoedit, çağıran kullanıcının (siz) sahip olduğu dosyanın geçici bir kopyasını oluşturarak çalışır. Düzenlemeyi bitirdiğinizde, değişiklikler asıl dosyaya yazılır ve geçici dosya silinir.

Genel bir kural olarak: Gerekmiyorsa işleri kök olarak çalıştırmayın.


"Bu daha güvenli bir çözüm, çünkü editör kök olarak çalışmadığı için. Bir eklentinin ne yapabileceğini asla bilemezsin. " Diye düşündüm. ama yanılmışım.
bballdave025

14

Her çıkışta bu hatayı aldım. Ben kullanmadım sudo. Kullanıcı ana dizinimden açıkça bahsetti:

E138: Can't write viminfo file /Users/henrik/.viminfo!

Kaldırmak ~/.viminfohatayı düzeltmedi.

Görünüşe göre bir sürü viminfo temp dosyası vardı ve bunları kaldırmak sorunu çözdü:

 ls ~/.viminf*      # If you want to see the files.
 rm -rf ~/.viminf*  # Remove them.

Bu çözümü burada buldum .


5

:wqTamamen dolu bir diskteki bir dosyayı denerken aynı hatayı aldım . Bu iletiyi alırsanız, kullanılabilir disk alanınızı denetlemek isteyebilirsiniz.


3

Bir giriş dizini oluşturmanın çok daha temiz bir yolu, örneğin linux'un size sağladığı iskeleti kullanmak olacaktır.

sudo cp -a /etc/skel /home/usernmae && sudo chown -R usernmae:usernmae /home/usernmae

1
Korkarım sorunun ev dizinlerinin oluşturulmasıyla çok az ilgisi var ...
John WH Smith

Vim'nin .viminfo dosyasına kaydedebilmesi için bir giriş dizini oluşturmanız gerekir, bu nedenle yukarıdaki komut geçerlidir.
Rick

1
Böyle bir sonuca varmadan önce bu dosyanın var olmamasının sayısız nedeni vardır. Bir giriş dizininin bulunmaması muhtemelen eksik bir dosyadan çok daha fazla soruna neden olur; bu nedenle, "ev dizininizi oluşturun" ile herhangi bir "eksik dosya" sorusuna cevap verebilir. :)
John WH Smith

1
+1 Benim durumumda, bu hata tam olarak bir dosyayı ana dizini olmayan bir kullanıcı olarak düzenlediğim için oluştu.
Zoltán

3

Benim için sorun, ana dizinimi bir NFS montajı içindeki konuma değiştirmemdi. Nedense, dizinin sahibinin "hiç kimse" olmamasına neden oldu. "Diğer" için yazma izinleri eklemek, dosyanın sahibi olmadığım için sorunu çözdü.

chmod o+w ~/.viminfo

1
Lütfen cevabınızı açıklığa kavuşturabilir misiniz? Oneline cevaplar SE'de iyi sayılmaz
Romeo Ninov

2
Başka yazma izinleri eklemenin size yardımcı olması garip . Belki kendi dosyanıza sahip değildin?
Jeff Schaller

Bu benim için çalışıyor. Sanırım benim ".viminfo" kullanıcı "root" tarafından oluşturuldu ve "ubuntu" kullanıcı değiştirmeye çalışırsa, yazma izni gerekiyor. Özetle, "-rw-r - r--" "-rw-r - rw-" olur.
emeraldhieu

0

Büyük olasılıkla, home dizinin disk alanı tükendiği ve herhangi bir yeni vim işlemi .viminfo dosyasına yazamadığı için bu oluyor.


3
Biraz ilerlemiş gibi görünüyor: bunun için bir kanıtınız var mı?
jasonwryan

Bu bir olasılık, evet.
Ned64

0

Makefile içeriğini güncellerken de aynı sorunu yaşadım. Yerel bir değişkene ihtiyacım vardı ve adlandırmaya karar verdim HOME, bu yüzden satıra girdim HOME=2.154. Bu, vim-HOMEayarın var olmayan bir dizinle değiştirilmesine neden olur . Kullanmayın HOMEdiğer kullanım için değişken.


1
HOMEÖnceden tanımlanmış bir ortam değişkeni olduğunu ve yeniden tanımlamanın genellikle iyi bir fikir olmadığını lütfen unutmayın .
Barun

0

Bu sadece linux / vi oldukça eski sürümleri için geçerli olabilir ama bulduğum şey kök dizininde /root/.viminfa.tmp ... /root/.viminfz.tmp ve bunlardan 26'sının birkaç yılı kapsayan zaman damgalarına sahip olduğunu söyledi. Tüm az harfleri almış gibi alfabenin harfleri bitmişti. Tüm bu dosyaları kaldırdım ve sorun kayboldu. Tabii ki Henrik's # rm -rf ~/.viminf* bu sorunu düzeltirdi.


0

Görünüşe göre çevre değişkenlerini temizlediniz.

Bunu yap:

HOME'u dışa aktar = / root

Bu, sorununuzu çözmelidir.


0

Kullanarak herhangi bir dosyayı açmayı hatırlamadığım için bu senaryoyu kendim nasıl bulduğumdan emin değilim sudo vimama :qbir dosyanın her birinde benzer bir 'viminfo yazılamıyor' yazılamıyordum.

rm ~/.viminfoçözmedim ve ~/.vim/boştu.

chmod 666 ~/.viminfoVim'de bir dosyadan çıkarken bu uyarı mesajını çözdü. Bunun en iyi çözüm olduğundan emin olmasam da? Daha önce .viminfo rw ------ olduğu için uyarıyı neden durdurduğunu ve vim komutu geçmişleriyle yazıldığını varsayıyorum.


0

Ben senaryom, /root/.viminfotamamen dosya olmamasıydı . Dosyaya dokunduktan sonra hata durdu ve vim'den çıkıldığında dosya güncellendi. Not: Bu, windriver gömülü linux.

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.