【问题标题】:How to copy/select a whole file or buffer in Emacs?如何在 Emacs 中复制/选择整个文件或缓冲区?
【发布时间】:2014-04-27 23:42:28
【问题描述】:

是否有任何命令可以在 Emacs 中选择整个文件内容?

例如,Control+a 在 Notepad、Notepad++ 等中选择文件的全部内容。

我可以使用鼠标选择整个内容,但是对于大文件来说很不方便。我找到了基本的 Emacs 命令 herehere,但找不到我要找的东西。

【问题讨论】:

标签: emacs keyboard-shortcuts selection


【解决方案1】:

C-x h 将选择整个缓冲区。

您可以使用内置的帮助系统在 Emacs 中搜索帮助。

C-h f 将寻求特定功能的帮助。在这种情况下,您可以搜索 whole-buffer 以找到 mark-whole-buffer

其他感兴趣的帮助命令是:

  • C-h m 显示当前模式的可用命令
  • C-h v 获取有关变量的帮助
  • C-h k 查找绑定到哪些功能键
  • C-h w 查看为给定函数定义了哪些键绑定
  • C-h ? 查看还有哪些其他选项可用。

请注意,C-x h 只会突出显示所有文本。要实际复制选定的文本,您必须使用 C-w 进行剪切 (kill-region) 或使用 M-w 进行复制 (kill-ring-save)。

【讨论】:

  • 我试过 C-x h 但它不起作用。它将光标放在文件的开头并说标记集。但是,如果我尝试粘贴,则它不会粘贴文件内容。
  • 您可能没有启用瞬态标记模式。做 M-x 瞬态标记模式。这将显示您选择的区域。执行 C-x h 后,请确保使用 C-w 进行复制。
  • 谢谢。在我做了 M-x 瞬态标记模式之后它就可以工作了。再次感谢您的快速回复。
  • Sajib Mahmood:请注意,C-x h 应该仍然可以工作,无论该模式如何;您只是不会看到标记的区域。所以C-x h M-w 应该总是复制缓冲区的内容。此外,transient-mark-mode 默认启用,因此您可能想弄清楚为什么在您的配置中禁用它。
  • 好点。此外,21.4 是九岁。更新将非常值得考虑。
【解决方案2】:

我使用 CUA,所以我不喜欢 mark-whole-buffer,因为它不使用临时区域。

经过一番折腾,我终于使用保存到函数的键盘宏实现了这一点:

  • 定义一个选择整个缓冲区的宏
  • 运行kmacro-name-last-macro 为宏命名
  • 使用insert-kbd-macro 编写脚本
  • 现在您可以将其复制到您的配置中并将其映射到一个键,例如C-a

【讨论】:

    【解决方案3】:

    复制和选择是相关但不同的操作。文件和缓冲区也是相关的,但不同。

    复制 缓冲区,请考虑使用jac.el。它处理“复制”和处理模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2012-08-05
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      相关资源
      最近更新 更多