如何select或突出显示Emacs中的块?

我想在没有鼠标的情况下select或突出显示emacs中的块,而是像vim的可视化模式那样从键盘上select或突出显示块 从键盘上做到这一点最简单的方法是什么?

看一下emacs中的region-rectangle。

简而言之,就像平常一样用ControlSpace开始select,然后用Controlx r k杀死区域,并用Controlx r y粘贴(或者抽出 )被杀死的区块。

如果我正确地理解这个问题,那不是原来的矩形区域。

C-Spc在当前位置上留下了印记。

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

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

Cw 。 。 杀死区域。 这删除并把该地区放入杀戒。
Cy 。 。 扬克。 这插入杀死戒指的最后一个片段。
My 。 。 周期杀戒指。 在Cy之后,立即用杀死环中的其他片段代替被抽出的部分。
Mw 。 。 将区域保存为杀戒。 像Cw一样,但不会删除。

这只是基本的用法。 商标也有其他用途。 我推荐教程( Ch t )。

请参阅文章: “使用矩形select” ,特别是注释部分。 另请参阅CUA模式文档的标题为“CUA矩形支持”的部分。 Vimeo上还有一个不错的video 。

Emacs 24.4现在有矩形标记模式。 Cx空间来调用它。

使用ControlSpace来设置标记并移动光标。

transient-mark-mode将突出显示您的select。 Mx transient-mark-mode

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

尽pipeC-SPC是一种常用的方法,无论你的观点如何都可以开始标记,但是通常有更快捷/更简单的方法,不需要明确移动到开始/结束点。

内置select快捷键

  • Mh标记一个段落的重要手段。 “段落”通常意味着一个代码块。

  • CMhCM-@分别用于标记sexps和defuns 。 这适用于几种语言,而不只是说谎。

  • 按住shift键 – 另一种stream畅的方式在移动过程中突出显示。 例如, MSfselect转发一个单词。 这是shift-select-mode ,它在Emacs 24+中默认启用。 在一些(非chiclet)键盘上,你应该能够按住CS-一个小指。

您可以重复按下其中任何一项来增加select。

(注意:试验时经常使用Cg取消标记。)

附加组件

有几个附加软件包可以改善select区域和事物。 这些都很好地结合在一起,适合不同的用例。 全部使用它们!

  • 展开区域 :展开区域通过语义单元增加选定区域。 只要按住键直到它select你想要的。 C-=是它的推荐绑定。 打了几次,以得到你所需要的。

  • 轻松杀戮 :使用Mw和助记符来select不同types的东西,如文字,性别,名单等

  • Zop-to-Char :与zap-to-char类似,但提供了很好的select和其他菜单驱动的操作。

…如果你使用Ubuntu和C-spc不适合你:你需要清除IBus的“下一个input法”键盘绑定,如

运行ibus-setup并将“下一个input法”的键绑定更改为其他名称(或者通过单击“…”button然后单击“删除”button完全删除它)。

引用从一个SO问题的答案 。

要扩大Edin Salkovic的答案,如果使用CUA模式,可以使用开始一个视觉块select。 在CUA文档中描述的控制块select有很多快捷方式。