Emacs - 如何使PgDn键跳转到文本末尾

3

我对Emacs还比较陌生,不知道如何让PageDown键在最后一页向缓冲区末尾发送光标,而不只是在小型缓冲区中打印“End of Buffer”。

如果保留这种行为有某种好处,那么这些信息也会很有趣和有用。


在提问之前我就知道这个,但它似乎将标记移动到缓冲区末尾。我只是想调整PgDn,以便在我到达缓冲区末尾时它能够按照我的期望工作。 - user1017523
我的意思是,你可以一直使用PgDn直到接近末尾,然后使用M->滚动到底部。PgDn绑定了一个scroll命令,而不是跳转命令,因此当缓冲区的末尾已经在视野中时,它不会再滚动更远,这是有道理的。 - Thomas
2个回答

4

scroll-error-top-bottom设置为非nil值,可以通过M-x customize-variable RET scroll-error-top-bottom或通过在init.el中添加以下行来完成:

(setq scroll-error-top-bottom t)

C-h v scroll-error-top-bottom 中可以得到:

在发生滚动错误之前将光标移动到缓冲区的顶部/底部。 当值为 nil 时,如果没有更多可滚动的内容,只会发出错误信号。 当值为 t 时,如果没有更多可滚动的内容,光标将移动到缓冲区的开头或结尾(取决于滚动方向)。 如果光标已经在该位置上,则会发出错误信号。

这是不带 CUA 或键重映射的标准解决方案。


1
模式提供了命令,可以执行此操作。有几种使用方法:
  1. 激活 cua-selection-mode,不仅可以获得这种滚动行为,还可以在CUA中获得大量改进。 我建议使用此解决方案。 只需将以下内容放入您的init文件(.emacs.emacs.d/init.el):

    (cua-selection-mode +1)
    
  2. 仅从cua导入滚动行为:

    (require 'cua-base)
    (global-set-key [remap scroll-up]   'cua-scroll-up)
    (global-set-key [remap scroll-down] 'cua-scroll-down)
    

谢谢您的快速回复!不幸的是,我对emacs还很陌生,之前没有尝试过Cua模式。 - user1017523
@mellowmaroon 你应该知道,CUA模式会改变除了滚动之外的按键绑定。 - user355252
1
@lunaryorn cua-selection-mode 仅更改滚动和矩形选择行为,其他所有内容都保持不变。但你是对的:完整的CUA模式几乎会更改所有内容(这就是为什么我不建议使用它)。 - François Févotte
@Francesco 噢,抱歉,我错过了 cua-selection-mode 部分。忘记我的评论吧... - user355252

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