作为一名测试工程师,我经常会有一些意大利面条代码如下:
int *const cpe = &n; assert(42 == *cpe);
int *const cpf = &cn; assert(42 == *cpf);
int *const cpg = pcn; assert(42 == *cpg);
int *const cph = cpcn; assert(42 == *cph);
对于美学,我想将它们对齐在" ; "定义的列中,如下所示:
int *const cpe = &n; assert(42 == *cpe);
int *const cpf = &cn; assert(42 == *cpf);
int *const cpg = pcn; assert(42 == *cpg);
int *const cph = cpcn; assert(42 == *cph);
emacs中有没有办法做到这一点? (我知道 M-x align 但它并没有像所希望的那样做一个干净的工作。) 希望该方法也适用于","太
答案 0 :(得分:4)
(add-to-list 'align-rules-list
'(c-assignment1
(regexp . "[=;]\\(\\s-*\\)")
(mode . '(c-mode))
(repeat . t)))
如果您编写此代码,那么简单M-x align
也可以。
答案 1 :(得分:2)
在这种特殊情况下,您可以在区域处于活动状态时在assert
上对齐:
M-x align-regexp assert RET
一般来说,这里的答案类似于my answer to your other question的第一部分:
C-u M-x align-regexp RET ;\(\s-*\) RET RET RET n
将转为
int *const cpe = &n; assert(42 == *cpe);
int *const cpf = &cn; assert(42 == *cpf);
int *const cpg = pcn; assert(42 == *cpg);
int *const cph = cpcn; assert(42 == *cph);
到
int *const cpe = &n; assert(42 == *cpe);
int *const cpf = &cn; assert(42 == *cpf);
int *const cpg = pcn; assert(42 == *cpg);
int *const cph = cpcn; assert(42 == *cph);
可以使用相同的技术来对齐逗号。只需使用;
替换正则表达式中的,
。