Emacs:清除缓冲区的快捷键是什么?

65

比如,Control-A(全选)接着按删除键?


一个相关的(常见的)问题:使用 esc 键清除 mini-buffer,可以在你的 init 中设置如下:(global-set-key (kbd "<escape>") 'keyboard-escape-quit) - silian-rail
7个回答

87

怎么使用:

M-x erase-buffer
你可以将它绑定到你想要的任何东西上。

3
我在我的 .emacs 文件中有这样的一行代码:(global-set-key (kbd "C-x <deletechar>") 'erase-buffer),它的作用是将快捷键 C-x <deletechar> 绑定到函数 erase-buffer 上。 - Pål GD
2
对于新用户,当第一次调用 M-x erase buffer 时,您将收到一个提示,说明它已被禁用,但您可以启用它。如果不确定此命令的确切作用,请建议首次使用 SPACE 选项运行它以查看发生了什么。 - Nathan

45

C-x h + del 键清除缓冲区。

注意: 这需要启用transient-mark-mode(默认情况下已启用)。


4
这个命令(或者 M-x erase-buffer)不会将缓冲区的内容添加到 kill ring 中,但是 C-x h C-w 会,并且在未启用瞬时标记模式时,C-x h C-w 也可以使用。 - nisetama

33
在 Emacs 中选择所有内容的方法是:

M-x mark-whole-buffer

C-x h

(从技术上讲,那是mark-whole-buffer)并且kill-region(杀死已标记的区域,现在是整个缓冲区)是:

C-w

如果你想删除区域但不将其复制到kill-ring中,可以使用

M-x delete-region

相反,如果你经常这样做,你会想要将“delete-region”绑定到一个键或键组合上。


8
这种解决方案和M-x erase-buffer的区别在于,这种解决方案会将删除的文本复制到kill-ring中。如果想要删除一个大文件,复制大量文本到kill-ring可能会很慢,这可能会非常烦人。如果使用browse-kill-ring.el,这种行为就更加令人讨厌了。 - Noah Sussman

6
这些宏是在以上答案的基础上构建的。要开始使用它们,将它们粘贴到您的 .emacs 文件中,然后重新启动 emacs 或者(在 .emacs 缓冲区中)输入 M-x eval-buffer。
(defun clear-buffer ()
  "clear whole buffer add contents to the kill ring"
  (interactive)
  (kill-region (point-min) (point-max))
  )

(defun clear-buffer-permenantly ()
  "clear whole buffer, contents is not added to the kill ring"
  (interactive)
  (delete-region (point-min) (point-max))
  )

1
erase-buffer会清除缓冲区,无论是否有缩小。这可能更或者不太理想。 - jpkotta
1
erase-buffer 不会将缓冲区的内容添加到 kill ring 中。 - nisetama

5

老一辈的人可能更喜欢称之为 hk 而不是 clear-buffer-permanently,并将其分配给怀旧的按键序列,方法如下:

(define-key esc-map "\^[hk" 'hk)

这是在Gnu TECO EMACS之前清除缓冲区的命令(ESC ESC wHole Kill)。

4

前往缓冲区开头,前往结尾(都设置标记),然后剪切:

M-< M-> C-w

2

没有捷径,但你可以定义一个快捷键... 点击此链接获取清空缓冲区的宏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接