如何在Emacs中选择或高亮显示块?

如何在Emacs中选择或高亮显示块?,emacs,selection,highlight,Emacs,Selection,Highlight,我想在emacs中选择或高亮显示一个块,而不使用鼠标,而是像vim的视觉模式那样通过键盘来选择或高亮显示。从键盘执行此操作的最简单方法是什么?查看emacs中的区域矩形 简而言之,您可以像往常一样使用Control-Space开始选择,然后使用Control-x r k终止区域,并使用Control-x r y粘贴(或拖动)终止块。使用Control-Space设置标记并移动光标 瞬态标记模式将为您突出显示所选内容。M-x瞬态标记模式 默认情况下,您可以使用自定义项设置Emacs以启用此模式。M

我想在emacs中选择或高亮显示一个块,而不使用鼠标,而是像vim的视觉模式那样通过键盘来选择或高亮显示。从键盘执行此操作的最简单方法是什么?

查看emacs中的区域矩形

简而言之,您可以像往常一样使用Control-Space开始选择,然后使用Control-x r k终止区域,并使用Control-x r y粘贴(或拖动)终止块。

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

瞬态标记模式将为您突出显示所选内容。M-x
瞬态标记模式


默认情况下,您可以使用自定义项设置Emacs以启用此模式。M-x
customize选项
RET
transient mark mode

参见文章:,特别是评论部分。另请参见标题为“CUA矩形支架”的章节。还有一个问题。

如果我理解正确的话,它本来不是关于矩形区域的

C-Spc
在当前位置放置一个标记

无论光标在何处,最后一个标记和当前位置之间的文本都是“选中的”(您可以通过激活
瞬态标记模式
来突出显示该文本,但这也意味着当您不想突出显示时,必须删除标记)

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

C-w
。杀伤区。这将删除该区域并将其放入压井环中。
C-y
。猛拉。这将插入压井环的最后一个片段。
M-y
。循环压井环。紧接着
C-y
,这将用压井环中的其他片段替换拉断的部分。
M-w
。将区域保存到杀伤环中。类似于
C-w
,但不删除


这只是基本用法。标记还有其他用途。我推荐本教程(
C-h t
)。

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

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

。。。如果您正在使用Ubuntu,而C-spc不适合您:您需要清除IBus“next input method”键绑定,如中所示

运行
ibus设置
并更改 将“下一个输入法”添加到其他内容(或通过 单击“…”按钮,然后单击“删除”按钮)


引用自某个SO问题。

尽管
C-SPC
是开始标记某个SO问题的常用方法 无论你的观点是什么,通常都有一些更快/更简单的方法无法解决问题 明确移动到起点/终点

内置选择快捷方式
  • M-h
    -标记段落的重要手段。“一段” 通常意味着一段代码

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

  • 按住shift键-另一种在拍摄过程中突出显示的巧妙方法 移动例如,
    M-S-f
    选择转发整个单词。这是 , 并且它在Emacs 24+中默认启用。在一些(非小鸡)上 键盘上,您应该能够用一个键按住
    C-S-
    小指

您可以反复按其中任何一个按钮来增加所选内容

还有一些特殊的标记方式:

  • C-x h
    -标记整个缓冲区

  • C-x SPC
    -进入矩形标记模式

(注意:经常使用
C-g
来取消标记,同时 (正在试验。)

附加组件 有几个附加包可以改进选择区域和 东西。这些都很好地配合在一起,适合不同的用途 案例。全部使用

  • : “展开区域”按语义单位增加选定区域。只是 继续按该键,直到它选择您想要的内容<代码>C-=
是一个 建议对其进行绑定。点击几次就可以得到你想要的 需要

  • :使用
    M-w
    和 选择不同类型事物的助记符,如单词、sexps、, 名单等

  • : 像zap到char,但是提供了很好的选择和其他 菜单驱动的操作

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

  • :用按键(
    M-i
    )选择点处的符号。然后你可以用它做其他事情,比如复制、搜索、跳转、替换等等


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

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

    这不会杀死区域,它会杀死矩形,这与我的经验中vim的视觉模式有很大不同。值得注意的是,
    C-s
    C-r
    在这种情况下通常用于查找区域的结束/开始。(在宏中特别有用)嗯,这是非常好的命令,但是。。。如何选择标记的区域?毕竟我仍然需要它,即在标记之间缩进代码。最后一个标记和当前点(即光标所在位置)之间的区域就是所选区域。只需运行
    M-x缩进区域
    @Svante No,它未被选中。虽然
    缩进区域
    工作正常,但是
    c-indent-line-or-region
    (绑定到tab键的区域)却不正常。最后一个函数不在标记的区域上工作,而是在