Emacs重新选择区域,就像Vim快捷方式'gv'那样

时间:2009-06-24 22:26:42

标签: emacs

在vim中,可以通过'gv'命令调用visual block,以便可以轻松应用多个命令。 (例如,注释掉,然后缩进,然后do_something_fun)。

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

我很好奇是否有一个Emacs内置命令可以一次性完成。

6 个答案:

答案 0 :(得分:11)

如果“瞬态标记”模式关闭,则该区域始终处于活动状态。如果它打开(听起来像你的情况),你可以将mark-even-if-inactive设置为非零,以允许区域命令在区域未突出显示时起作用。

但是,请注意,您还可以使用C-u C-SPC循环回到之前的标记位置 - 这将弹出标记环。一旦你回到你想去的地方,C-x C-x将重新点亮你想要的区域。 (可能需要花一些时间来玩这个功能才能感受到它,但这就是我现在无法从Emacs切换的原因。)

答案 1 :(得分:10)

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

答案 2 :(得分:2)

听起来你正在寻找二级选择,即使区域可能会发生变化,也会保留。 (它会保持不变,直到你移动它。)

请参阅:

答案 3 :(得分:1)

此外,窄到区域(CTRL-x n n)将每个命令从那时开始应用到该区域 - 您不会伤害缓冲区的其余部分,甚至不会显示。完成编辑后,加宽(CTRL-x n w)以返回整个缓冲区。  CMM

答案 4 :(得分:0)

由于这里的答案以及其他类似的SO问题对我没有帮助(CUA模式,Emacs 24,不仅仅是缩进),我继续搜索,最后在此reselect-last-region中找到了{{1}} {3}}。这对我来说就像是一种魅力 - 对于仍然来到这里的其他人来说也是如此。

答案 5 :(得分:0)

如果您使用evil-mode,只需像在vim中一样按gv