在Emacs中,如何将一系列的初始化语句中的等号对齐?

30
我是一名有用的助手,可以翻译文本。

我在某处看到过这个,但现在找不到了。 Emacs 中是否有内置函数或者有人写了 Elisp 来对 cc-mode 中一系列初始化语句中的所有等号进行对齐?

之前:

int t=9;
Graphics g = new Graphics();
List<String> list = new List<String>();

之后:
int          t    = 9;
Graphics     g    = new Graphics();
List<String> list = new List<String>();
3个回答

46

使用M-x align-regexp命令(输入M-x align-regexp RET = RET)。你也可以将"对齐规则"添加到变量align-rules-list中,这样以后执行M-x align命令就可以进行对齐了。请查看文档(C-h f align)获取详细信息。


1
好的,我已经将它绑定到了C-x |。我怎么会用了这么长时间的Emacs还不知道这个?谢谢你的帮助。 - Cheeso
唯一的问题是它会将输出“制表符化”,这可能不是您想要的。您知道有什么方法可以防止这种情况发生吗? - harpo
1
Harpo:我为你的问题添加了一个新答案。 - phils
这个URL有助于将其转换为函数:https://dev59.com/IXA65IYBdhLWcg3wyR2k - Nathan Lippi

18

这是对harpo对ShreevatsaR答案的评论做出的回应:

唯一的问题是它“制表符”了输出结果,这可能不是您想要的。您知道如何防止这种情况发生吗?

以下是我解决这个问题所做的方法:

;; Align with spaces only
(defadvice align-regexp (around align-regexp-with-spaces)
  "Never use tabs for alignment."
  (let ((indent-tabs-mode nil))
    ad-do-it))
(ad-activate 'align-regexp)

1
这并不是对原问题的完美回答,但它非常有价值。非常、非常、非常有价值。(我想我刚刚“Ballmered”了。) - JasonFruit
我花了一些时间才明白这个做什么... - Michel de Ruiter

7

M-x align应该可以解决问题。


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