逐步将打印表单包裹在方形表单上的三种方法。(其他答案中已经提到了这三种方式中的两种)
(1) 剪切&打字&粘贴
(+ (square 3) 4)
;;; make sure cursor is at right place (| is cursor)
(+ |(square 3) 4)
;;; mark-sexp and kill-region
(+ | 4)
;;; type the print form and make sure cursor is at right place
(+ (print |) 4)
;;; paste
(+ (print (square 3)) 4)
(2) type & slurf
(+ (square 3) 4)
;;; make sure cursor is at right place (| is cursor)
(+ |(square 3) 4)
;;; type the print form and make sure cursor is at right place
(+ (print|) (square 3) 4)
;;; paredit-forward-slurp-sexp
(+ (print (square 3)) 4)
(3) 包装和类型
(+ (square 3) 4)
;;; make sure cursor is at right place (| is cursor)
(+ |(square 3) 4)
;;; paredit-wrap-round
(+ (|(square 3)) 4)
;;; type print
(+ (print (square 3)) 4)
剪切&类型&粘贴是最乏味的。它不依赖于 paredit,并且最容易推广到将复杂的外部形式包装在多个可能是多行格式的内部形式周围的情况,例如,转动
(let ((x 1))
(moo)
(oink)
(oink))
进入
(let ((x 1))
(moo)
(mapc (lambda (x)
(oink)
(oink))
(list 1 2 3)))
通过在两个 oink 周围包裹一个 mapc-over-lambda 形式。
Type & slurf 似乎是最知名的。它也可以推广到 mapc-over-lambda 的情况。
Wrap & type 是最容易输入的。当您将其推广到 map-over-lambda 情况时,您选择两个 oink,然后按(
将其换行,并完成 lambda 形式的编写,然后选择 lambda 形式,按(
将其换行,键入 mapc,您可以使用 CMf跨越 lambda 形式和类型(列表 1 2 3)。