सवाल ओएसएक्स में कमांड लाइन से जीयूआई Emacs कैसे लॉन्च करें?


मैं ओएसएक्स में कमांड लाइन से जीयूआई इमाक्स कैसे लॉन्च करूं?

मैंने Emacs को डाउनलोड और इंस्टॉल किया है http://emacsformacosx.com/

मैं निम्नलिखित सभी मानदंडों को पूरा करने का उत्तर स्वीकार करूंगा:

  1. Emacs खिड़की खुलती है सामने मेरी टर्मिनल खिड़की
  2. "Emacs" टाइपिंग एक जीयूआई Emacs खिड़की शुरू करता है। उस विंडो में फ़ाइलों को ढूंढना निर्देशिका में देखने के लिए डिफ़ॉल्ट होगा जहां से मैंने Emacs शुरू किया था।
  3. टाइपिंग "emacs foo.txt" जब foo.txt मौजूद है foo.txt लोड के साथ एक GUI Emacs विंडो लॉन्च करता है।
  4. Foo.txt करता है जब "emacs foo.txt" टाइपिंग नहीं मौजूद है "GUoo.txt" नामक एक खाली टेक्स्ट बफर के साथ एक जीयूआई इमाक्स विंडो लॉन्च करता है। उस बफर में ^ एक्स ^ एस करना निर्देशिका में foo.txt को सहेज देगा जहां से मैंने Emacs शुरू किया था।

76
2018-04-16 09:02


मूल


टर्मिनल प्रॉम्प्ट पर 'emacs' दर्ज करके उन मानदंडों में से कौन सा मापदंड नहीं मिला है? आपकी आवश्यकताओं लिनक्स पर डिफ़ॉल्ट व्यवहार का वर्णन करती है। मैंने थोड़ी देर में मैक का उपयोग नहीं किया है, लेकिन मुझे लगता है कि चाल सिर्फ निष्पादित करने के लिए सही प्रोग्राम ढूंढ रही थी - emacs.app शायद? - Tyler
टायलर, लिनक्स पृष्ठभूमि से आ रहा हूं मैं आपके साथ सभी तरह से हूं; प्रॉम्प्ट पर बस "emacs" टाइप करना मुझे बस इतना करना चाहिए। ओएसएक्स पर ऐसा करने से टर्मिनल विंडो में टेक्स्ट मोड Emacs लॉन्च होता है (इस प्रकार मानदंड विफल हो जाता है 1), और यह वही नहीं है जो मैं चाहता हूं। - Johan Walles
जोहान - क्या आपको इस दौरान कोई समाधान मिला है? मैं एक ही समस्या से जूझ रहा हूं और एक बक्षीस शुरू करने के बारे में सोचता हूं। विशेष रूप से कष्टप्रद यह है कि कमांड लाइन से कॉलिंग emacs (और Emacs.app नहीं) पृष्ठभूमि में एक विंडो खुलती है ... - alexurba
@alexurba, नहीं, कोई जवाब नहीं :(। मैं टूटे हुए व्यवहारों के लिए उपयोग करने के लिए दयालु हूं ... क्यों लोग नीचे गलत जवाब को ऊपर उठाना जारी रखते हैं, यह भी एक रहस्य है। - Johan Walles
मुझे नहीं पता कि यह ओएसएक्स पर काम करता है लेकिन आप कोशिश कर सकते हैं: emacsclient -c -a "" "$@" आदेश - jfs


जवाब:


निम्न स्क्रिप्ट "emacs" पर कॉल करें और इसे अपने अंदर रखें PATH कहीं:

#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "$@"

इसमें # 2, # 3, और # 4 शामिल हैं।

# 1 के लिए, इसे कहीं भी अपनी .emacs फ़ाइल में रखें:

(x-focus-frame nil)

emacsformacosx.com साइट अब एक है पेज कैसे करें, जहां शीर्ष स्निपेट आया था। चलने के बारे में और जानकारी है emacsclient और Emacs को hooking git mergetool


102
2018-05-29 09:20



धन्यवाद डेविड, आप शासन करते हैं! - Johan Walles
बहुत अच्छा काम करता है। बाउंटी आगामी। - Thom Blake
धन्यवाद - मेरे लिए भी काम करता है! - ktdh
बहुत बहुत धन्यवाद: डी - Tony Han
मैवरिक्स पर अगर मैं फ़ोल्डर में हूं ~/foo और खोलना चाहते हैं bar.txt मैं अंकित करता हुँ gmacs bar.txt लेकिन यह एक नई फाइल बनाता है ~/bar.txt खोलने के बजाय ~foo/bar.txt। क्या मुझसे कुछ गलत हो रही है? - Daniel Compton


आपके खोल में, ओएसएक्स emacs अनुप्रयोग को इंगित करने के लिए 'emacs' आदेश कमांड

मेरे खोल में (डिफ़ॉल्ट बैश चला रहा है), मेरे पास निम्नलिखित है (मेरे .bashrc में)

alias emacs='open -a /Applications/Emacs.app $1'

फिर, कमांड लाइन पर emacs टाइपिंग emacs अनुप्रयोग शुरू होता है।

हालांकि, मैं अनुशंसा करता हूं कि आप Emacs की एक प्रति खोलें और इसे बनाए रखें और चलें। यदि ऐसा है, और आप एक फ़ाइल को emacs की मौजूदा प्रतिलिपि में लोड करना चाहते हैं, तो आप अपने .bashrc में निम्नलिखित रखकर emacsclient का उपयोग कर सकते हैं:

alias ec='/Applications/Emacs.app/Contents/MacOS/bin/emacsclient'

फिर emacs सर्वर शुरू करने के लिए अपनी .emacs फ़ाइल में निम्न जोड़ें (जो emacsclient कॉल प्राप्त करता है)

;;========================================
;; start the emacsserver that listens to emacsclient
(server-start)

फिर आप टाइप कर सकते हैं

ec .bashrc

मौजूदा emacs सत्र में .bashrc की एक प्रति लोड करने के लिए!


68
2018-04-16 17:31



हाय क्रिस! आपका पहला उत्तर मानदंड 2 और 4 में विफल रहता है। आपका दूसरा उत्तर मानदंड विफल रहता है 2. मैं ऐसे समाधान की तलाश में हूं जो सभी क्रमांकित मानदंडों को पूरा करता है। विनम्र / जोहान - Johan Walles
ऐसा लगता है कि आपके सभी मुद्दों को हल किया जा सकता है यदि आप केवल प्रत्येक बार एक नया उदाहरण लॉन्च करने के लिए कमांड लाइन पर भरोसा करने के बजाय, फ़ाइलों को लोड करने के लिए emacs का उपयोग करते हैं। मैं आमतौर पर अपने दिन की शुरुआत में emacs शुरू करता हूं (यदि यह अभी भी नहीं चल रहा है), और फ़ाइलों को लोड करने, निर्देशिकाओं को बदलने, नई फाइलें बनाने और टर्मिनल विंडो को छूए बिना जो कुछ भी मैं चाहता हूं उसे उपयोग करने के लिए इसका उपयोग करता हूं। - Chris McMahan
मुझे कहना है, इस साइट पर ऐसे कई प्रश्न हैं जो इस प्रश्न से निपटते हैं, लेकिन यह एकमात्र ऐसा है जो एक छोटी सी तरीके से फ़ाइल खोलने की समस्या को पूरी तरह से हल करता है। - tylerthemiler
@tylerthemiler, वह जवाब कहां है जो पूरी तरह से समस्या हल करता है? इस उत्तर में दोनों उत्तर मानदंड 2 विफल हो जाते हैं और पहला व्यक्ति 4 विफल रहता है। - Johan Walles
एक प्रश्न का उत्तर देने में एक छोटा सा रास्ता लंबा रास्ता तय करता है। तो थोड़ा गुगलिंग करता है। - duma


यह सुधारता है डेविड कैल्डवेल का जवाब पृष्ठभूमि में Emacs शुरू करके:

#!/bin/sh
$(/Applications/Emacs.app/Contents/MacOS/Emacs "$@") &

जैसा कि दूसरे उत्तर में बताया गया है, इसमें # 2, # 3, और # 4 शामिल हैं। # 1 के लिए, इसे कहीं भी अपनी .emacs फ़ाइल में रखें: (x-focus-frame nil)

ध्यान दें कि निम्नलिखित करता है नहीं मेरे लिए काम - यह कमांड लाइन पर निर्दिष्ट निर्देशिका में Emacs शुरू नहीं करता है (उदा। emacs .)

# NOT RECOMMENDED
#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "$@" &

8
2017-10-25 18:17



यह ओएसएक्स (शायद 10.9 मैवरिक्स से शुरू) के साथ एक समस्या को हल करता है। 10.9 के अनुसार, "अनुशंसित नहीं" विधि विफल हो जाती है, जहां कम से कम 10.6 तक, अनुशंसित नहीं किया गया है खोल $ PWD और Emacs (pwd) को सिंक करता है। डेविड का जवाब कहीं और हो सकता है, लेकिन आप खोज इंजन को समझने के लिए कैसे प्राप्त करते हैं: "pwd pwd"? - infogizmo


माउंटेन शेर पर, मैं यामामोतो मित्सुहरु के बंदरगाह का उपयोग कर रहा हूं https://github.com/railwaycat/emacs-mac-port निम्नलिखित उपनामों के साथ:

alias emacs=/Applications/Emacs.app/Contents/MacOS/Emacs

और यह आपके सभी मानदंडों को पूरा करता है।


4
2018-05-05 03:41





डेविड जेम्स के जवाब में आगे बढ़ने के लिए निम्नलिखित कार्यों का जवाब:

टर्मिनल से फ़ाइल खोलने के लिए निर्देशों के अनुसार http://www.emacswiki.org/emacs/EmacsForMacOS#toc20

open -a /Applications/Emacs.app <file-name>

इसे डेविड जैम की प्रतिक्रिया के साथ जोड़कर मैंने निम्नलिखित बनाया है Emax बैश स्क्रिप्ट और इसे मेरे रास्ते में रखा ~ / Bin

#!/bin/bash
(open -a /Applications/Emacs.app "$@") &

चेतावनी: वर्तमान निर्देशिका को खोलने के लिए emacs प्राप्त करने के लिए नाम से निकाल दिया गया मोड, आपको उपयोग करने की ज़रूरत है

emax .

वातावरण:

  • ओएस एक्स योसमेट संस्करण 10.10.2
  • जीएनयू Emacs 24.4.2 (x86_64-apple-darwin14.0.0, एनएस सेब-एपकिट -1343.14) 2014-11-13 का

4
2018-03-27 00:38





मैं आपको या तो मानता हूं:

  • लॉगिन पर emacs डेमॉन शुरू करें
  • अपने .emacs में (सर्वर-स्टार्ट) है
  • Emacs चलने की बहुत सारी प्रतियां होने पर ध्यान न दें

यदि ऐसा है, तो मुझे लगता है कि यह मूल चार मानदंडों को पूरा करता है, साथ ही एक और:

  1. Emacs विंडो मेरी टर्मिनल विंडो के सामने खुलती है।

यह हमेशा अग्रभूमि (एक्स-फोकस-फ्रेम के साथ) के लिए खुला रहेगा।

  1. "Emacs" टाइपिंग एक जीयूआई Emacs खिड़की शुरू करता है। उस विंडो में फ़ाइलों को ढूंढना निर्देशिका में देखने के लिए डिफ़ॉल्ट होगा जहां से मैंने Emacs शुरू किया था।

यह एक मौजूदा emacs खिड़की को थका हुआ मोड में खुल जाएगा।

  1. टाइपिंग "emacs foo.txt" जब foo.txt मौजूद है foo.txt लोड के साथ एक GUI Emacs विंडो लॉन्च करता है।

यदि emacs पहले से चल रहा है और एक सर्वर है, तो यह मौजूदा विंडो में खुल जाएगा और अग्रभूमि में आ जाएगा।

  1. Foo.txt मौजूद नहीं होने पर "emacs foo.txt" टाइप करना "foo.txt" नामक एक खाली टेक्स्ट बफर के साथ एक GUI Emacs विंडो लॉन्च करता है। उस बफर में ^ एक्स ^ एस करना निर्देशिका में foo.txt को सहेज देगा जहां से मैंने Emacs शुरू किया था।

सही बात।

एक अतिरिक्त:

आदेश टाइप करने के तुरंत बाद टर्मिनल सत्र में नियंत्रण लौटाता है।

~ / Bin / Emacs

#!/bin/bash
EMACSPATH=/Applications/Emacs.app/Contents/MacOS

# Check if an emacs server is available 
# (by checking to see if it will evaluate a lisp statement)

if ! (${EMACSPATH}/bin/emacsclient --eval "t"  2> /dev/null > /dev/null )
then
    # There is no server available so,
    # Start Emacs.app detached from the terminal 
    # and change Emac's directory to PWD

    nohup ${EMACSPATH}/Emacs --chdir "${PWD}" "${@}" 2>&1 > /dev/null &
else
    # The emacs server is available so use emacsclient

    if [ -z "${@}" ]
    then
        # There are no arguments, so
        # tell emacs to open a new window

        ${EMACSPATH}/bin/emacsclient --eval "(list-directory \"${PWD}\")"
    else    
        # There are arguments, so
        # tell emacs to open them

        ${EMACSPATH}/bin/emacsclient --no-wait "${@}"
    fi

    # Bring emacs to the foreground

    ${EMACSPATH}/bin/emacsclient --eval "(x-focus-frame nil)"
fi

4
2017-07-08 22:50



बहुत बढ़िया! ऐसा लगता है कि आपके तर्क और नो-Args पैर स्विच कर रहे हैं। - eriksensei


इस गाइड के अनुसार होमब्री पैकेज मैनेजर के साथ बस इमाक्स बनाया गया है: http://www.emacswiki.org/emacs/EmacsForMacOS ब्रू इंस्टॉल के साथ - कोकोआ emacs उसके बाद gui प्राप्त करने के लिए .app संस्करण लॉन्च करना चाहिए, जो मेरे मामले में /usr/local/Cellar/emacs/24.3/Emacs.app/Contents/MacOS/Emacs था


3
2018-02-17 13:58



- कोको को हटा दिया गया था; इसके बजाय --with-cocoa का उपयोग कर! - Erwin Rooijakkers


यहां अन्य उत्तरों ने मेरे लिए काफी काम नहीं किया। विशेष रूप से, मेरी मशीन पर, बैश स्क्रिप्ट

#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "$@" 

हमेशा घर निर्देशिका में emacs खुलता है। वर्तमान कार्य निर्देशिका में इसे खोलने के लिए, मुझे करना था

#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs "$PWD/$@"

बजाय।


1
2018-05-22 16:13



मेरे विशेष निर्माण / इंस्टॉल में यह समस्या नहीं है, लेकिन आपके समाधान के साथ कोई समस्या है। यदि आप एक से अधिक फाइल खोलने का प्रयास करते हैं, तो केवल पहले पीडब्लूडी निर्देशिका में विस्तारित होगा। बाकी के पास $ पीडब्ल्यूडी पथ प्रीफिक्स्ड नहीं होगा। - kmarsh


निम्नलिखित चरणों के अनुसार Emacs संकलित करें:

./configure --with-x --prefix=/usr
make
sudo make install

और आपका काम हो गया! यह XQuartz को डाउनलोड और इंस्टॉल करने में मदद कर सकता है, लेकिन यह मेरी राय है।


0
2017-08-20 17:21