用paredit有一段时间了,感觉这个插件还是非常不错的。
不过有一个问题一直困扰着我:
就是怎么删除半个括号?
有时候剪切的时候会不小心残留半个括号,这半个括号怎么删除?backspace键无效!
举个例子:
(define aaa 1)
然后我删除了define aaa 1)
,残留了一个(
这个时候怎么删掉这个(
?
另外还有一个问题就是:如果我的代码是这样:
(require "./my-lib.rkt)
这是由于剪的时候不小心多剪了一个"
,然后我想补上"
是不行的,他会变成:
(require "./my-lib.rkt\")
感谢~~
保留一个键,不绑定 paredit-
函数,例如 C-h
:
(foo))|
C-u C-d
我记得应该可以,如果C-d
是paredit的delete,现在用smartparens了,不太记得
1 个赞
嗯,这个我知道。
但有时候需要使用鼠标来进行剪切和粘贴(比如:剪一些东西到另外的IDE里),这时候会不小心剪到半个。。
嗯,选中,然后按backspace也可以。
但需要先选中,这就比较麻烦了。。
最好能更加智能一些,直接能按backspace删除那半个括号
-Q 查看下回车对应的是哪个命令,然后给它绑定一个按键呢
paredit有结构化编辑的功能,smartparens能替代paredit吗?
我本来也用paredit,但是某天写go的时候出了问题,折腾无果,就换了smartparens,我也不是重度用户,就用几个基本的命令,用起来感觉是一样。
paredit是用来编辑s表达式的,你怎么用来写go,这完全错了吧。
事实上可以写其他语言,我是先用的smartparens,后来又用的paredit,然后又用回smartparens。smartparens就是支持很多语言,看代码都看到专门为各种语言所做的拓展。所以我用paredit的时候也这么用,其实除了go,我写其他的也没问题,于是在写go之前我都没发现问题,就一直用的paredit,因为smartparens还挺臃肿的。最后出了问题,就回到smartparens。
用paredit大部分都是成对出现的,如果括号不匹配就没法智能删除。
因为写算法判断匹配比较容易,写算法纠正错误的匹配就比较麻烦了。
这种情况很少出现,临时选择一下没啥问题。临时选中删除其实很好的,我十几年都是这样用的,没啥问题
我试了下,paredit在lisp代码中,无论半个括号是前半个还是后半个,都是可以删除的,其他mode不能删我也碰到过,暂时就用大家上面说的workaround吧,lisp mode可以删其他不可以,显然是paredit的一个bug/missing feature。
C-u backspace
可以用,感觉是相对比较方便的方案。