此处"标题评论"指:
/* Program Name: Foo */
/* Author: Jane Doe */
/* Date: 06/29/2014 */
/* Rev: 1.0 */
棘手的部分是:
*/
:
后对齐内容。提前致谢。
答案 0 :(得分:3)
您可以通过两次align-regexp
调用来执行此操作,但输入有点棘手:
/* Program Name: Foo */
/* Author: Jane Doe */
/* Date: 06/29/2014 */
/* Rev: 1.0 */
选择您要修改的区域,然后使用前缀参数执行第一个align-regexp
:
C-u M-x align-regexp RET :\(\s-*\) RET RET RET n
此版本的align-regexp
使用与冒号字符匹配的正则表达式,后跟任意数量的空格。然后我们
这应该留给你
/* Program Name: Foo */
/* Author: Jane Doe */
/* Date: 06/29/2014 */
/* Rev: 1.0 */
现在,C-x C-x
交换点和标记,重新选择文字,然后再做align-regexp
。这个不需要前缀参数:
M-x align-regexp RET \*/ RET
这个版本要简单得多。我们提供了一个与关闭注释指示符*/
匹配的正则表达式,转义星号。
你应该完成!最终结果如下:
/* Program Name: Foo */
/* Author: Jane Doe */
/* Date: 06/29/2014 */
/* Rev: 1.0 */
修改强>
您应该能够编写一个函数来自动执行此过程。我不是elisp专家,但这似乎可以解决问题:
(defun my-align-c-comment-block ()
(interactive)
(when (use-region-p)
(align-regexp (region-beginning) (region-end) ":\\(\\s-*\\)")
(exchange-point-and-mark)
(align-regexp (region-beginning) (region-end) "\\(\\s-*\\)\\*/")))