“交换标记”的作用是什么?


Answers:


19

我可以想到两种情况:重新激活区域,并调整区域的大小。

在执行一些将其禁用的命令或执行一些设置标记并移动点而不激活该区域的操作之后,我通常会使用此绑定来重新激活该区域。

例如,执行Cs并向前搜索某些内容。点击RET退出搜索,然后按Cx Cx标记从开始搜索的位置开始的所有内容。

当我想在StackExchange答案中包含一些示例elisp时,我做了很多事情:

  1. 标记我要复制的代码。
  2. 按Cu Cx TAB键可将代码缩进4个空格。这样,它将在网站上以代码形式呈现。此步骤将禁用该区域。
  3. 按Cx Cx重新激活该区域,然后按Mw将其复制到剪贴板,以便将其粘贴到我的StackExchange答案中。

另一种情况是标记区域并要扩展/缩小区域时。在这种情况下,能够跳到该区域的“另一端”,移动它然后跳回是很方便的。如果该区域已经处于活动状态,则单击Cx Cx将使其保持活动状态,从而允许您移动任一端。


17

询问Emacs:C-h r i exchange-point-and-mark RET或者更好C-h r i C-x C-x RET。这将带您到下面显示的信息。

这是Emacs手册的节点设置标记在回答您的问题时说的:

C-x C-x当您对点的位置感到满意但想要移动区域的另一端(标记所在的位置)时,此功能很有用。使用C-x C-x第二次,如果必要的话,会将关口在其原来的位置点后面的新位置。通常,如果标记处于非活动状态,则此命令首先在最后设置的位置重新激活标记,以确保该区域保持突出显示状态。但是,如果使用前缀参数调用它,则会使标记处于非活动状态,并且该区域不会突出显示;您可以使用此方法以类似于的方式跳至标记C-u C-<SPC>

这就是它在节点“ 禁用瞬态标记”中所说的:

transient-mark-mode关闭[ ]可将Emacs切换到另一种操作模式:

  • 使用诸如C-<SPC>或的命令设置标记C-x C-x不会突出显示该区域。因此,您无法通过查看标记的位置来辨别;你要记住

    解决此问题的通常方法是设置标记,然后在您忘记它在哪里之前不久使用它。您也可以使用来检查标记C-x C-x的位置,该操作会交换点和标记的位置-请参阅“ 设置标记”

暂时标记模式关闭时,您可以使用C-<SPC> C-<SPC>或临时激活它C-u C-x C-x

和:

C-u C-x C-x 交换点和标记,激活标记并暂时启用瞬态标记模式,直到下次禁用标记为止。(这是带有前缀参数的C-x C-x命令exchange-point-and-mark。)


8

由于某些操作已将其删除而丢失了选择,因此我想使用它,并且我想恢复选择。一种这样的情况是:

  1. 选择矩形。
  2. 杀了它。
  3. 撤消杀死矩形。
  4. C-x C-x 将选择恢复为矩形。

当我想要对选定区域进行临时备份并尝试复制时,例如,我想进行一些查找和替换,但是我想不出办法时,就会发生这种情况它不会破坏要保留的某些文本,因此我稍后将其从副本中还原。


8

其他答案集中在C-x C-x何时transient-mark-mode活动的有效性上。但是C-x C-x早于transient-mark-mode,并且独立于它有用。

的主要作用C-x C-x是交换点和标记。当您在单个缓冲区中编辑两个点并且由于某种原因不想拆分当前窗口时,此功能很有用。进行一些编辑,设置标记,移至缓冲区中的其他点,进行一些编辑,C-x C-x在原处C-x C-x进行一些编辑,进行一些其他的编辑,广告恶作剧。(如果您不打算回到第二点,C-u C-SPC可能会更直观。在Emacs手册中查找标记环。)

transient-mark-mode被禁用,C-x C-x还有一个重要的目的:它可以让你找出该区域。 C-x C-xC-x C-x再次快速了解一下。

(而且,如果您想知道,是的,我们中有些人仍然更喜欢在transient-mark-mode禁用状态下使用Emacs 。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.