shell - Emacs खोल का उपयोग करते हुए स्पष्ट शेल की कमान




elisp (4)

क्या एमएसीएस में शेल का उपयोग करते हुए शेल को खाली करने के लिए एक अंतर्निहित कमांड है?

यदि नहीं, तो क्या इसे प्राप्त करने के लिए एक अनिवार्य कार्य है?


अपडेट फरवरी 2015

बस ध्यान दिया जाता है कि अब Emacs (संस्करण 25+) में कमांड comint-clear-buffer , डिफ़ॉल्ट रूप से Cc Mo लिए बाध्य है, जो कि हमें यहाँ की आवश्यकता है, और संभवतः उन उत्तरों के लिए बेहतर है जिन्हें मैंने मूल रूप से नीचे पोस्ट किया था।

विचार करने के लिए विकल्प:

  1. Cl बफर को रिकर्व करेगा। इसे बार-बार दबाने से बफर बंद हो जाता है, इसलिए यह बिंदु बफर के ऊपर, मध्य या नीचे दिखाई देता है। जब यह शीर्ष पर रुक जाता है, तो बफर ऐसा लगता है कि यह साफ हो गया है, हालांकि सभी पाठ अभी भी वहां हैं, देखने से बाहर।

  2. Cx h पूरे बफ़र को चिह्नित करता है, जिसके बाद Cw इसे मारता है। यह अंतिम प्रॉम्प्ट को भी मारता है, लेकिन अगली कमांड दर्ज करने के बाद आपको अपना प्रॉम्प्ट वापस मिल जाता है।

  3. आप erase-buffer का भी उपयोग कर सकते हैं, जो डिफ़ॉल्ट रूप से एक कुंजी से बंधा नहीं है, लेकिन यह आसानी से हो जाता है (आप Mx erase-buffer का भी उपयोग कर सकते हैं:

    (defun my-shell-hook ()
      (local-set-key "\C-cl" 'erase-buffer))

    (add-hook 'shell-mode-hook 'my-shell-hook)

जो इसे Cc l से बांधता है; आप जो चाहें उसे चुन सकते हैं।

  1. समाशोधन के बाद अपने संकेत को फिर से बनाने के लिए एक त्वरित सुधार संभव है:
    (defun my-clear ()
      (interactive)
      (erase-buffer)
      (comint-send-input))

    (defun my-shell-hook ()
      (local-set-key "\C-cl" 'my-clear))

    (add-hook 'shell-mode-hook 'my-shell-hook)

जब आप कुछ समय के लिए emacs का उपयोग कर रहे हैं, तो अंकन और हत्या क्षेत्र स्वाभाविक हो जाते हैं, इसलिए आपको मिल सकता है पहला विकल्प पर्याप्त है। यदि नहीं, तो अंतिम विकल्प निकटतम है जो आप चाहते हैं।

संपादित करें: यह सिर्फ emacs विकि पर पाया गया, यह मेरे विकल्प 4 से बेहतर है:

(defun my-clear ()
  (interactive)
  (let ((comint-buffer-maximum-size 0))
    (comint-truncate-buffer)))

AFAIK आप स्पष्ट नहीं कर सकते हैं जब आप Mx खोल के रूप में शुरू करते हैं, लेकिन यदि आप Mx शब्द करते हैं तो आपको पूरी तरह कार्यात्मक टर्मिनल मिलता है जहां स्पष्ट रूप से काम करता है। मैं इस पर गलत हो सकता हूं, लेकिन व्यक्तिगत रूप से अब मैं Mx शब्द का उपयोग करता हूं क्योंकि यह पूरी तरह से काम कर रहा है।


या ... आप बफर को छोटा कर सकते हैं।

(let ((eshell-buffer-maximum-lines 0)) (eshell-truncate-buffer))

*shell* बफर में अपने बिंदु के साथ, भागो:

Cc Mo

या

Mx comint-clear-buffer

नोट: यह भी *Python* शेल में काम करता है, लेकिन *eshell* में काम नहीं करता है।







elisp