Emacs,交互式插入矩形字符串

时间:2012-10-19 13:57:16

标签: emacs elisp

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

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

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 *)中的字符数,因此最好有一个“交互式”矩形字符串插入。例如,我在这种交互模式下键入一个空格,我看到它立即反映在文本中。我进入另一个空间,然后插入。通过这种方式,我可以交互式地将文本对齐到我想要的位置。

有没有内置的方法来实现这一目标?或者,如果不这样做,我能以某种方式创建此功能吗?

3 个答案:

答案 0 :(得分:7)

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

  

C-x r o' Insert blank space to fill the space of the region-rectangle (开放矩形')。这推动了之前的内容   区域 - 矩形在右边。

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

答案 1 :(得分:2)

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

这是cua-mode cua-selection-mode的工作。 iedit仅激活矩形选择方面。

您也可以使用{{1}}获得此功能,但这只是video。它的主要目的是编辑镜子。

答案 2 :(得分:1)

已经提供的另一种替代方案是github multiple-cursors,这是一种高度互动且非常有趣的方式。在YouTube上有一个崇高的Emacs Rocks!剧集。