查看大文件時,Emacs有時會掛起。但它與(global-font-lock-mode -1)
快速。如何在查看大文件時提高emacs性能?
我正在使用Prelude的分支。
Emacs的版本:24.3可可 系統:OS X 10.8.4
更新:我發現(setq jit-lock-defer-time 0.05)
是提高滾動速度的方法。
查看大文件時,Emacs有時會掛起。但它與(global-font-lock-mode -1)
快速。如何在查看大文件時提高emacs性能?
我正在使用Prelude的分支。
Emacs的版本:24.3可可 系統:OS X 10.8.4
更新:我發現(setq jit-lock-defer-time 0.05)
是提高滾動速度的方法。
爲了幫助處理大文件,我安裝了我自己的find-file-hook
,它打開基本模式(避免字體鎖定),關閉撤消,並使緩衝區只讀,以避免任何意外更改(進行不必要的備份大文件)。
(defun my-find-file-check-make-large-file-read-only-hook()
"If a file is over a given size, make the buffer read only."
(when (> (buffer-size) (* 1024 1024))
(setq buffer-read-only t)
(buffer-disable-undo)
(fundamental-mode)))
(add-hook 'find-file-hook 'my-find-file-check-make-large-file-read-only-hook)
明顯調整閾值,因爲你認爲合適。
如果您需要處理非常大的文件,可以使用View Large Files包,該包允許「以大塊文件查看,編輯和搜索塊」。在require
之後打開包含大文件的文件M-x vlfi。
謝謝,我會嘗試。 – goofansu
我通常通過標籤(如HTML,XML,JSON)展開長行和縮進。
爲了使這樣的操作可能我補充一下:
(setq line-number-display-limit large-file-warning-threshold)
(setq line-number-display-limit-width 200)
(defun my--is-file-large()
"If buffer too large and my cause performance issue."
(< large-file-warning-threshold (buffer-size)))
(define-derived-mode my-large-file-mode fundamental-mode "LargeFile"
"Fixes performance issues in Emacs for large files."
;; (setq buffer-read-only t)
(setq bidi-display-reordering nil)
(jit-lock-mode nil)
(buffer-disable-undo)
(set (make-variable-buffer-local 'global-hl-line-mode) nil)
(set (make-variable-buffer-local 'line-number-mode) nil)
(set (make-variable-buffer-local 'column-number-mode) nil))
(add-to-list 'magic-mode-alist (cons #'my--is-file-large #'my-large-file-mode))
請注意,我不使用find-file-hooks
作爲magic-mode-alist
通常是空的,並具有優先權。如果我添加find-file-hooks
它首先通過nxml-mode
驗證XML文件,然後切換到fundamental-mode
。
我用正則表達式分隔線,對於XML它:C-M-% ><RET>NL< RET !
。
Emacs拆分長行之後 - 可以啓用許多*-modes
和重新縮進代碼。
這個答案有幫助,但對我來說,禁用「bidi-display-reordering」就足夠了 – packet0
您已經回答了您自己的問題。字體鎖很慢。另外,'find-file-literally'很好,因爲它可以讓你處於基本模式。 –
@abo-abo那麼你的建議是禁用'font-lock-mode'? – goofansu
@ abo-abo我的大文件大約有8000行。我認爲這很正常。 – goofansu