在Emacs中对齐列?

15

我有一个看起来像这样的.dat文件:

NGC0448 A3D:2010B g:o,r:o,i:o
NGC0474 A3D:2011A,2013A g:o,r:o,i:o,u:o

现在我希望将它们对齐成这个形式:

NGC0448    A3D:2010B          g:o,r:o,i:o
NGC0474    A3D:2011A,2013A    g:o,r:o,i:o,u:o

我已经尝试使用C-u M-X alignM-x align-regexp来对齐=,但都没有起作用。有人能想出解决方案吗?

我尝试了C-u M-X alignM-x align-regexp,但都无法对齐=。有人可以提供解决方案吗?

2个回答

20

你为什么要尝试使用等于号=来对齐?这个示例文本中并没有一个等于号=

假设您的示例代表性较强,您可以使用空格进行对齐。我将使用\s-(空格语法)代替实际空格,因为后者更难看清。

C-uM-x align-regexp RET

  • 使用正则表达式进行复杂对齐:\(\s-*\)\s-
  • 要修改的括号组(如果为负数则为调整):1
  • 间距量(如果为负数则为列数):3
  • 是否在整行中重复?(y或n):y

1
如果您只想在显示时对齐,并且不希望修改文件,您可以尝试使用 csv-mode(可在GNU ELPA中获得)。 您将需要将SPC指定为分隔符(默认为逗号或TAB),但然后您可以使用菜单告诉该模式对齐列。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接