我想在emacs中选择或突出显示一个块而不使用鼠标,而是像vim的可视模式一样从键盘上进行选择。从键盘执行此操作的最简单方法是什么?
Answers:
如果我正确地理解了这个问题,那么最初与矩形区域无关。
C-Spc
在当前位置标记。
无论光标在其后的何处,都将“选择”最后一个标记和当前位置之间的文本(您可以通过激活来突出显示该transient-mark-mode
标记,但这也意味着当您不想突出显示时必须删除标记)。
您可以使用以下命令在该区域上进行操作:
C-w
。。杀死区域。这将删除该区域并将其放入杀死环。
C-y
。。扬克。这将插入kill环中的最后一个片段。
M-y
。。循环杀死戒指。之后C-y
,立即用终止环中的其他片段替换了被拉扯的部分。
M-w
。。将区域保存到杀死环中。类似于C-w
,但不会删除。
这只是基本用法。标记还有其他用途。我推荐本教程(C-h t
)。
C-s
C-r
在这种情况下通常用于查找区域的结束/起点。(在宏中特别有用。)
M-x indent-region
。
indent-region
效果很好,但是c-indent-line-or-region
(绑定到Tab键的那个)效果不好。最后一个功能不适用于标记的区域,而是作用于选定的区域,即突出显示的区域,就像您用鼠标选择的区域一样。
C-Spc
在标记处打两次来做到这一点。这会临时激活瞬态标记模式(直到您取消(使用C-g
))。然后移动该点以查看所选区域的出现。
尽管C-SPC
从您的位置开始标记是一种常用的标记方法,但是通常有更快速/更简便的方法不涉及明确地移动到起点/终点...
M-h
-标记段落的重要手段。“段落”通常意味着一段代码。
C-M-h
和C-M-@
—分别用于标记六边形和defun。这适用于多种语言,而不仅仅是lisps。
按住Shift键-移动时突出显示的另一种巧妙方式。例如,M-S-f
选择整个单词。这是
shift-select-mode
,并且在Emacs 24+中默认启用。在某些(非Chiclet)键盘上,您应该可以按住C-S-
一个小指。
您可以反复按其中任何一个以扩大选择范围。
(注意:C-g
在实验过程中经常用于取消标记。)
有一些附加软件包可以改善选择区域和事物的能力。这些都可以很好地配合使用,并适合不同的用例。全部使用!
Expand-Region:Expand region通过语义单位增加所选区域。只需按住键,直到选择所需的内容。 C-=
是推荐的绑定方式。打几次以获得您所需要的。
易杀:使用M-w
和助记符来选择不同类型的事物,例如单词,六边形,列表等。
Zop-to-Char:类似于zap-to-char,但提供了不错的选择和其他菜单驱动的动作。
diff-hl:突出显示未提交的更改区域。使用diff-hl-mark-hunk
选择/标记大块。
要扩展Edin Salkovic的答案,如果使用CUA模式,则可以用来开始可视块选择。CUA文档中描述了许多控制块选择的捷径。
mark-defun