Emacs重新选择区域,就像Vim快捷方式“gv”一样

Emacs重新选择区域,就像Vim快捷方式“gv”一样,emacs,Emacs,在vim中,可视块可以通过“gv”命令调用,以便可以轻松应用多个命令。例如,注释掉,然后缩进,然后做一些有趣的事情 在Emacs中,如何实现这一点? [C-xC-x]仅在当前光标位置停留在前一块结束的位置时工作。 如果上一个块被更改,最接近的是通过“指向寄存器”和“跳转到寄存器” 我只是好奇是否有一个Emacs内置命令可以一次性完成这项任务。如果我正确理解您的要求,那么您不需要做任何事情。当您在emacs中选择一个区域时,它将保持选中状态,直到您选择一个新区域为止。因此,您可以选择该区域,然后执

在vim中,可视块可以通过“gv”命令调用,以便可以轻松应用多个命令。例如,注释掉,然后缩进,然后做一些有趣的事情

在Emacs中,如何实现这一点? [C-xC-x]仅在当前光标位置停留在前一块结束的位置时工作。 如果上一个块被更改,最接近的是通过“指向寄存器”和“跳转到寄存器”


我只是好奇是否有一个Emacs内置命令可以一次性完成这项任务。

如果我正确理解您的要求,那么您不需要做任何事情。当您在emacs中选择一个区域时,它将保持选中状态,直到您选择一个新区域为止。因此,您可以选择该区域,然后执行任意数量的操作。

如果瞬态标记模式处于关闭状态,则该区域始终处于活动状态。如果它听起来像是您的情况,您可以将mark(即使不活动)设置为非零,以允许区域命令在区域未高亮显示时工作


但是,请注意,您也可以使用C-u C-SPC循环返回以前的标记位置-这将弹出标记环。一旦你回到你想要的地方,C-x C-x将重新照亮你想要的区域。可能需要花一点时间来使用这个功能,但这就是为什么我现在不能从Emacs中切换出来。

也缩小到区域CTRL-x n n从那时起将每个命令都应用到该区域-你不会伤害缓冲区的其余部分,它甚至不会显示。编辑完成后,加宽CTRL-x n w以返回整个缓冲区。
CMM听起来像是在寻找二次选择,即使区域可能发生变化,二次选择也会保持不变。在你移动它之前,它不会动

见:

Emacs手册,节点二次选择 Emacs wiki页面 图书馆:
因为这里的答案和其他类似的SO问题对我没有帮助,CUA模式,Emacs 24,不仅严格缩进,我继续搜索,最终找到了在这里定义的重新选择最后一个区域。这对我来说是一种魅力——希望对仍然来到这里的其他人也是如此。

如果你使用邪恶模式,只需在vim中按gv即可。

啊,为什么要从vim转到emacs?我不想成为编辑辩论的宗教选择。两年前,我改用Emacs,我喜欢它。你能更详细地描述一下你的意思吗?我对vim不够熟悉,不知道您想要什么。使用Emacs 23.0.93.1。谢谢,但它没有像你提到的那样起作用。我正在使用CTRL-SPC选择resion作为开始,当前位置作为结束。区域在选择后高亮显示。应用命令可使此远光消失。我假设这会取消选择区域。@Raymond尝试执行另一个操作。该区域不再高亮显示,但仍处于选中状态。它不再工作。使用最新的Emacs和-q-无飞溅选项测试以下内容:选择一些行,M-;若要注释掉这些行,则M-,以调用replace,并查看替换操作不限于以前选择的行。因此,为了重新选择这些行,需要在M-%之前按C-x C-x。当CUA模式打开时,这将是C-u C-x C-x而不是C-x C-x。Jisang Yoo:请注意,区域中的替换仅适用于瞬态标记模式下的活动区域,即当该区域高亮显示时。因此,这个答案从未应用于具有此约束的命令;但它过去和现在对其余部分都完全有效。在大多数情况下,您的交换点和标记提示无疑是重新激活/突出显示该区域的最佳方式。考虑到这一点,Emacs在这方面似乎比vi更灵活。然而,C-x C-x在大多数情况下(如OP所述)应该足够了。