यदि मैं खोलने के तुरंत बाद बाहर निकलता हूं तो गैर-शून्य निकास कोड क्यों लौटाएगा?


15

मैं vimहिम तेंदुए पर एक अजीब समस्या w / बिट में भाग रहा हूं : मुझे बस चलाने vimऔर फिर छोड़ने से एक गैर-शून्य निकास कोड मिलता है ।

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

हालाँकि, यदि मैं पूर्ण पथ का उपयोग करता हूं, तो मुझे vimयह व्यवहार दिखाई नहीं देता है

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

पहले मैंने सोचा vimथा कि पहले मेरे रास्ते में कहीं से आ रहा था , लेकिन:

$ which vim
/usr/bin/vim

इसलिए मैं नुकसान में हूं। ऐसा किसके कारण हो सकता है?

अद्यतन: इस समस्या ने जादुई रूप से स्वयं को हल कर लिया है, जो मुझे अत्यधिक संदिग्ध बनाता है। मेरा वर्तमान सबसे अच्छा सिद्धांत यह है कि मुझे अपने .vimrcया एक प्लगइन के साथ एक समस्या थी जिसे मैंने गलती से किसी अन्य तरीके से अपना सेटअप ट्विक करते हुए तय किया था। अगर मैं इसे ठीक करने के लिए मैंने जो किया, उसे ट्रैक कर सकता हूं, तो मैं निश्चित रूप से उस जानकारी के साथ अपडेट करूंगा। जवाब के लिए धन्यवाद।


मैंने इसे मेकफाइल में जोड़कर तय किया -u NONE, जो विम को बताता है कि कोई भी कॉन्फिगर फाइल लोड नहीं करना है। कुछ स्थितियों में मदद मिल सकती है।
बोल्ड्यूविन

जवाबों:


14

क्या आप filetype offअपने vimrc में हैं? इसे बदलने का प्रयास करें:

filetype on
filetype off

मुझे ओएस एक्स पर टिम पोप के पैथोजन का उपयोग करने में यह समस्या थी। इस लेख ने मुझे इस मुद्दे को हल करने में मदद की। यदि आप रोगज़नक़ का उपयोग कर रहे हैं ...

call pathogen#runtime_append_all_bundles()

... इसके बजाय यह करें:

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


यह लाभप्रद है। मैंने पहले से ही इस विशेष मुद्दे को तय कर लिया था , लेकिन यह मुझे संदेह करने के लिए प्रेरित करता है कि मैंने गलती से मेरी जगह कहीं और त्रुटि तय की .vimrc
हांक गे

यह रोगज़नक़ के बजाय वुंडले को छोड़कर मेरे लिए एक समान मुद्दा तय करता है।
जोनाह ब्रौन

बस एक और +1 जोड़ना पसंद है, यह एक पुराना फिक्स है, लेकिन इसने मेरे लिए एक OSX सिस्टम पर Vundle का उपयोग करके इस समस्या को ठीक करने का काम किया। बस filetype onमौजूदा से ऊपर फेंक दिया filetype off
मिकी टीके

8

मैं दो संभावित स्पष्टीकरणों के बारे में सोच सकता हूं।

  1. vimवास्तव में एक उपनाम है। ध्यान दें कि whichउपनाम नहीं दिखाते हैं, आपको typeइसके बजाय (जब तक आप csh या tcsh चला रहे हैं) का उपयोग करना चाहिए

  2. विम अपनी स्थापना निर्देशिका के सापेक्ष एक पथ में कुछ फ़ाइल देखने के लिए जाता है, जिसे यह देखने से निर्धारित होता है argv[0](शेल से पारित निष्पादन योग्य का नाम), और किसी भी तरह से उस पथ को खोजने में विफल रहता है यदि इसे किसी रिश्तेदार पथ के माध्यम से कहा जाता है। यह तकनीकी रूप से संभव होगा, लेकिन मुझे नहीं लगता कि विम वास्तव में ऐसा करता है।


7

मुझे बस शून्य से चलने और फिर छोड़ने से एक गैर-शून्य निकास कोड मिलता है।

यहाँ ऐसा नहीं होता है, एक समान प्रणाली के साथ: हिम तेंदुआ, और विम का स्टॉक संस्करण।

इस आदेश का प्रयास करें:

$ sudo dtruss vim +q

यह आपको आरंभ करते समय सभी syscalls विम की सूची बनाता है और फिर तुरंत बंद कर देता है। ( लिनक्स पर dtrussबराबर है strace, यदि आपने पहले इस्तेमाल किया है।)

आप जो खोज रहे हैं वह अंत में एक पंक्ति के करीब है जो एक त्रुटि कोड दिखाता है, आमतौर पर -1। सिस्टम कॉल के तर्कों को देखते हुए आपको समस्या की ओर ले जाना चाहिए। एक उच्च संभावना संभावना एक लापता फ़ाइल है, जो संभवतः एक open()कॉल पर दिखाई देगी ।

यदि इस तरह से चलाने पर विम साफ-सुथरा हो जाता है, तो आपको शायद एक अनुमति की समस्या है, जिसे चलाने की sudoअनुमति देने की आवश्यकता है dtruss। उस स्थिति में, आप संभवतः अनुमतियों की मरम्मत करके इसे ठीक कर सकते हैं ।


क्षमा करें - मैं अभी अपने कार्य मशीन पर हूँ और इसका यह व्यवहार नहीं है। हालांकि मैं अपने घर की मशीन पर एक बार फिर से इसकी जाँच करना सुनिश्चित करूँगा, हालाँकि।
हांक गे

यदि आप इसका पता नहीं लगा सकते हैं, तो dtrussआउटपुट को अपने प्रश्न पर जोड़ दें । (या कम से कम, आखिरी 25 लाइनें या तो।) जो आपके लिए समझ से बाहर है वह दूसरे को सही जवाब दे सकता है।
वॉरेन यंग

@nlucaroni: यह सुनकर खुशी हुई। भावी पीढ़ी के लिए, हालांकि, जो मेरा उत्तर में दो विचारों का यह तय? यही है, क्या आपके पास एक अनुमति समस्या है जो sudo"निश्चित" है, आपको बताती है कि आपको मरम्मत अनुमतियाँ चलाने की आवश्यकता है? या ऐसा नहीं था कि dtrussआप एक syscall त्रुटि दिखाया, और यदि ऐसा है, जो एक और क्यों यह असफल रहा था?
वॉरेन यंग

फ़ाइलें जो वहाँ नहीं थीं खोलने में syscall त्रुटियाँ। मेरे सह-कार्यकर्ता ने अभी-अभी किसी को zipp'd .vimनिर्देशिका ली है .vimrc, और चीजों में अप्रयुक्त प्लगइन्स से पूर्ण पथ और लापता फाइलें थीं।
20uc में nlucaroni

2

मैंने इस रिटर्न कोड समस्या को मारा था। मैंने इसे loadviewअपने vimrc में एक चुपचाप निष्पादित कमांड पर वापस ट्रेस किया जो लगातार विचार प्रदान करता है:

" 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

फ़ाइल नाम के बिना एक बफर में प्रवेश करते समय, silent! loadviewत्रुटि को छिपाते हुए निष्पादित होता है

E32: कोई फ़ाइल नाम नहीं

जिसके कारण रिटर्न कोड को एक पर सेट करना पड़ा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.