最近写多了Lisp,发现自动补全右括号对于我来说并没有达到省力,反而加重了心理负担。。
举例来说,当我写完这一行到了x时候我需要换行写下一个case了,
(define (foo t)
(match t
[(abs fi x t1) (let ([new-ctx-x (pick-freshname ctx x)]))]))
^
因为有自动补全,所以我不需要手动输入右括号,只需要C-f
把光标移动到一个case的结尾,即]
(define (foo t)
(match t
[(abs fi x t1) (let ([new-ctx-x (pick-freshname ctx x)]))]))
^
然后按下回车键换行,这样的工作我需要做的有
- 挨个数括号,并且多次按
C-f
- 并且根据括号对应的高亮提示来判断哪一个是正确的换行位置,从而继续写case。
最后达到我想要的效果
(define (foo t)
(match t
[(abs fi x t1) (let ([new-ctx-x (pick-freshname ctx x)]))]
[]))
^
可是如果没有自动补全右括号功能,而是手动打右括号
(define (foo t)
(match t
[(abs fi x t1) (let ([new-ctx-x (pick-freshname ctx x
^
我需要做的是
- 连续按
)
- 找到合适的位置然后换行
(define (foo t)
(match t
[(abs fi x t1) (let ([new-ctx-x (pick-freshname ctx x)]))]
[
^
比较按键的次数,两者相同,比较心理负担,个人觉得第二个,对比在一堆右括号中移动光标,反而更加符合直觉以及轻松。
不知道是不是我的用的方法不太对,想听听大家的观点。
p.s. 贴一个很久之前发过的贴,这样关闭括号的方式反而让我感觉极其的轻松,很明确的知道自己在close哪。