我经常遇到编辑文本或代码的情况,我想插入一个空格矩形来对齐事物,但我不确切地知道要插入的空格数。
例如,请考虑以下(非常人为的)代码段:
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 *)
中的字符数,因此最好有一个“交互式”矩形字符串插入。例如,我在这种交互模式下键入一个空格,我看到它立即反映在文本中。我进入另一个空间,然后插入。通过这种方式,我可以交互式地将文本对齐到我想要的位置。
有没有内置的方法来实现这一目标?或者,如果不这样做,我能以某种方式创建此功能吗?
答案 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!剧集。