28

查看大文件时,Emacs 有时会挂起。但它很快(global-font-lock-mode -1)

我正在使用 Prelude 的一个叉子。

Emacs 版本:24.3 可可系统:OS X 10.8.4

更新:我发现(setq jit-lock-defer-time 0.05)是一种提高滚动速度的方法。

4

4 回答 4

32

为了帮助处理大文件,我安装了自己的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)

显然,您可以根据需要调整阈值。

于 2013-08-19T15:08:11.603 回答
18

如果您需要处理非常大的文件,您可以使用View Large Files包,它允许“在大文件中查看、编辑和搜索大块文件”。require打包后打开大文件M-x vlfi

于 2013-08-19T16:48:52.560 回答
4

我通常展开长行并按标签缩进(如 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-hooksmagic-mode-alist如果我添加find-file-hooks它首先验证 XML 文件nxml-mode,然后切换到fundamental-mode.

我用正则表达式分割线,对于 XML 它:C-M-% >< RET >NL< RET !.

在 Emacs 拆分长行之后 - 可以启用许多*-modes并重新缩进代码。

于 2015-02-11T14:47:50.787 回答
-1

这可能是技巧解决方法
Mx shell
然后
less your_large_file.txt
你可以继续

于 2019-02-16T10:42:30.153 回答