Выровнять по столбцам в emacs?

у меня есть .файл 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 align и M-x align-regexp С= но не работает. Может кто-нибудь придумать решение?

2 ответов


почему вы пытались выровнять по = ?? Нет ни одного = в этом примере текст.

предполагая, что ваш пример является репрезентативным, вы можете выровнять по пробелам. Я буду использовать \s- (синтаксис пробелов) вместо фактического пространства, так как последнее труднее увидеть.

C-uM-x align-regexp RET

  • сложное выравнивание с помощью regexp:\(\s-*\)\s-
  • группа скобок для изменения (оправдать, если отрицательный):1
  • количество интервалов (или столбец, если отрицательный):3
  • повторить по всей линии? (y или n)y

Если вы хотите только выровнять на дисплее и предпочли бы не изменять файл, вы можете попробовать csv-mode (доступно в GNU ELPA). Вам нужно будет указать SPC в качестве разделителя (по умолчанию это запятая или вкладка), но затем вы можете использовать меню, чтобы указать режим для выравнивания столбцов.