如何在Emacs中对齐函数参数?

9

假设我有以下内容:

func(arg1, arg2, arg3...)
func(longargarg1, longerarg2, arg3,...)
...

如何对齐参数,使其像以下示例一样?
func(arg1       , arg2      , arg3...)
func(longargarg1, longerarg2, arg3,...)
...

我可以使用M-x align-regex来对第一个参数进行对齐,但我无法想出一个适合对齐其余参数的正则表达式。如果答案还能处理一些带有逗号的字符串参数,那就更好了。
1个回答

19

选择地区,然后:

C-u M-x align-regexp RET ,\(\s-*\) RET RET RET y
正则表达式的意思是将逗号与其后的空格对齐。括号组的默认值为1,表示在\(\s-*\)处插入空格;调整空格的默认值为1,表示在最长扩展后有一个空格,并且要重复应用到整行中。

太酷了!我甚至不知道还有一个更复杂的align-regexp版本。自己注意点:要阅读文档...但是如果逗号在双引号中,则是否有忽略它们的更好的正则表达式版本?(emacs似乎没有类似于前瞻/后顾类型的正则表达式) - polyglot
你可以编写自己的对齐程序,使用语法表来确定正则表达式中哪些逗号“计数”。但我不确定如何“轻松”地实现这一点。 - jrockway

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