查看大文件时,Emacs 有时会挂起。但它很快(global-font-lock-mode -1)
。
我正在使用 Prelude 的一个叉子。
Emacs 版本:24.3 可可系统:OS X 10.8.4
更新:我发现(setq jit-lock-defer-time 0.05)
是一种提高滚动速度的方法。
查看大文件时,Emacs 有时会挂起。但它很快(global-font-lock-mode -1)
。
我正在使用 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。
我通常展开长行并按标签缩进(如 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
它首先验证 XML 文件nxml-mode
,然后切换到fundamental-mode
.
我用正则表达式分割线,对于 XML 它:C-M-% >< RET >NL< RET !
.
在 Emacs 拆分长行之后 - 可以启用许多*-modes
并重新缩进代码。
这可能是技巧解决方法
Mx shell
然后
less your_large_file.txt
你可以继续