在Emacs中将2000行连接成1行

时间:2014-08-10 20:24:28

标签: emacs

我有2000行代码需要连接,希望能够进入 之一。

我知道在Emacs中,使用replace-string命令,我可以添加 +用于在每行的后面连接一次。但是我 当我这样做时,我在使用该文件时经常会出现语法错误 在SAGE上。所以我开始尝试并发现如果我将它们全部移动 一起在同一行并添加+符号,然后工作。 什么是将它们放在一条线上的最佳解决方案?

可能是因为我在每行的括号内都有括号。这里 是我的输出中的三个示例行:

[[['37a1', 1], 153, 160, [[13, 2], [53, -1], [67, 2], [127, -1], [443, -1], [547, 2], [599, -1]]], [['43a1', 1], 159, 163, [[5, -1], [103, -1], [127, -1], [541, -1]]], [['53a1', 1], 159, 161, [[71, -1], [97, -1]]], [['57a1', 1], 155, 157, [[5, 2], [11, -1]]], [['58a1', 1], 152, 157, [[31, 2], [53, -1], [109, -1], [673, -1], [739, -1]]], [['61a1', 1], 157, 161, [[7, -1], [13, -1], [71, 2], [113, -1]]], [['65a1', 1], 159, 160, [[43, 2]]], [['77a1', 1], 155, 160, [[5, 2], [31, -1], [71, -1], [179, -1], [223, -1]]], [['79a1', 1], 156, 159, [[41, 2], [83, 2], [131, 2]]], [['82a1', 1], 150, 154, [[5, 2], [229, 2], [283, 2], [499, 2]]]]
[[['112a1', 1], 155, 156, [[5, -1]]], [['117a1', 1], 155, 157, [[11, 2], [523, 2]]], [['118a1', 1], 158, 161, [[127, -1], [251, -1], [277, -1]]], [['121b1', 1], 82, 82, []], [['122a1', 1], 151, 158, [[5, -1], [43, 2], [79, -1], [113, -1], [191, -1], [241, 2], [523, -1]]], [['123a1', 1], 157, 159, [[5, 0], [7, 2]]], [['123b1', 1], 156, 159, [[17, 2], [29, -1], [811, -1]]], [['124a1', 1], 155, 155, []], [['128a1', 1], 161, 162, [[13, 2]]], [['129a1', 1], 160, 163, [[283, -1], [563, -1], [659, -1]]]]
[[['130a1', 1], 158, 159, [[43, 2]]], [['131a1', 1], 161, 163, [[59, 0], [271, -1]]], [['135a1', 1], 151, 158, [[19, -1], [53, 2], [151, -1], [241, -1], [421, -1], [607, -1], [613, -1]]], [['136a1', 1], 160, 161, [[5, 2]]], [['138a1', 1], 155, 157, [[11, 2], [313, 2]]], [['141a1', 1], 154, 159, [[7, 0], [29, -1], [37, -1], [97, -1], [557, -1]]], [['141d1', 1], 159, 161, [[37, -1], [619, -1]]], [['142a1', 1], 152, 157, [[5, -1], [13, -1], [131, -1], [233, 2], [907, 2]]], [['142b1', 1], 158, 160, [[31, 0], [911, -1]]], [['143a1', 1], 155, 159, [[7, 2], [29, 2], [113, -1], [509, 2]]]]

所以我想要的是像

A = B + C + D + ... = [a, b, c, ...] + [d, e, f, ...] + ...

,其中

[['37a1', 1], 153, 160, [[13, 2], [53, -1], [67, 2], [127, -1], [443, -1], [547, 2], [599, -1]]]

是此类条目的一个示例aBCD是一组 第1,2和3行的条目(我有2000条这样的行)。

2 个答案:

答案 0 :(得分:4)

开始
A
B
C

A+B+C

您可以用+&#39>替换行结尾:

Mx replace-string RET Cq Cj RET + RET

...然后根据需要手动修复生成的单行的开头和结尾,以满足正确的SAGE语句的需要。

答案 1 :(得分:3)

有很多方法可以做到这一点,但一个简单的方法是键盘宏。

转到第一行。使用C-x (启动键盘宏。

然后C-e C-k加入当前行的下一行。

现在C-x )结束键盘宏。

现在您可以根据需要运行它:M-1000 C-x e

如果您想更轻松地限制它,可以将缓冲区缩小到您想要操作的区域。