जब बहुत बड़ी फ़ाइलों में नियंत्रण-जी काम नहीं करता है तो इमैक को कैसे बाधित किया जाए?


16

जब मैं Emacs में बहुत बड़ी (उदाहरण के लिए 128MB) फाइलें देखता हूं और फाइल के अंत में कूद जाता हूं, तो मैं किसी तरह के O (n ^ 2) या बदतर व्यवहार में चला गया हूं। मुझे लगता है कि पाठ को प्रासंगिक रूप से रंगने के लिए इसे मेरे रंग एल्गोरिथ्म के साथ करना पड़ सकता है। यदि मैं नियंत्रण-जी (कीबोर्ड-छोड़ें) टाइप करता हूं, तो ऑपरेशन प्रभावित नहीं होता है। मैं अपने emacs सत्र को पुनर्प्राप्त करने के लिए बस इसे मारने के बिना कुछ तरीका चाहूंगा। मैंने एक SIGINT भेजने की कोशिश की, लेकिन emacs बस बाहर निकल गए। क्या कोई संकेत है जो मैं भेज सकता हूं, या किसी अन्य तरीके से (शायद एक डिबगर में) जो कुछ भी कार्रवाई मुझे छोड़ने और वापस नियंत्रण देने के लिए मजबूर करने के लिए है?


मुझे फ़ॉन्ट लॉकिंग को रूकावट बनाने का एक तरीका नहीं पता है, लेकिन आपको फॉन्ट लॉकिंग को तेज करने पर इस Emacs Wiki पृष्ठ में कुछ उपयोग मिल सकता है ।
एरोन मिलर

5
क्या आपने 3 बार भागने की कोशिश की?
yPhil

हां, मुझे लगता है कि आपका स्वयं का फॉन्ट-लॉक कोड शायद यहां गलती पर है। font-lock-keywordsसमस्या को खोजने का प्रयास करने के लिए अपने regexps की सावधानीपूर्वक जांच करें ।
ड्रू

1
EMACS: आठ मेगाबाइट्स और लगातार
स्वैपिंग

2
तीन बार भागने से मेरे लिए कुछ नहीं होता।
विलियमकेएफ

जवाबों:


9

मुझे संदेह है कि यह फ़ॉन्ट लॉक मोड है। शायद जो दिखाई दे रहा है उसके पास ही सेक्शन है। यह शायद मेमोरी में डेटा कॉपी कर रहा है।

sigusr1

sigusr2

ये घटनाएँ तब उत्पन्न होती हैं जब Emacs प्रक्रिया संकेत प्राप्त करती है SIGUSR1और SIGUSR2। उनके पास कोई अतिरिक्त डेटा नहीं है क्योंकि सिग्नल अतिरिक्त जानकारी नहीं रखते हैं। वे डीबगिंग के लिए उपयोगी हो सकते हैं ( त्रुटि डीबगिंग देखें )।

स्रोत: GNU Emacs Lisp संदर्भ मैनुअल: विविध कार्यक्रम

मुझे नहीं पता कि यह क्या करेगा (या आपके द्वारा चलाए जा रहे emacs का कौन सा संस्करण है), लेकिन आप पूरी तरह से गैर-विनाशकारी संकेत (USR1 या USR2) आज़मा सकते हैं।

$ किल -USR1 पिड

या आप सोने जा सकते हैं और देख सकते हैं कि क्या यह ठीक हो जाता है।


मुझे आश्चर्य है कि आपकी मशीन कितनी व्यस्त (सीपीयू और डिस्क) है। यह आपको थोड़ा सा बता सकता है कि यह क्या कर रहा है। .. और आप emacs की एक और कॉपी और "मार -यूएसआर 1 पीआईडी" चलाने में सक्षम हो सकते हैं, यह देखने के लिए कि आपके द्वारा परवाह किए जाने से पहले क्या होता है।
9mjb

3
वाह, भेजने kill -USR2के लिए Emacs-मैक मेरे लिए एक ऐसी ही स्थिति में काम किया - js2 मोड में एक बड़ी फ़ाइल लोड और एक iSearch शुरू कर दिया। USR2 ने खोज छोड़ दी और डिबगर में प्रवेश किया। प्रक्रिया को मारने से बहुत बेहतर है!
विलियम

मैं आपकी शंकाओं से असहमत हूं। मार ने मेरे लिए काम किया। इसने मुझे डिबगर और फॉन्ट-लॉक-डिफॉल्ट-फॉन्टिफ़-रीजन में ले जाया, जहाँ यह अटक गया था।
ब्रायन सी।

2

मुझे लगता है कि emacs करता है, लेकिन आप server-startअपने ~ / .emacs फ़ाइल में डालकर Emacs सर्वर का उपयोग कर सकते हैं किसी भी सिग्नल से अनजान हैं ताकि आप emacs के अपने चल रहे उदाहरण पर RPC कर सकें।

फिर जब आप emacs को मारना और लिखना चाहते हैं तो आप अपने शेल से कॉल कर सकते हैं emacsclient -e '(save-buffers-kill-emacs t)'

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