该exchange-point-and-mark
命令已绑定到C-x C-x,但我想不出任何使它值得使用这种突出绑定的用例。
如何使用exchange-point-and-mark
改进我的编辑技术?
该exchange-point-and-mark
命令已绑定到C-x C-x,但我想不出任何使它值得使用这种突出绑定的用例。
如何使用exchange-point-and-mark
改进我的编辑技术?
Answers:
我可以想到两种情况:重新激活区域,并调整区域的大小。
在执行一些将其禁用的命令或执行一些设置标记并移动点而不激活该区域的操作之后,我通常会使用此绑定来重新激活该区域。
例如,执行Cs并向前搜索某些内容。点击RET退出搜索,然后按Cx Cx标记从开始搜索的位置开始的所有内容。
当我想在StackExchange答案中包含一些示例elisp时,我做了很多事情:
另一种情况是标记区域并要扩展/缩小区域时。在这种情况下,能够跳到该区域的“另一端”,移动它然后跳回是很方便的。如果该区域已经处于活动状态,则单击Cx Cx将使其保持活动状态,从而允许您移动任一端。
询问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
。)
其他答案集中在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-x
,C-x C-x
再次快速了解一下。
(而且,如果您想知道,是的,我们中有些人仍然更喜欢在transient-mark-mode
禁用状态下使用Emacs 。)