何时使用paredit barf命令

时间:2014-07-16 17:25:39

标签: emacs paredit

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-killing-backward,我回来了:

(foo num)
(bar num)

使用barf命令会有什么方法可以使用?

注意:当你重复slurp命令的次数超过必要时,可以调用undo命令取消其中的一些命令。

1 个答案:

答案 0 :(得分:3)

Paredit社区所有成员普遍接受的事实是,诽谤和扒窃与模式是分不开的。用Paredit写一些lisp代码,然后需要这些代码。这更多是由于结构编辑的性质和Paredit对不平衡括号的讨厌而不是任何其他因素。

当不使用Paredit时,可以通过在添加和删除括号的同时使用光标(或者可能使用鼠标)进行导航来完成。 Paredit不允许其用户以这种不受欢迎的方式违反其括号,因此自然的结论是Paredit用户必须进行barf和slurp。

一个例子:

创建一个代码块,一个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属于第二个条件块。 BARF

(when ((|so bar fuux) baz)
      (foo suux duux))

其余部分不包括使用slurpage或barfage。

(when (and (|so bar fuux) baz)
      (foo suux duux))