वर्तमान कार्यशील निर्देशिका को कैसे बदलें?


11

Emacs की वर्तमान कार्यशील निर्देशिका को कैसे बदलें?

सेट default-directoryemacs प्रक्रिया की वर्तमान कार्य निर्देशिका को प्रभावित नहीं करता है, जिसके माध्यम से सत्यापित किया जा सकता है lsof -p pid


1
Emacs, "OS का एक प्रकार" होने के कारण वास्तव में एक भी वर्तमान कार्यशील निर्देशिका नहीं है। तो आप इस प्रक्रिया के cwd के रूप में जो देखते हैं वह काफी हद तक आकस्मिक है और वास्तव में प्रलेखित नहीं है। Emacs के C कोड को देखते हुए, मुझे यह आभास होता है कि वर्तमान में आप क्या चाहते हैं, इसका कोई तरीका नहीं है। इसलिए आप M-x report-emacs-bugइसे एक नई सुविधा के रूप में अनुरोध कर सकते हैं।
स्टीफन

1
यह मानते हुए कि आप लिनक्स पर हैं, आप ओएस स्तर पर काम करके सीडब्ल्यूडी को बदलने के लिए मजबूर कर सकते हैं, विवरण के लिए unix.stackexchange.com/questions/281994/… देखें।
टीटीमो सेप

जवाबों:


4

मुझे लगता है कि इस cwdप्रक्रिया को नियंत्रित करने के लिए Emacs एकमात्र तरीका --chdirकमांड लाइन तर्क है। एक बार प्रक्रिया शुरू हो जाने के बाद, इसे संशोधित करने का कोई तरीका नहीं है।


15

M-x cd

इससे आपकी समस्या का समाधान हो जाना चाहिए।


1
डॉक्स के अनुसार, cd"डीआईआर वर्तमान बफ़र की डिफ़ॉल्ट निर्देशिका बन जाएगी।" मुझे लगता है कि यह एक प्रति-बफर मान है और अन्य मौजूदा बफ़र्स या नए बनाए गए लोगों पर लागू नहीं होगा।
मोजो

@mojo शायद, लेकिन अगर आप डिफ़ॉल्ट बफर के साथ ऐसा करते हैं जब आपके सभी अन्य बफ़र्स बंद हो जाते हैं, तो आप वैसे भी साथ छोड़ देते हैं। तो यह अभी भी काफी व्यावहारिक है
क्लेडॉन एलेनि

5

C-h f cd:

cdमें एक इंटरैक्टिव संकलित लिस्प फ़ंक्शन है files.el

(cd DIR)

बनाओ DIRवर्तमान बफर के डिफ़ॉल्ट निर्देशिका हो जाते हैं।

यदि आपके परिवेश में एक CDPATHचर शामिल है , path-separatorतो किसी निर्देशिका निर्देशिका के नाम को हल करते समय निर्देशिका की उस सूची में से प्रत्येक की कोशिश करें (जो कि घटनाओं से अलग होती हैं )। पथ विभाजक GNU और GNU जैसी प्रणालियों में बृहदान्त्र है।

और कृपया बताएं कि क्यों default-directoryबदलना आपके लिए "वर्तमान निर्देशिका" को भी नहीं बदलता है (setq default-directory "/my/favorite/dir"):।


मेरा मतलब है emacs प्रक्रिया का cwd, जो प्रक्रिया नियंत्रण ब्लॉक में एक प्रविष्टि है, और इसे आसानी से = lsof -p pid = के माध्यम से जांचा जा सकता है। = डिफ़ॉल्ट-निर्देशिका = emacs के लिए एक आंतरिक चीज है। मुझे cwd को बदलने की आवश्यकता क्यों है क्योंकि tmux एक अग्रभूमि प्रक्रिया के cwd का उपयोग नई विंडो / फलक की प्रारंभ निर्देशिका के रूप में करता है।
फंकीबाई

समझा। तब आपका प्रश्न था (और अभी भी, मेरे लिए) अस्पष्ट है। Emacs प्रक्रिया की वर्तमान कार्यशील निर्देशिका को बदलने का क्या अर्थ है? प्रक्रिया मौजूद होने के बाद आप इसे बदलना चाहते हैं? एक से ज्यादा बार?
आकर्षित किया

यह वस्तुतः emacs के = cwd = को बदल रहा है। "एक से ज्यादा बार"? उससे तुम्हारा क्या मतलब है। = cwd = एक निश्चित चीज़ होने के लिए डिज़ाइन नहीं किया गया है। सी में, आदमी 2 chdir। अजगर में, os.chdir। मैं यह जानना चाहता हूं कि ऐसा कैसे किया जा सकता है।
फंकीबाई

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