代码之家  ›  专栏  ›  技术社区  ›  Herbert Sitz

修复在emacs中获得平滑滚动?

  •  37
  • Herbert Sitz  · 技术社区  · 14 年前

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

    更新:上面的行为是我在Win7/64上运行emacs时得到的。在同一台机器上,当我在运行Ubuntu10.04的VirtualBox虚拟机中运行emacs时,即使按住光标键,也可以正常滚动。

    7 回复  |  直到 13 年前
        1
  •  51
  •   Ken Goh    14 年前

    我也有同样的问题!尝试了所有的滚动-*设置,按下箭头时没有帮助。但我发现了这个 gnu.emacs.help 最终成功了(至少对我来说):

    (setq redisplay-dont-pause t)

    (setq redisplay-dont-pause t
      scroll-margin 1
      scroll-step 1
      scroll-conservatively 10000
      scroll-preserve-screen-position 1)
    
        2
  •  8
  •   R. P. Dillon    14 年前

    scroll-conservatively 有帮助,但我也喜欢一个边距,这样我就可以看到什么作为一个滚动-它保持在屏幕上的上下文为我。几年来,这些设置在各种各样的计算机上都很适用:

    (setq scroll-conservatively 10)
    (setq scroll-margin 7)
    
        3
  •  5
  •   seagle0128    10 年前

    试试这个:

    ;; 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)
    

    ;; Pager
    (require 'pager-default-keybindings)
    

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

        4
  •  2
  •   Jérôme Radix    14 年前

    并非所有平台都会遇到这种行为。对于存在问题的平台,我建议使用以下设置:

    (setq scroll-conservatively 0)
    

    每次滚动到另一页时,它都会将光标放在屏幕中间。

        5
  •  2
  •   Community CDub    8 年前

    请注意,这里没有提到这一点,但我发现对于较大的文件,我最终遇到了一些恼人的延迟,滚动会落后于字体更新。

    这依赖于重新绘制而不是 所以

    看到了吗 this question 详情。


    (setq
     scroll-conservatively 1000                     ;; only 'jump' when moving this far
     scroll-margin 4                                ;; scroll N lines to screen edge
     scroll-step 1                                  ;; keyboard scroll one line at a time
     mouse-wheel-scroll-amount '(6 ((shift) . 1))   ;; mouse scroll N lines
     mouse-wheel-progressive-speed nil              ;; don't accelerate scrolling
    
     redisplay-dont-pause t                         ;; don't pause display on input
    
     ;; Always redraw immediately when scrolling,
     ;; more responsive and doesn't hang!
     fast-but-imprecise-scrolling nil
     jit-lock-defer-time 0
     )
    
        6
  •  1
  •   Thomas Kappler    14 年前

    我对亚当·斯皮尔斯的作品很满意 smooth-scrolling

        7
  •  0
  •   ychaouche    8 年前

    通过将此添加到my.emacs,我只能使用M-Up/M-Down滚动一行:

    (global-set-key (kbd "M-<down>") (lambda () (interactive) (scroll-up   1)))
    (global-set-key (kbd "M-<up>")   (lambda () (interactive) (scroll-down 1)))