修复以在emacs中顺利滚动?

Her*_*itz 38 windows emacs

我发现自己想要使用Emacs,主要是因为org-mode,但是我在习惯滚动的滚动行为时遇到了很多麻烦.我知道这是Emacs的一个众所周知的问题/怪癖,并且在滚动时有各种方法可以减少急动.但到目前为止我没有尝试过任何事情.

我见过的主要建议是(setq scroll-conservatively 10000)或者使用smooth-scrolling.el中提供的更全面的修复.我认为这些对我来说都可以正常工作,但是当我按住向上箭头和向下箭头键重复向上或向下滚动时,两者都会失败.当我这样做时屏幕冻结,我看到滚动边距中的滚动指示条向上或向下移动.在我停止按住向上箭头或向下箭头键之前,屏幕不会刷新.

如果我反复按向上箭头或向下箭头,那么我的行为接近我想要的行为,即屏幕平滑滚动,光标键不会重置到屏幕中间.但这是不可取的,因为(1)它需要重复的按键和(2)我认为滚动速度比我应该能够获得更好的解决方案的速度慢.

按住光标键的问题在我看来是向上箭头或向下箭头的重复速度是如此之快以至于它触发emacs以停止屏幕刷新直到释放按键.我想知道对我来说可能的解决方法是在密钥重复率或在emacs中调用下一个/上一个行函数的速率中添加一些延迟.

我没有看到其他人报告这个问题,我想知道其他人是否经历过同样的行为.什么是解决问题的最佳方法,这样我可以按住向上/向下箭头键,并且重复速率足够慢,以便屏幕不会冻结?

更新:以上行为是我在Win7/64上运行emacs时得到的.在同一台机器上,当我在运行Ubuntu 10.04的VirtualBox VM中运行emacs时,即使按住光标键,滚动也没有问题.

Ken*_*Goh 45

我有同样的问题!尝试了所有滚动*设置,按住箭头时没有帮助.但是在gnu.emacs.help上找到了这个,最终起作用了(对我来说至少):

(setq redisplay-dont-pause t)

这就是我现在在.emacs中所拥有的:

(setq redisplay-dont-pause t
  scroll-margin 1
  scroll-step 1
  scroll-conservatively 10000
  scroll-preserve-screen-position 1)
Run Code Online (Sandbox Code Playgroud)

  • +1; 在相当强大的Win7 x64机器上遇到与OP相同的问题; 此修复使滚动可以容忍(虽然不如在启用了smooth-scrolling.el的其他平台上那样好) (2认同)
  • 我还需要 (setq-default scroll-up-aggressively 0.01 scroll-down-aggressively 0.01) 使事情变得合理(见 http://zhangda.wordpress.com/2009/05/21/customize-emacs-automatic-scrolling-并停止光标在我移动时跳跃/) (2认同)
  • 我注意到有关“redisplay-dont-pause”的文档自 24.5 起已过时。但是,我不确定为什么。 (2认同)

R. *_*lon 7

scroll-conservatively有帮助,但我也喜欢一个边距,以便我可以看到即将出现的卷轴 - 它为我保留了屏幕上的背景.几年来,这些设置对我和各种各样的计算机都很有用:

(setq scroll-conservatively 10)
(setq scroll-margin 7)
Run Code Online (Sandbox Code Playgroud)


sea*_*128 5

试试这个:

;; scroll one line at a time (less "jumpy" than defaults)
(setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ; one line at a time
(setq mouse-wheel-progressive-speed nil)            ; don't accelerate scrolling
(setq-default smooth-scroll-margin 0)
(setq scroll-step 1
      scroll-margin 1
      scroll-conservatively 100000)
Run Code Online (Sandbox Code Playgroud)

并使用pager.el.

;; Pager
(require 'pager-default-keybindings)
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:)享受!