如何在Emacs中选择或突出显示某个块?

时间:2009-03-18 10:17:20

标签: emacs selection highlight

我想在不使用鼠标的情况下选择或突出显示emacs中的块,但是可以通过键盘像vim的可视模式一样。从键盘上最简单的方法是什么?

9 个答案:

答案 0 :(得分:64)

如果我正确理解了这个问题,那么最初并不是关于矩形区域。

C-Spc 会在当前位置添加标记。

无论你的光标在哪里,最后一个标记和当前位置之间的文字都被“选中”(你可以通过激活transient-mark-mode来强调这一点,但这也意味着你必须删除标记不想突出显示。

您可以使用以下命令对该区域进行操作:

C-w 。 。杀死地区。这将删除并将该区域置于杀戮戒指中 C-y 。 。扬克。这将插入kill ring中的最后一个片段 M-y 。 。循环杀死戒指。在C-y之后,立即用杀戮戒指中的其他片段替换被猛拉的部分。
M-w 。 。保存区域成杀环。与C-w类似,但不会删除。

这只是基本用法。马克也有其他用途。我推荐教程( C-h t )。

答案 1 :(得分:58)

看看emacs中的区域矩形。

简而言之,您通过 Control - Space 开始选择,然后使用 Control - x Control - x r y

答案 2 :(得分:25)

Emacs 24.4现在具有矩形标记模式。 C-x空间来调用它。

答案 3 :(得分:16)

请参阅文章:"Working with rectangular selections",尤其是评论部分。另请参阅标题为“CUA矩形支持”的CUA mode documentation部分。还有nice video on vimeo

答案 4 :(得分:7)

虽然C-SPC是开始标记内容的常用方法 无论你的观点是什么,通常都有更快捷/更容易的方法 涉及明确移动到开始/结束点......

内置选择快捷方式

  • M-h - 标记段落的重要方法。 A"段落" 通常意味着代码块。

  • C-M-h C-M-@ - 标记性别和defuns , 分别。这适用于多种语言,而不仅仅是lisps。

  • 按住班次 - 另一种光滑的方式来突出显示 运动。例如,M-S-f选择了一个完整的单词。这是 的 shift-select-mode 下, 它在Emacs 24+中默认启用。在一些(非chiclet) 键盘,你应该能够用一个单独按住C-S- 小指。

您可以反复按下其中任何一个以增加选择。

(注意:经常使用C-g取消标记 试验。)

附加组件

有一些附加软件包可以改善选择区域和 的东西。这些都很好地一起玩,适合不同的用途 案例。全部使用它们!

  • <强> Expand-Region : 展开区域按语义单位增加所选区域。只是 按住键直到它选择你想要的东西。 C-=是一个 建议绑定它。打几次就可以得到你的东西 需要。

  • Easy-Kill :使用M-w和 选择不同类型的东西的助记符,如单词,性别, 列表等

  • <强> Zop-to-Char : 像 zap-to-char ,但提供了很好的选择和其他 菜单驱动的行动。

  • diff-hl :突出显示未提交的已更改区域。使用diff-hl-mark-hunk选择/标记大块。

答案 5 :(得分:6)

使用 Control - Space 设置标记并移动光标。

transient-mark-mode会突出显示您的选择。 M - x transient-mark-mode

您可以使用自定义设置Emacs以默认启用此模式。 M - x customize-option RET transient-mark-mode

答案 6 :(得分:1)

...如果您使用Ubuntu并且 C-spc 不适合您:您需要清除IBus“下一个输入法”键绑定,如

  

运行ibus-setup并更改密钥绑定   “下一个输入法”到别的东西(或完全删除它   单击“...”按钮,然后单击“删除”按钮。

an answer引用SO问题。

答案 7 :(得分:0)

要扩展Edin Salkovic的答案,如果您使用CUA模式,您可以用来开始视觉区块选择。有很多快捷方式可以控制documentation of CUA中描述的块选择。

答案 8 :(得分:0)

使用Emacs 25,只需按 C - Space ,然后将光标移动到要突出显示/选择您感兴趣的文本区域的任何位置。之后,您可能需要以下命令:

  • C - w 用于切割。
  • M - w 进行复制。
  • C - y 进行粘贴。