मैं Emacs को पुनः .emacs
आरंभ किए बिना अपनी सभी परिभाषाओं को पुनः लोड करने के लिए Emacs कैसे प्राप्त कर सकता हूं ?
मैं Emacs को पुनः .emacs
आरंभ किए बिना अपनी सभी परिभाषाओं को पुनः लोड करने के लिए Emacs कैसे प्राप्त कर सकता हूं ?
जवाबों:
आप कमांड लोड-फ़ाइल का उपयोग कर सकते हैं ( M-x load-file
फिर, डिफ़ॉल्ट फ़ाइल नाम को स्वीकार करने के लिए दो बार प्रेस करें, जो वर्तमान फ़ाइल संपादित की जा रही है)।
आप किसी भी सेक्सप के अंत में बिंदु को स्थानांतरित कर सकते हैं और C-xC-eकेवल उस सेक्सप को निष्पादित करने के लिए दबा सकते हैं। यदि आप सिर्फ एक पंक्ति या दो बदल रहे हैं तो आमतौर पर पूरी फ़ाइल को फिर से लोड करना आवश्यक नहीं है।
defun
या defvar
, आप भी यह घोषणा शरीर और प्रकार के अंदर छोड़ सकते हैं C-M-x
। बेहद सुविधाजनक।
बहुत अजीब है कि बहुत सुविधाजनक है
M-x eval-buffer
यहाँ उल्लेख नहीं है।
यह तुरंत बफर में सभी कोड का मूल्यांकन करता है, इसकी सबसे तेज विधि, यदि आपका .emacs
बेरोजगार है।
.emacs
(या होना है) उदासीन?
.emacs
नहीं आता है कि क्या होगा?
आप आमतौर पर बदले हुए क्षेत्र का केवल पुनर्मूल्यांकन कर सकते हैं। ~ / .Emacs का क्षेत्र चिह्नित करें जिसे आपने बदला है, और फिर उपयोग करें M-x eval-region RET
। यह अक्सर पूरी फ़ाइल के पुनर्मूल्यांकन से अधिक सुरक्षित होता है क्योंकि एक .emacs फ़ाइल को लिखना आसान होता है जो दो बार लोड होने के बाद काफी सही काम नहीं करता है।
यदि आपको अपनी .emacs फ़ाइल वर्तमान में सक्रिय बफर में खुली है:
एमएक्स eval-बफर
M-x load-file
~/.emacs
M-: (load user-init-file)
Eval:
शीघ्र (कोष्ठकों सहित) में टाइप करते हैंuser-init-file
~/.emacs
डिफ़ॉल्ट रूप से मान (कॉन्फ़िगरेशन फ़ाइल पथ की ओर इशारा करते हुए) एक चर है (load)
कम, पुराना और गैर-संवादात्मक संस्करण है (load-file)
; यह एक एमएसीएस कमांड (टाइप किए जाने वाला M-x) नहीं है, बल्कि एक मात्र फंक्शन हैM-:
> M-x
अन्य लोगों ने पहले से ही आपके प्रश्न का उत्तर दिया है, लेकिन मुझे पता है कि मैं आमतौर पर उन पंक्तियों को निष्पादित करना चाहता हूं जो मैंने लिखा था। उसके लिए, CtrlAltxलिस्प में ठीक काम करता है।
eval-lastsexp
में,C-x C-e
C-M-x
, आपको "लिस्प के अंत में" होना जरूरी नहीं है - क्या आप C-x C-e
शायद सोच रहे हैं ? अच्छी बात यह C-M-x
है कि आप इसे तब भी लागू कर सकते हैं, जब बिंदु किसी फ़ंक्शन / चर घोषणा के बीच में हो।
मेरा सुझाव है कि आप शुरू में ऐसा न करें। इसके बजाय, एक नया ईमैक्स सत्र शुरू करें और देखें कि आपने जो भी बदलाव किए हैं, वे सही तरीके से काम करते हैं या नहीं। इस तरह से करने का कारण यह है कि आपको ऐसी स्थिति में छोड़ने से बचें, जहां आपके पास एक निष्क्रिय .emacs फ़ाइल है, जो लोड करने में विफल रहती है या सफाई से लोड करने में विफल रहती है। यदि आप अपने सभी संपादन मूल सत्र में करते हैं, और एक नए सत्र में आपके सभी परीक्षण, तो आपको हमेशा कुछ न कुछ विश्वसनीय होगा, जो कि कोडिंग के बारे में टिप्पणी कर सके।
जब आप अंततः अपने परिवर्तनों से खुश होते हैं, तो आगे बढ़ें और फिर से लोड करने के लिए अन्य उत्तरों में से एक का उपयोग करें। मेरी व्यक्तिगत पसंद eval
सिर्फ आपके द्वारा जोड़े गए / बदले गए अनुभाग को करना है, और यह करना है कि बस जोड़े गए / बदले गए कोड और कॉल के क्षेत्र को उजागर करें M-x eval-region
। ऐसा करने से उस कोड का मूल्यांकन कम से कम हो जाता है, जो किसी अनजाने साइड-इफ़ेक्ट को कम करता है, जैसा कि लुयोपेड बताता है।
कुंजीपटल संक्षिप्त रीति:
(defun reload-init-file ()
(interactive)
(load-file user-init-file))
(global-set-key (kbd "C-c C-l") 'reload-init-file) ; Reload .emacs file
C-x C-e ;; current line
M-x eval-region ;; region
M-x eval-buffer ;; whole buffer
M-x load-file ~/.emacs.d/init.el
मैं वर्तमान में Ubuntu 15.04 पर हूं; मुझे इसके लिए एक कुंजी परिभाषित करना पसंद है।
[एम-इंसर्ट] मेरे कीबोर्ड पर ऑल-इंसर्ट का अनुवाद करता है।
इसे अपने .emacs फ़ाइल में रखें:
(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
इसे अपनी init फाइल में परिभाषित करें और Mx reload-user-init-file द्वारा कॉल करें
(defun reload-user-init-file()
(interactive)
(load-file user-init-file))
यद्यपि M-x eval-buffer
आप काम करेंगे आप टॉगल और अन्य समान चीजों के साथ समस्याओं में भाग सकते हैं। एक बेहतर तरीका यह हो सकता है कि आप अपने .emacs (या यहां तक कि अगर आपके चारों ओर गड़बड़ कर रहे हों) में व्हाट्स नए को चिह्नित करें या फिर हाइलाइट करें M-x eval-region
। उम्मीद है की यह मदद करेगा।
यहाँ अपने विन्यास का त्वरित परीक्षण करने का एक त्वरित और आसान तरीका है। आप C-x C-e
विशिष्ट लिस्प के अंत में कुछ फ़ंक्शन को व्यक्तिगत रूप से निष्पादित करने के लिए भी उपयोग कर सकते हैं ।
Cx Ce कमांड eval-last-sexp (वैश्विक-मानचित्र में पाया गया) चलाता है, जो एक संकलित लिस्प फ़ंक्शन है।
यह Cx Ce के लिए बाध्य है।
(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
बिंदु से पहले सेक्सप का मूल्यांकन करें; इको क्षेत्र में प्रिंट मूल्य। उपसर्ग तर्क के साथ, वर्तमान आउटपुट को वर्तमान बफर में प्रिंट करें।
आम तौर पर, यह फ़ंक्शन वैरिएबल 'एवल-एक्सप्रेशन-प्रिंट-लेंथ' और 'एवैल-एक्सप्रेशन-प्रिंट-लेवल' के मूल्य के अनुसार लंबे आउटपुट को रौंद देता है। शून्य के एक उपसर्ग तर्क के साथ, हालांकि, ऐसी कोई छंटनी नहीं है। इस तरह के एक उपसर्ग तर्क भी पूर्णांक को कई अतिरिक्त प्रारूपों (ऑक्टल, हेक्साडेसिमल, और चरित्र) में मुद्रित करने का कारण बनता है।
यदि 'eval-एक्सप्रेशन-डीबग-ऑन-एरर' नॉन-नील है, जो कि डिफ़ॉल्ट है, तो यह कमांड डिबगर में प्रवेश करने के लिए सभी त्रुटियों की व्यवस्था करता है।
जैसे आदेशों के अलावा एमएक्स eval-बफर या एमएक्स लोड फ़ाइल आप कमांड लाइन से एक ताजा Emacs को पुनः आरंभ कर सकते हैं:
emacs -q --load "init.el"
उपयोग उदाहरण stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/
आप इस तरह से emacs के लिए की-बाइंडिंग सेट कर सकते हैं
;; reload emacs configuration
(defun reload-init-file ()
(interactive)
(load-file "~/.emacs"))
(global-set-key (kbd "C-c r") 'reload-init-file)
आशा है कि यह मदद करेगा!