जवाबों:
संयोजन M-!आपको शेल कमांड लॉन्च करने की अनुमति देता है। आप इसे एक अलग लॉन्च करने के लिए उपयोग कर सकते हैं urxvt।
M-! urxvt RET
मैंने अभी इसके साथ प्रयास किया xterm(मेरे पास नहीं है urxvt) और यह बफर में फाइल के समान निर्देशिका में खुला था।
यदि आप अपनी इनइट फ़ाइल में कुछ समान शॉर्टकट जोड़ना चाहते हैं:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
मेरे मामले में मैंने शॉर्टकट को Ctrl+ : C- के लिए बाध्य किया S।
मैं आमतौर पर उपयोग करता हूं M-x term।
आप चेकआउट भी कर सकते हैं:
M-x terminalM-x shellM-x termप्रभावी ढंग से एक टर्मिनल एमुलेटर को शुरू करने के लिए शुरू किया गया है। मदद से:
शब्द
M-x ... RET एक नए बफर में एक टर्मिनल-एमुलेटर शुरू करें। (शब्द कार्यक्रम)शब्द `term.el 'में एक संकलित संकलित लिस्प फ़ंक्शन है।
एक नए बफर में एक टर्मिनल-एमुलेटर शुरू करें। बफ़र टर्म मोड में है; उस बफ़र में उपयोग करने के लिए कमांड के लिए `टर्म-मोड ' देखें ।
किसी अन्य बफ़र पर स्विच करने के लिए Cc b टाइप करें।
multi-term
Emacs कमांड M-x shellएक नया बफर में एक शेल शुरू करेगा (या यदि कोई है तो मौजूदा शेल बफर में स्विच कर सकता है)। यदि यह एक नया शेल बफर है, तो इसे वर्तमान बफर में देखी जा रही फ़ाइल की निर्देशिका में शुरू किया जाएगा। यदि यह एक मौजूदा शेल बफर है, तो यह अभी भी उस निर्देशिका में होगा जहां आपने इसे अंतिम उपयोग के बाद छोड़ दिया था। अपने इच्छित व्यवहार को हमेशा प्राप्त करने के लिए, शेल बफर को मारने के लिए याद रखें जब आप इसके साथ कर रहे हों ( C-x k)
यदि M-x shellबहुत अधिक टाइपिंग है, तो आप अपने लिए एक शेल शुरू करने के लिए एक वैश्विक कुंजी सेट कर सकते हैं। (global-set-key (kbd "C-x S") 'shell)आपकी स्टार्टअप फ़ाइल में कुछ ऐसा होना चाहिए (लेकिन अपने शॉर्टकट के साथ एक और उपयोगी कमांड को मास्क न करने के लिए सावधान रहें!)
इसके अलावा, ध्यान रखें कि यह एक "डंब टर्मिनल" है, इसलिए कुछ कमांड जैसे कि git commitजरूरत के विकल्प -mऔर पासवर्ड आपकी स्क्रीन पर प्लेनटेक्स्ट में होंगे।
मैं, एक समर्पित टर्मिनल अनुप्रयोग चलाने के लिए चाहता था konsole। मैं konsole में एक नया टैब खोलना चाहता था अगर यह चल रहा है, या अगर यह नहीं है तो फायर-अप करें।
जब मैं छोटा था तब मैंने एमएसीएस और बैश के बीच कार्यान्वयन को विभाजित किया था। मैं emacs से निम्न डिफ्यूजन को कॉल करता हूं:
(defun bk-konsoles ()
"Calls: bk_konsoles.bash -- which starts new tab in a running konsole,"
(interactive)
(let ((curDir default-directory))
(shell-command (concat "bk_konsoles.bash \"" curDir "\" 2>&1 > /dev/null & disown") nil nil)
(kill-buffer "*Shell Command Output*")))
डिफॉन कॉल बैश स्क्रिप्ट bk_konsoles.bash:
#!/bin/bash
myPath=`echo $@ | sed 's/.$//'`
runningKonsole=`ps -e | grep konsole`
if [ "$runningKonsole"!="" ]; then
if [ "$@"!="" ]; then
konsole --new-tab --workdir "$myPath" 2>&1 > /dev/null
else
konsole --new-tab 2>&1 > /dev/null
fi
wmctrl -a " – Konsole"
else
konsole
fi
ज्यादातर समय मैं उपयोग करता हूं shell-mode। इसलिए मैं यहां शैल का भारी उपयोग करता हूं । लेकिन जब मुझे बाहरी टर्मिनल की जरूरत होती है। मैं इसका उपयोग करते हुए tmux के साथ urxvt-client का उपयोग करता हूं:
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
(defun term-here ()
(interactive)
(start-process "" nil "term-here"))
यह आपकी वर्तमान निर्देशिका में urxvt-client (tmux के साथ) खोलेगा। मैं इसे dired-mode-map में बांधता हूं।
(use-package dired
:ensure nil
:ensure-system-package urxvt
:bind ((:map dired-mode-map
("," . term-here))))
मैं urxvt-client को चुनता हूं क्योंकि यह तेज और सरल है। स्टार्टअप पर अपना urxvt-daemon चलाना न भूलें।
यदि आपके पास helmपूरा ढांचा स्थापित है, तो आप helm-run-external-command (C-x c C-c C-x)अपनी पसंद के टर्मिनल-एमुलेटर या वर्तमान बफर की निर्देशिका में किसी अन्य बाहरी कार्यक्रम को चलाने के लिए उपयोग कर सकते हैं ।
M-x term, यह अच्छा लगता है, लेकिन जैसा मैं चाहता हूं वैसा बिल्कुल नहीं है। मैं एक शेल (उदाहरण के लिएbashयाzshएमएसीएस बफर में नहीं बल्कि टर्मिनल एमुलेटर (xtermयाurxvt...) शुरू करना चाहता हूं ।