Paredit提供了barf和slurp命令。我可以看到什么时候我应该使用slurp命令,但我不确定什么时候我应该使用barf命令。
当我有这样的代码:
(foo num)
(bar num)
我会这样写:
(let ((numb blah)))
(foo num)
(bar num)
然后发出两声声音得到这个:
(let ((numb blah))
(foo num)
(bar num))
我起初认为该任务的对立面可能需要使用barf,但为此,我可以将点移动到(foo num)
的开始,然后按<M-up>
,运行命令paredit-splice-sexp-kill -向后,我得到这个:
(foo num)
(bar num)
在哪些情况下使用barf命令会很方便?
注意:当您重复slurp命令的次数超过必要时,您可以调用undo命令来取消其中的一些。
这是Paredit社区所有成员普遍接受的事实,slurpage和barfaage与模式是分不开的。使用Paredit和编写一些lisp代码,可能会出现对它们的需求。这主要是由于结构编辑的本质和Paredit对不平衡括号的厌恶,而不是其他因素。
当不使用Paredit时,可以通过在添加和删除括号的同时使用光标(或者可能使用鼠标)导航来完成。Paredit不允许它的用户以这种不希望的方式违反它的括号,因此自然的结论是,Paredit用户必须呕吐和发出啧啧声。
一个例子:
创建了一个代码块,一个if语句。
(when (|so bar fuux baz)
(foo suux duux))
这个块需要使用and
逻辑运算符测试两个条件,而不是测试一个条件。M-(
可以用来包裹,但不能包裹多汁的bar fuux baz
符号。
(when ((|so) bar fuux baz)
(foo suux duux))
把
(when ((|so bar fuux baz))
(foo suux duux))
出错了。Baz
属于第二个条件块。呕吐 .
(when ((|so bar fuux) baz)
(foo suux duux))
其余部分不包括使用浆液或垃圾。
(when (and (|so bar fuux) baz)
(foo suux duux))