Scheme(例如在SICP书中)通常遵循此缩进模型:
(define (abs n)
(cond ((> n 0) n)
((< n 0) (- 0 n))
(else 0)))
我发现很难用这种结构重构代码,因为在许多其他语言中,惯例是在不同的行上隔离模拟结构,例如:
if (n > 0) {
return n;
} else if {
return -n;
} else {
return 0;
}
因此,可以通过删除第三行和第二行(例如,使用else
的Vi)删除d2d
。
我想知道如果这些重构影响最后一行,其中包含)
个字符,那么这些重构是如何有效地执行的呢?
答案 0 :(得分:3)
转到该行。
da(
至&#34; d
elete a
轮(
&#34;,结果
(define (abs n)
(cond ((> n 0) n)
((< n 0) (- 0 n))
))
kJ
向上移动一行并将此行加入下一行,从而产生
(define (abs n)
(cond ((> n 0) n)
((< n 0) (- 0 n))))
因此,对于您的示例,这将是Gda(kJ
:
答案 1 :(得分:2)
我使用paredit
从结构上编辑Lisp代码(这可以让你处理s表达式,而不是像线条那样可能有歧义的单位)。似乎有一个等效的vim
version(github
上的mirrored)我无法评论,因为我从未使用它。