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

tde*_*ton 6 emacs elisp

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

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

void *var = (void *)typedVar;
void *otherVar = voidStarOtherVar;
int intVar = x*y;
int intVar2 = y*z;
Run Code Online (Sandbox Code Playgroud)

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

void *var      = (void *)typedVar;
void *otherVar = voidStarOtherVar;
int   intVar   = x*y;
int   intVar2  = y*z;
Run Code Online (Sandbox Code Playgroud)

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

void *var      = (void *)typedVar;
void *otherVar =         voidStarOtherVar;
int   intVar   =         x*y;
int   intVar2  =         y*z;
Run Code Online (Sandbox Code Playgroud)

我知道这样做的唯一方法是M-x string-rectangle在底部三行,并输入确切的空格数.

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

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

Jua*_*cho 7

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

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

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