Emacs में एक शेल कमांड के माध्यम से टेक्स्ट को छानने के लिए




text-editor elisp (2)

आप एक क्षेत्र का चयन कर सकते हैं और `कू एम- | टाइप कर सकते हैं कमांड आरईटी 'पर आधारित है, और यह शेल-कमांड-ऑन-क्षेत्र के इंटरैक्टिव उपसर्ग तर्क के कारण क्षेत्र को उसी बफर में आदेश आउटपुट के साथ बदल देता है

वीआई [एम] में है ! कमांड जो मुझे एक शेल कमांड - जैसे सॉर्ट या इंडेंट के माध्यम से पाइप टेक्स्ट देता है - और फ़िल्टर्ड पाठ को बफ़र में वापस लाएं। क्या emacs में एक समतुल्य है?


मैंने इसे कुछ साल पहले लिखा, यह आपकी मदद कर सकता है:

(defun generalized-shell-command (command arg)
  "Unifies `shell-command' and `shell-command-on-region'. If no region is
selected, run a shell command just like M-x shell-command (M-!).  If
no region is selected and an argument is a passed, run a shell command
and place its output after the mark as in C-u M-x `shell-command' (C-u
M-!).  If a region is selected pass the text of that region to the
shell and replace the text in that region with the output of the shell
command as in C-u M-x `shell-command-on-region' (C-u M-|). If a region
is selected AND an argument is passed (via C-u) send output to another
buffer instead of replacing the text in region."
  (interactive (list (read-from-minibuffer "Shell command: " nil nil nil 'shell-command-history)
                     current-prefix-arg))
  (let ((p (if mark-active (region-beginning) 0))
        (m (if mark-active (region-end) 0)))
    (if (= p m)
        ;; No active region
        (if (eq arg nil)
            (shell-command command)
          (shell-command command t))
      ;; Active region
      (if (eq arg nil)
          (shell-command-on-region p m command t t)
        (shell-command-on-region p m command)))))

मुझे यह फ़ंक्शन बहुत उपयोगी साबित हुआ है यदि आप इसे उपयोगी भी पाते हैं, तो मैं सुविधा के लिए कुछ फ़ंक्शन कुंजी को बाध्य करने का सुझाव देता हूं, व्यक्तिगत तौर पर मैं F3 उपयोग करता हूं:

(global-set-key [f3] 'generalized-shell-command)






elisp