2010-09-02 70 views
34

我發現自己想要使用Emacs,主要是因爲組織模式,但是我很難習慣滾動的滾動行爲。我知道這是Emacs的一個衆所周知的問題/怪癖,並且有多種方式可以在滾動時減少干擾。但是,我迄今爲止所做的任何嘗試都沒有發生。修復在emacs中順利滾動?

我看到的主要建議是(setq scroll-conservatively 10000)或者使用smooth-scrolling.el中更全面的修補程序。我認爲這兩種方式對我來說都可以工作,但是當我按住向上和向下箭頭鍵以反覆向上或向下滾動時,都會失敗。當我這樣做時,屏幕凍結,我看到滾動頁邊上的滾動指示條向上或向下移動。屏幕不會刷新,直到我停止按住向上箭頭或向下箭頭鍵。

如果我反覆按向上箭頭或向下箭頭,那麼我的行爲接近我想要的,即屏幕平滑滾動,並且光標鍵不會重置到屏幕中間。但這是不可取的,因爲(1)它需要重複的按鍵和(2)我認爲滾動的速度比我應該能夠得到更好的解決方案的速度慢。

按住光標鍵的問題在我看來似乎是向上箭頭或向下箭頭的重複速度如此之快,它會觸發emacs停止屏幕刷新,直到釋放鍵。我想知道對我來說可能的解決方法是在key-repeat速率中添加一些滯後時間,或者在emacs中調用下一個/上一個行函數的速率。

我還沒有看到這個報告是其他人的問題,我想知道其他人是否經歷過相同的行爲。什麼是解決問題的最佳方法,所以我可以按住向上/向下箭頭鍵並具有足夠慢的重複速率,以便屏幕不會凍結?

更新:上述行爲是當我在Win7/64上運行emacs時得到的。在運行Ubuntu 10.04的VirtualBox VM中運行emacs的同一臺機器上,即使按住光標鍵,滾動也不會有問題。

+0

'滾動conservatively'的值大的工作來解決這個對我來說...也許你的電腦比你的鍵盤慢? :) – 2010-09-02 21:08:13

+0

Trey - 謝謝,我想知道是否可能是這種情況。所以看來我需要一些進一步的步驟來平滑滾動。我的電腦不是怪物機器,但我不會說它慢;這是一款配備奔騰SU4100,雙核1.3GHz芯片和4GB內存的筆記本電腦。 – 2010-09-02 21:23:49

+0

請問,你能告訴我們,如果你在Windows上有emacs,Un * x,它是否在像gnome這樣的桌面環境或GUI(屏幕)之外的終端窗口(-nw)中? – 2010-09-03 09:17:35

回答

40

我有同樣的問題!嘗試所有的滾動*設置,按住箭頭時沒有幫助。但是,(至少對我來說)發現了這個在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) 
+2

+1;在相當強大的Win7 x64機器上遇到與OP相同的問題;此修復使滾動容許(雖然不如其他平臺啓用smooth-scrolling.el時好) – 2010-12-30 22:26:56

+1

謝謝!剛剛在此主題中注意到您的建議,確實對我有用。 – 2011-02-27 23:58:30

+1

我還需要(setq-default scroll-up-aggressively 0.01 scroll-down-aggressively 0.01)使事情合理(請參閱http://zhangda.wordpress.com/2009/05/21/customize-emacs-automatic-滾動和停止最光標從跳-周圍-AS-I - 移動 - 它/) – 2013-05-13 17:28:28

6

scroll-conservatively有幫助,但我也喜歡保證金,這樣我就可以看到即將滾動的內容 - 它爲我保留了屏幕上下文。這些設置對我來說在幾年內對各種計算機運行良好:

(setq scroll-conservatively 10) 
(setq scroll-margin 7) 
+0

謝謝,但我已經嘗試過使用不同的滾動保留值和滾動保證金值,但他們沒有解決問題。如果我每次向上或向下移動時分別按下光標鍵,滾動就足夠平滑,但如果按住光標鍵,則屏幕凍結,而滾動指示器顯示通過文件移動的位置。屏幕不會刷新,直到我拿掉鑰匙。 – 2010-09-02 22:38:16

+0

是的,我注意到你在你的帖子中說過...我已經在GNU Emacs中使用了這些設置,從運行Ubuntu的Atom上網本到運行OS X的Core 2 Duo以及工作中的四核Windows桌面。 ..你使用的是什麼品牌和Emacs的構建? – 2010-09-02 22:41:55

+0

我在LENNART-69DE564(已修補)的2009-11-03的64位Windows 7上運行此操作系統:GNU Emacs 23.1.50.1(i386-mingw-nt6.1.7600)。我必須檢查,但我確定我在其他計算機上有相同的行爲,其中包括原子上網本和其他幾個筆記本。 – 2010-09-02 22:45:01

2

在所有平臺上都沒有遇到此問題。對於那些造成問題的平臺,我會建議使用此設置:

(setq scroll-conservatively 0) 

它把光標在屏幕上的每個滾動到另一頁時間的中間。

+2

這是所有平臺的默認設置,我想。問題是它甚至沒有真正滾動,當你到達底部時,屏幕只跳了半頁。也許多年來一直使用emacs的人會接受這種方式,但這與幾乎所有其他編輯人員都有所不同。其他文本編輯器(以及其他應用程序,如瀏覽器和文字處理器)將滾動。爲了使緩衝窗口突然向上移動半個屏幕是令人不安和不友好的。 – 2010-09-03 16:57:53

1

正如rpdillon的建議,我對Adam Spires的smooth-scrolling非常滿意。我認爲它值得自己回答。

+0

我也嘗試了smooth-scrolling.el,正如我在原文中所說的那樣。它對我來說不比保守解決方案更好。 – 2010-09-03 16:58:40

+0

對不起,我忽略了這一點。 – 2010-09-06 08:48:00

4

試試這個:

;; 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.el。

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

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

0

我可以用M-向上/ M-下只有一條線通過增加這對我的.emacs滾動:

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

注意,這是沒有提及任何地方在這裏,但我找到了更大的文件我最終遇到了一些令人不快的滯後,滾動將在後面進行字體更新。

這依賴於重繪不是因此慢,系統在其更新後太慢。

有關詳細信息,請參閱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 
)