在查看大文件时,Emacs有时会挂起。但(global-font-lock-mode -1)
的速度很快。
我正在使用Prelude的分支。
Emacs版本:24.3可可 系统:OS X 10.8.4
更新:我发现(setq jit-lock-defer-time 0.05)
是一种提高滚动速度的方法。
答案 0 :(得分:31)
为了帮助处理大文件,我已经安装了自己的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)
显然可以根据需要调整阈值。
答案 1 :(得分:16)
如果您需要处理非常大的文件,可以使用View Large Files程序包,该程序包允许“以块为单位查看,编辑和搜索大型文件”。在require
包之后用 M-x vlfi 打开大文件。
答案 2 :(得分:3)
我经常展开长行并按标签缩进(如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
和重新缩进代码。
答案 3 :(得分:0)
这可能是解决问题的办法
M-x外壳
然后
减去your_large_file.txt
您可以继续