查看大文件时如何提高emacs性能?

查看大文件时如何提高emacs性能?,emacs,Emacs,查看大文件时,Emacs有时会挂起。但是使用(全局字体锁定模式-1)时速度很快 我在用前奏曲的叉子 Emacs版本:24.3 系统:OSX10.8.4 更新:我发现(setq jit lock defer time 0.05)是一种提高滚动速度的方法。为了帮助处理大文件,我安装了自己的查找文件钩子,它打开基本模式(避免字体锁定),关闭撤消,并使缓冲区只读以避免任何意外更改(对大文件进行不必要的备份) 显然,可以根据您的需要调整阈值。如果您需要处理非常大的文件,您可以使用允许“查看、编辑和搜索大块

查看大文件时,Emacs有时会挂起。但是使用
(全局字体锁定模式-1)
时速度很快

我在用前奏曲的叉子

Emacs版本:24.3 系统:OSX10.8.4


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

为了帮助处理大文件,我安装了自己的
查找文件钩子
,它打开基本模式(避免字体锁定),关闭撤消,并使缓冲区只读以避免任何意外更改(对大文件进行不必要的备份)


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

如果您需要处理非常大的文件,您可以使用允许“查看、编辑和搜索大块大文件”的软件包。在
之后,需要
使用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))
(设置行号显示限制大文件警告阈值)
(setq行号显示限制宽度200)
(defun my--文件大()
“如果缓冲区太大,我的问题会导致性能问题。”
(<大文件警告阈值(缓冲区大小)))
(定义派生模式我的大文件模式基本模式“大文件”
“修复了Emacs中大型文件的性能问题。”
;;(setq缓冲区只读t)
(setq bidi显示重新排序零)
(jit锁定模式零)
(缓冲区禁用撤消)
(设置(将变量缓冲区设为本地“全局hl行模式”)为零
(设置(将可变缓冲区设为本地‘行号模式)为零)
(设置(将变量缓冲区设为本地“列号模式”)为零)
(添加到列表“魔法模式列表”(cons#“my--is file large#”my-large-file-mode))
请注意,我不使用
查找文件挂钩
作为
魔术模式列表
通常为空且具有优先级。如果我添加
查找文件挂钩
,它首先通过
nxml模式
验证XML文件,然后切换到
基本模式

我按正则表达式分割行,对于XML it:
C-M-%>NL


在Emacs拆分长行后-可以启用许多
*-模式
和重新缩进代码。

这可能是一种巧妙的解决方法
M-x外壳
然后
减少你的大文件.txt

你可以继续

你已经回答了你自己的问题。字体锁定很慢。而且,
按字面意思查找文件
很好,因为它将你置于基本模式。@abo abo那么你的建议是禁用
字体锁定模式
?@abo abo abo abo我的大文件大约有8000行。我认为这是正常的。我通常使用
按字面意思查找文件
。它不仅禁用了字体锁定,还禁用了主模式。当我看到文件大小很大时,我可以从dired调用它。速度会受到很多东西的影响,很难说。但是8000行并不是“太大”谢谢。但是我也想编辑这个文件。你可以看到我上面对一个“大”文件的描述。@ GoFangSU当然,只需取出<代码>缓冲区只读< /代码>的设置……很高兴它只适用于<代码>(Limun-Mead - 1)。
检查大小是否足够后,如果不够,则添加
(字体锁定模式-1)
将是。它将处理所有大于指定值的图像和PDF,以便在基本模式下打开。此答案有帮助,但对我来说,禁用
bidi显示重新排序是错误的enough@gavenkoa,感谢您提供此配置。我尝试了此配置,但当我使用
(全局显示行号模式)时,它无法正常工作
在我的init.el中。我还尝试将其更改为
(添加hook'find file hook#'display-line-numbers-mode)
这样它就不会干扰您的配置,但仍然不起作用。您能建议一个更好的方法吗?谢谢,我现在正在使用SpaceMac。当打开一个大文件时,它会在小缓冲区中警告我。
less
想要一个比
m-x shell
m-x term
提供的哑终端更好的终端。
(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))