在ESS/Emacs中,如何在使用C-c C-j或C-c C-r后让R进程缓冲区滚动到底部?

18
在使用 C-c C-j 或 C-c C-r(将行或区域发送到正在运行的 R 进程)在 .R 文件中评估代码块时,在 ESS 中,如何使 R 缓冲区自动向下滚动,以便在评估区域后光标位于底部,即提示符处?
谢谢。
3个回答

27

有很多方法可以实现。在我的.emacs.d中,我有以下设置:

  (setq comint-prompt-read-only t)
  (setq comint-scroll-to-bottom-on-input t)
  (setq comint-scroll-to-bottom-on-output t)
  (setq comint-move-point-for-output t)

你可能也对这段代码感兴趣,它最初来自Felipe Csaszar,可以让你做你所要求的事情,还有其他一些不错的功能。


3
(setq comint-prompt-read-only t) 可能不是个好主意。我曾经在我的 .emacs 文件中加入了一整块命令(从 emacswiki 上复制而来),但有时 (setq comint-prompt-read-only t) 会破坏缓冲区与下属 ESS 进程之间的交互,迫使我终止 R 并重新开始会话。 - Leo Alekseyev
1
我也发现只读模式可能会导致ESS出现问题。请注意。 - Vince
我也很久以前就自己删除了。 - Kieran

1
请查看emacs文档中的auto-scrolling。对于我的部分:
将scroll-down-aggressively设置为1即可完成工作。

在Python控制台上对我有效,尚未在R控制台上尝试。 - Nisba

-1

DJJ的解决方案对于Spacemacs中的ESS和polymode非常有效。

首先,在配置文件(例如~/.spacemacs)的defun dotspacemacs/user-config()部分中添加(scroll-down-aggressively 1)

然后,使用SPC , e r评估该行或重新启动配置SPC f e d

Emacs 27会抱怨上述行,因为“符号的函数定义为空”,所以我必须按照以下方式更改它才能实现相同的结果:

(setq scroll-down-aggressively 0.01)

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