विम में $ PATH टर्मिनल से मेल नहीं खाता


10

मैं मैकविम का उपयोग कर रहा हूं और जब मैं इसे टर्मिनल ( mvim) से लॉन्च नहीं करता हूं, तो इसके $ पैट में वह शामिल नहीं है जो मैंने अपने .bash_profile में सेट किया है। यह केवल, डिफ़ॉल्ट मान होना लगता है /usr/bin:/bin:/usr/sbin:/sbin

मैं OS X 10.5.8 चला रहा हूं। भले ही मैं इसे मैन्युअल रूप से अपने .vimrc में सेट कर सकता हूं जो ठीक होगा, हालांकि मैं इसे टर्मिनल के समान स्थान से खींचना पसंद करूंगा। मैंने कोशिश की है कि एक साइट का सुझाव दिया जाए, let $PATH += /blah/foo:/bar/etcकोई फायदा नहीं हुआ।

संपादित करें / समाधान: नीचे मेरा जवाब देखें। मैकविम के पास इसे ठीक करने का विकल्प है।


जवाबों:


12

MacVim $ PATH को इस तरह से प्राप्त करता प्रतीत होता है जो एक नियमित उपयोगकर्ता के कस्टम डॉटफ़ाइल्स को अनदेखा करता है।

मैं नहीं कह सकता कि वे इसे इस तरह से करना क्यों पसंद करते हैं, लेकिन यह सच प्रतीत होता है। वरीयताओं में (उन्नत टैब के तहत), आप "लॉगिन शेल में लॉन्च प्रक्रियाओं को चुन सकते हैं", लेकिन यह केवल $PATHमेरे लिए थोड़ा सुधार करता है।

सबसे अच्छा मैं बता सकता हूं, मैकविम का उपयोग करता है /usr/libexec/path_helper- जो बदले में /etc/pathsफ़ाइल में पाया वस्तुओं (1) और (2) अतिरिक्त कुछ भी /etc/paths.d/निर्देशिका में पाया जाता है । उपयोगकर्ता की होम डायरेक्टरी (इसके द्वारा .profileया उस तरह) में किए गए किसी भी परिवर्तन को अनदेखा कर दिया जाता है।

संक्षेप में, आपको OSX डिफॉल्ट मिलता है, साथ ही कोई भी एप्लिकेशन जो खुद को जोड़ता है /etc/paths.d। (उदाहरण के लिए, MacTex मेरे सिस्टम पर ऐसा करता है।) इसलिए यदि आप अपने MacVim पथ को समायोजित करना चाहते हैं, तो एक तरीका आइटमों के साथ एक फ़ाइल जोड़ना होगा /etc/paths.d। (मैं /etc/pathsतब से सीधे संपादित नहीं करूंगा, जब तक कि आप सिस्टम अपडेट द्वारा पूर्ववत किए जा रहे परिवर्तनों का जोखिम नहीं उठा लेते।)

मुझे यह बताने के लिए धन्यवाद। मैं MacVim पर विशलिस्ट बग दर्ज करना बंद कर रहा हूं।


मैंने सोचा होगा कि जैसा भी हो, लेकिन मैंने कुछ चीजें '/etc/paths.d/' जोड़ी हैं जो टर्मिनल में दिखाई देती हैं लेकिन मैकविम के साथ नहीं।
डोनट

और वास्तव में, मैकविम के रास्ते में मेरे '/ etc / path' फ़ाइल में अधिक है।
डोनट

@ डोनट: ठीक है, यह अजीब है। मेरी मशीन पर, अगर मैं कुछ जोड़ता हूं, तो /etc/paths.dयह अगली बार दिखाता है कि मैं मैकविम को बूट करता हूं। आप वहां क्या प्रारूप रख रहे हैं? यह प्रति पंक्ति एक आइटम होना चाहिए, मेरा मानना ​​है कि प्रत्येक लाइन पर $ PATH निर्देशिका के साथ (जैसे, / usr / टेक्सबिन)।
टेलीमेकस

मैं मूल रूप से आपके पहले पैराग्राफ को पूरी तरह से याद कर रहा था: "एक लॉगिन शेल में विम लॉन्च शुरू करें" का चयन मेरे लिए ट्रिक था। मेरा जवाब देखिए।
डोनट

7

BTW, "लॉगिन शेल में Vim प्रक्रिया लॉन्च करें" प्राथमिकता अब MacVim (कम से कम v7.3 नहीं) में उपलब्ध है। मैं देख रहा हूं कि फाइंडर से मैकविम को लॉन्च करने का रास्ता गलत है, लेकिन इसे शेल ("एमवीएम") से लॉन्च करने से सही रास्ता मिल जाता है।


3

यह .bash_profile से sourced नहीं है, लेकिन आप अपने .vimrc में इसका उपयोग कर सकते हैं:

let $PATH=$PATH . ':/blah/foo'

आपके पास होना चाहिए: या यह एक सही पथ परिवर्तनशील नहीं होगा।


मैं सिर्फ यह कोशिश की, और यह MacVim के लिए $ पथ बदलने के लिए प्रतीत नहीं होता है। मैंने इसे वीआईएम के साथ टर्मिनल में (दोनों /usr/bin/vim(Apple से) और /opt/local/bin/vimMacPorts से) परीक्षण किया , और यह अनावश्यक प्रतीत होता है। टर्मिनल में विम पहले से ही उचित $ PATH को मेरी डॉट फ़ाइलों द्वारा sourced के रूप में चुनता है।
Telemachest

1
मैंने इसका कोई फायदा नहीं उठाया।
डोनट

2

मुझे विश्वास नहीं हो रहा है कि मैंने इसे पहले नहीं देखा था। ठीक है, मैं इस पर विश्वास कर सकता हूं। वैसे भी, MacVim एक विकल्प के साथ आता है जो इसे हल करता है। प्राथमिकताएँ के तहत बस "लॉगिन खोल में विम प्रक्रियाओं को लॉन्च करें" देखें। यही है, यह काम करता है। आकर्षक लगा। मूर्ख में।

उफ़

मैंने गलती से यह जवाब नहीं लिखा था कि टेलीमेकस ने मुझे पहले ही सही जवाब दे दिया था । उसके जवाब के रूप में चिह्नित किया।


खुशी है कि यह हल कर रहा है
टेलीमैकस

1

यह मैक देव केंद्र लेख कुछ काम का हो सकता है।


यह काम करने के लिए नहीं मिल सकता है। कुछ गलत कर सकता है। लेख एक ऐप की 'सूचना संपत्ति सूची फ़ाइल' में 'एलएसईएनवायरमेंट' संपत्ति को जोड़ने का सुझाव देता है, जिसे मैंने ~ / लाइब्रेरी / प्राथमिकताएं / org.vim.MacVim.plist मान लिया था। मैंने इसे 'पथ' ('पथ' और '$ पाथ') के साथ एक शब्दकोष बनाया और एक स्ट्रिंग मान के रूप में पथ के लिए मैं जो चाहता हूं। अभी भी लगता है कि कुछ रहस्यमयी स्रोत से पाथ खींच रहा है। प्लिस्ट फ़ाइल का स्क्रीनशॉट
डोनट

1

मुझे paths.d निर्देशिका में फ़ाइल जोड़ने में कोई समस्या नहीं थी। मैंने mysql नामक एक फाइल जोड़ी, जिसकी सामग्री थी:

/ Usr / स्थानीय / mysql / बिन [वापसी]

तब मैंने इस फाइल को paths.d डाइरेक्टरी के तहत रखा, और इसके स्वामित्व को रूट: व्हील में बदल दिया। अब mysql निर्देशिका स्वचालित रूप से मेरे $ PATH चर में जोड़ दी जाती है।

मैंने पूरी तरह से जांच नहीं की, लेकिन संभवतः (ए) सहित [आरईटीआरएन] लाइन के अंत में, और / या (बी) फ़ाइल स्वामित्व को रूट करने के लिए सेट करना आवश्यक हो सकता है।


1

मैकविम स्रोत करेगा ~/.zprofileऔर /etc/profile, इसलिए आप अपनी PATHसेटिंग्स वहां डाल सकते हैं।

Https://github.com/b4winckler/macvim/wiki/Troublesourcing#for-zsh-users देखें और स्टैक ओवरफ्लो पर यह सवाल करें

(मैकविम संस्करण 7.3 (65) के साथ परीक्षण किया गया)।


1

मैं आज इसमें भाग गया। मैकविम में अब "लॉगिन शेल" विकल्प नहीं है, और उपयोगकर्ता-विशिष्ट सेटिंग के लिए सिस्टम-वाइड फ़ाइलों का संपादन स्केच है।

यहाँ केवल विम विकल्पों (देखें :help :!और :help shell) का उपयोग करके एक समाधान है ।

अपनी ~/.vimrcलाइनों में जोड़ें

set shell=/bin/bash
set shellcmdflag=-l\ -c

यह bash(Mac) Vim से आपका डिफ़ॉल्ट शेल बनाता है , और -lफ्लैग (लॉगिन शेल) को कमांड के साथ जोड़ देता है :!{cmd}। निष्पादित करते समय :shell, बैश को "इंटरेक्टिव शेल जो कि लॉगिन शेल नहीं है" के रूप में शुरू किया जाता है।

बनाने के लिए $PATHकाम करते हैं, आप इसे में सेट करना होगा ~/.bash_profileके लिए :!, और ~/.bashrcके लिए :shell। (देखें INVOCATIONमें man bash)

अद्यतन: यह मेरे अन्य कंप्यूटर पर आवश्यक नहीं था, इसलिए कुछ और है जो मूल कारण है।


1
आप zsh के लिए एक समान काम कर सकते हैं। परिभाषित $PATHमें .zprofile, और शामिल -lया तो में झंडा set shellया set shellcmdflag
जलदान

0

मैं मैक के बारे में यूनिक्स के बारे में अधिक जानता हूं, इसलिए निम्नलिखित सलाह काम कर सकती है या नहीं। इसे अपनी .vimrc फ़ाइल डालने का प्रयास करें:

! source ~/.bash_profile

यह चाल हो सकती है, लेकिन एक मामूली चेतावनी है: .bash_profile का मतलब केवल एक बार खट्टा होना है। इसमें कुछ नॉन-इडम्पोटेंट कमांड (ऐसी चीजें जो केवल एक बार निष्पादित होनी चाहिए) हो सकती हैं। इसका स्पष्ट उदाहरण:

$PATH += /blah/foo:/bar/etc

जितना अधिक बुलाया जाता है, उतना बड़ा और अधिक निरर्थक $PATHहो जाता है। हालाँकि, अगर यह इतनी बड़ी बात नहीं है, तो यूनिक्स की सिफारिश वन-टाइम कमांड को आपकी फ़ाइल से ~/.bashrcचलाने और चलाने की होगी।source ~/.bashrc.vimrc


न तो सोर्सिंग .bash_profile या .bashrc ने काम किया। मैंने मैन्युअल रूप से चलाने की कोशिश की, :source .bash_profileलेकिन यह फ़ाइल में हर कमांड के लिए "Not a Editor कमांड" त्रुटि के साथ आता है और .bashrc के साथ भी ऐसा ही है।
डोनट

क्षमा करें ... मैं क्या सोच रहा था ... आप कोशिश कर सकते हैं! source .bash_profile
डेविड बर्जर

दोनों .bash_profile और .bashrc की कोशिश की, लेकिन फिर भी नहीं गए। यहां मैं पाथ को बदलने के लिए अपने .bash_profile में उपयोग कर रहा हूं: 'पथ = / usr / स्थानीय / बिन: /Applications/Espresso.app/Contents/SedenSupport/Tools/: "/ Applications / MacVim /: $ PATH' और मेरे में .bashrc: 'PATH = / Applications / MAMP / bin / php5 / bin: $ PATH' निर्यात करें। और यह .bash_profile है जो वास्तव में मेरे टर्मिनल सत्रों को प्रभावित करता है।
डोनट

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