यहाँ एक और कमांड (लाइब्रेरी से misc-cmds.el
) है जो आपके अनुरोध का बहुत अधिक उपयोग करता है। बस इसे एक ही कुंजी ( C-M-t
या जो भी) से बांधें । एक सेक्सप को आगे और पीछे दोनों तरफ बार-बार ले जाने के लिए इसका उपयोग करें।
एक नकारात्मक उपसर्ग अर्ग पिछड़े को स्थानांतरित करता है, जैसे transpose-sexp
, लेकिन यह एक अन्य पिछड़े प्रत्यारोपण करने के लिए तैयार बिंदु को भी छोड़ देता है। और जब दोहराते हैं, तो एक नकारात्मक उपसर्ग arg दिशा को प्रवाहित करता है।
इसलिए यदि आप आज्ञा को बांधते हैं, कहते हैं, C-o
तो उस सेक्सप को स्थानांतरित करें जो बाएं से बिंदु तक दाईं ओर तीन बार, फिर बाईं ओर दो बार, फिर दाईं ओर एक बार हो।C-o C-o C-o
C--
C-o C-o
C--
C-o
एक संख्यात्मक उपसर्ग arg का प्रभाव केवल पहले उपयोग के लिए होता है, अर्थात, दोहराते समय नहीं - दोहराते समय, आंदोलन एक समय में एक सेक्सप होता है।
(defun reversible-transpose-sexps (arg)
"Reversible and repeatable `transpose-sexp'.
Like `transpose-sexps', but:
1. Leaves point after the moved sexp.
2. When repeated, a negative prefix arg flips the direction."
(interactive "p")
(when (eq last-command 'rev-transp-sexps-back) (setq arg (- arg)))
(transpose-sexps arg)
(unless (natnump arg)
(when (or (> emacs-major-version 24)
(and (= emacs-major-version 24) (> emacs-minor-version 3)))
(backward-sexp (abs arg)) (skip-syntax-backward " ."))
(setq this-command 'rev-transp-sexps-back)))
(नोट: transpose-sexps
24.4 में परिवर्तित व्यवहार , इसलिए यहां संस्करण परीक्षण। 24.4 से पहले, बिंदु को जारी रखने के लिए सही स्थान पर समाप्त हुआ। (उदाहरण के लिए दोहराने)। 24.4 से शुरू होना, बिंदु उसके लिए गलत जगह है। एक प्रतिगमन या एक उपयोगी सुविधा जोड़ता है या कुछ अन्य बग को देखने वाले की नजर में निश्चित रूप से ठीक करता है। ;-) मैंने इसके लिए Emacs bug # 20698 दायर किया है , बस अब।)