Açtıktan hemen sonra çıkarsam vim neden sıfır olmayan çıkış kodunu döndürür?


15

vimKar Leoparı w / üzerinde garip bir sorun biraz çalışıyorum : Ben sadece çalışan vimve bırakmadan sıfır olmayan bir çıkış kodu alıyorum .

$ vim
# exit immediately using :q
$ echo $?
1

Ancak, tam yolunu kullanırsam vim, bu davranışı görmüyorum

$ /usr/bin/vim
# exit immediately using :q
$ echo $?
0

İlk başta vimyolumun daha önceki bir yerinden geldiğini düşündüm , ama:

$ which vim
/usr/bin/vim

Yani kayboldum. Buna ne sebep olabilir?

GÜNCELLEME: Bu sorun sihirli bir şekilde kendini çözdü, bu da beni çok şüpheli hale getiriyor. Şu anki en iyi teorim, .vimrckurulumumu başka bir şekilde değiştirirken kendim veya eklenti ile ilgili bir sorunum olmasıydı. Düzeltmek için ne yaptığımı tam olarak takip edebilirsem, kesinlikle bu bilgilerle güncelleyeceğim. Cevaplar için teşekkürler.


Ekleyerek -u NONEvim'e hiçbir yapılandırma dosyası yüklemesini söyleyen bir Makefile'de düzelttim . Bazı durumlarda yardımcı olabilir.
Boldewyn

Yanıtlar:


14

Eğer var mı filetype offsenin vimrc içinde? Şununla değiştirmeyi deneyin:

filetype on
filetype off

OS X'de Tim Pope'in Patojenini kullanırken bu sorunu yaşadım. Bu makale sorunu çözmeme yardımcı oldu. Pathogen kullanıyorsanız ...

call pathogen#runtime_append_all_bundles()

... bunun yerine bunu yap:

filetype on
filetype off
call pathogen#runtime_append_all_bundles()
call pathogen#helptags()
filetype plugin indent on

http://andrewho.co.uk/weblog/vim-pathogen-with-mutt-and-git


Bu iyi bir nokta. Zaten bu sabit vardı özellikle sorunu, ama ben yanlışlıkla benim, başka bir yerde bir hata sabit şüpheli götürdü budur .vimrc.
Hank Gay

Bu, Pathogen yerine Vundle dışında benim için özdeş bir sorunu düzeltti.
Jonah Braun

Başka bir +1 eklemek gibi, bu eski bir düzeltme, ancak sadece bir OSX sisteminde Vundle kullanarak bu sorunu düzeltmek için çalıştı. Sadece filetype onmevcut olanın üzerine attı filetype off.
Mikey TK

8

İki olası açıklamayı düşünebilirim.

  1. vimaslında bir takma addır. Diğer whichadları göstermediğini, typebunun yerine kullanmanız gerektiğini unutmayın (csh veya tcsh çalıştırmadığınız sürece).

  2. Vim, kurulum dizinine göre bir yoldaki bazı dosyaları aramaya gider; bu dosya, bakmayı argv[0](kabuktan geçirildiği gibi yürütülebilir dosyanın adı) belirler ve göreli bir yoldan çağrılırsa bir şekilde bu yolu bulamaz. Bu teknik olarak mümkün olurdu, ama Vim'in bunu gerçekten yaptığını sanmıyorum.


7

Ben vim çalışan ve sonra bırakmadan sıfır olmayan bir çıkış kodu alıyorum.

Benzer bir sistemle burada olmaz: Snow Leopard ve Vim'in stok versiyonu.

Bu komutu deneyin:

$ sudo dtruss vim +q

Bu, Vim başlatılırken ve hemen kapanırken tüm sistem çağrılarının bir listesini alır. ( dtrussdaha straceönce kullandıysanız Linux'takiyle eşdeğerdir .)

Aradığınız şey, genellikle -1 olmak üzere bir hata kodu gösteren sonuna yakın bir çizgidir. Sistem çağrısı argümanlarına bakmak sizi soruna götürmelidir. Yüksek olasılıklı olasılıklardan biri, muhtemelen open()çağrıda görünecek olan eksik bir dosyadır .

Bu şekilde çalıştırdığınızda Vim temiz çıkarsa, muhtemelen bir izin sorunu var sudoizin vermesi gerekiyordu dtrusskoşmak etrafında oluyor için. Bu durumda, izinleri onararak düzeltebilirsiniz .


Üzgünüz - şu anda iş makinemdeyim ve bu davranışa sahip değil. Yine de ev makinemde bir kez daha kontrol etmeyi unutmayın.
Hank Gay

Bunu anlayamıyorsanız, dtrussçıktıyı sorunuza ekleyin . (Ya da en azından son 25 satır ya da öylesine.) Sizin için anlaşılmaz olan, bir başkasını doğru cevaba yönlendirebilir.
Warren Young

@nlucaroni: Bunu duyduğuma sevindim. Yine de gelecek nesiller için cevabımdaki iki fikirden hangisi bunu düzeltti? Yani, sudoOnarım İzinlerini çalıştırmanız gerektiğini bildiren "düzeltilen" bir izin sorununuz oldu mu? Yoksa dtrusssize bir sistem hatası hatası mı göstermişti, eğer öyleyse hangisi ve neden başarısız oldu?
Warren Young

Orada olmayan dosyaları açarken syscall hataları. İş arkadaşım başka birinin zipp'd .vimdizinini aldı ve .vimrckullanılmayan eklentilerden tam yollar ve eksik dosyalar vardı.
nlucaroni

2

Bu dönüş kodları sorununu vurmuştum. Ben loadviewvimrc kalıcı görünümler sağlayan sessizce yürütme komutuna geri izledi :

" Persistent views
if has("mksession")
    set viewdir=$HOME/.vimviews
    if has("unix")
        silent execute '!mkdir -p $HOME/.vimviews'
    endif
    au BufWinLeave * silent! mkview "make vim save view (state) (folds, cursor, etc)
    au BufWinEnter * silent! loadview "make vim load view (state) (folds, cursor, etc)
endif

Dosya adı olmayan bir arabellek girildiğinde silent! loadview, hatayı gizleyerek yürütülür

E32: Dosya adı yok

bu da dönüş kodunun bire ayarlanmasına neden olmuştu.

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.