使用align-regexp对列进行右对齐

时间:2014-01-14 19:35:50

标签: regex emacs alignment

我尝试使用align-regexp对齐某些内容但无法获得所需的行为。

这是我最初的所作所为:

  [21:26] <Luke-Jr> btcNeverSleeps: no
  [21:26] <dmanderson> Not if it has to wait to make it into the block
  [21:26] <btcNeverSleeps> Luke-Jr: can you develop a bit?
  [21:26] <Luke-Jr> btcNeverSleeps: Bitcoin is a currency, not an authentication system
  [21:26] <dmanderson> your user could be waiting a LONG time for 1 Satoshi to who up
  [21:26] <Luke-Jr> btcNeverSleeps: you can use signed messages though

这就是我想要的:

  [21:26]        <Luke-Jr> btcNeverSleeps: no
  [21:26]     <dmanderson> Not if it has to wait to make it into the block
  [21:26] <btcNeverSleeps> Luke-Jr: can you develop a bit?
  [21:26]        <Luke-Jr> btcNeverSleeps: Bitcoin is a currency, not an authentication system
  [21:26]     <dmanderson> your user could be waiting a LONG time for 1 Satoshi to who up
  [21:26]        <Luke-Jr> btcNeverSleeps: you can use signed messages though

以下是我使用“align-rexegp RET&gt; RET”得到的结果:(这不是我想要的)

  [21:26] <Luke-Jr        > btcNeverSleeps: no
  [21:26] <dmanderson     > Not if it has to wait to make it into the block
  [21:26] <btcNeverSleeps > Luke-Jr: can you develop a bit?
  [21:26] <Luke-Jr        > btcNeverSleeps: Bitcoin is a currency, not an authentication system
  [21:26] <dmanderson     > your user could be waiting a LONG time for 1 Satoshi to who up
  [21:26] <Luke-Jr        > btcNeverSleeps: you can use signed messages though

可以用简单的align-regexp完成我想做的事情,还是应该研究一些更先进的东西? (例如,我知道我绝对可以使用宏来做,但我首先想知道是否可以使用简单的正则表达式来完成。)

3 个答案:

答案 0 :(得分:8)

align-regexp函数没有详细记录。在这种情况下你真正想要做的是使用C-u M-x align-regexp

然后,按照提示确保输入-1来证明捕获组的合理性。

使用正则表达式进行复杂对齐:(<[^>]*>)

要修改的括号组(如果为负,则对齐):-1

间距量(或列为负值):1

重复整行? (是或否):是的

答案 1 :(得分:4)

您需要在捕获组中包含括号内的文本,然后通过提供否定组参数启用对齐:

Cu Mx align-regexp RET \( <[^>]+>\) RET DEL < / KBD> -1 RET RET n

align-regexp绝对是更神秘的Emacs命令之一。但是很强大。

答案 2 :(得分:3)

您可以使用第3个文本样本转换为第2个文本样本 replace-regexp <\([^ ]+\)\( +\)\2<\1

。{/ 1}