Benim ilk baskını ile iki kelime takas işlev iki dizeyi alır ve birbirleri ile takas yapar bir işlevdir:Etkileşimli Emacs Lisp emacs lisp ait ilginç dünyasına birbirlerine
(defun swap-strings (a b)
"Replace all occurances of a with b and vice versa"
(interactive "*sFirst Swap Word: \nsSecond Swap Word: ")
(save-excursion
(while (re-search-forward (concat a "\\|" b) nil t)
(if (equal (match-string 0) a)
(replace-match b)
(replace-match a)))))
Bu işleri - ama ben m yapıştırıldı:
- Her bir değiştirmeden önce kullanıcının onay için nasıl sorulur? (Çalışmak için
perform-replace
) a
veb
dizelerinden nasıl kurtulacaklar, herhangi bir normal ifade karakteri içeriyorlarsa normal ifadeler olarak yorumlanamazlar?
Düzenleme: Bir süredir kullanıyorum son kopya-pastable koddur:
(defun swap-words (a b)
"Replace all occurances of a with b and vice versa"
(interactive "*sFirst Swap Word: \nsSecond Swap Word: ")
(save-excursion
(while (re-search-forward (concat (regexp-quote a) "\\|" (regexp-quote b)))
(if (y-or-n-p "Swap?")
(if (equal (match-string 0) a)
(replace-match (regexp-quote b))
(replace-match (regexp-quote a))))
)))
Ne yazık ki, I-arama yaptığı gibi sayfasındaki yaklaşan eşleşmeleri vurgulamaz. İlk için