@Drew'un önerdiği gibi, C-M-t
istediğinizi yapar. Kural şöyledir:
- İki sexps ortasında nokta koymak.
C-M-t
(Çalışan transpose-sexp
) tuşuna basın .
- Sol sexp noktasında her zaman birlikte sağa taşınır. Bu çok önemlidir , aksi takdirde hiç bitmeyeceksiniz.
Ya da, bunun transpozisyon olmadığını, sadece ilerlemek için, taşımak istediğiniz sexp'den sonra bir noktaya yerleştirmeniz gerektiğini düşünebilirsiniz.
Ancak, uygun bir şey var, sol sexp'i geriye doğru aktarmak istediğinizde, aynısını kullanıyorsunuz, C-M-t
ancak negatif bir önek argümanı ile sağlanıyor ve bu rahatsız edici. Başka bir mesele, noktanın geriye doğru transpoze edilen sol sexp'i takip etmemesi . Bu sorunu çözmek için aşağıdakilerin ters bir sürümünü oluşturuyoruz transpose-sexps
:
(defun reverse-transpose-sexps (arg)
(interactive "*p")
(transpose-sexps (- arg))
;; when transpose-sexps can no longer transpose, it throws an error and code
;; below this line won't be executed. So, we don't have to worry about side
;; effects of backward-sexp and forward-sexp.
(backward-sexp (1+ arg))
(forward-sexp 1))
Ardından, varsayılan Emacs'ın C-M-y
yanındaki C-M-t
ve ücretsiz olanı bağlayın.
(global-set-key (kbd "C-M-y") 'reverse-tranpose-sexps)
İşte bir demo; (MY-SEXP1)
her zaman ileri / geri hareket etmek için solda olduğunu göreceksiniz :