6

我经常在编辑文本或代码时遇到我想插入一个矩形的空格来对齐的情况,但我不知道要插入的空格的确切数量。

例如,考虑以下(非常人为的)片段:

void *var = (void *)typedVar;
void *otherVar = voidStarOtherVar;
int intVar = x*y;
int intVar2 = y*z;

在默认的 C 模式下,M-x align结果会更好:

void *var      = (void *)typedVar;
void *otherVar = voidStarOtherVar;
int   intVar   = x*y;
int   intVar2  = y*z;

但是,假设我想要的对齐方式(出于某种原因)是这样的:

void *var      = (void *)typedVar;
void *otherVar =         voidStarOtherVar;
int   intVar   =         x*y;
int   intVar2  =         y*z;

我知道的唯一方法是M-x string-rectangle在底部的三行中输入确切的空格数。

但是,我不想(void *)在输入空格之前计算字符数,因此插入“交互式”矩形字符串会很好。例如,我在这种交互模式下键入一个空格,我看到它立即反映在文本中。我进入另一个空间,它被插入。通过这种方式,我可以交互地将文本对齐到我想要的位置。

有没有内置的方法来实现这一点?或者,如果做不到这一点,我可以以某种方式创建这个功能吗?

4

3 回答 3

7

开放矩形可能对您的示例有用:

C-x r o' Insert blank space to fill the space of the region-rectangle (开放矩形')。这会将区域矩形的先前内容推到右侧。

因此,您标记所需的矩形,此功能会将内容推送到矩形的右侧。

于 2012-10-19T19:54:02.027 回答
2

是的。内置模式是cua-selection-mode

这是工作的视频cua-modecua-selection-mode仅激活它的矩形选择方面。

您也可以使用 获得此功能iedit,但这是一个外部包。它的主要目的是编辑镜像。

于 2012-10-19T14:49:02.173 回答
2

已经提出的另一种替代方法是multiple-cursorsgithub 上,它具有高度交互性且非常有趣。有一个崇高的Emacs Rocks!在 YouTube 上报道它的一集。

于 2012-10-19T20:55:29.593 回答