如何打开性能良好的大文件?


27

我有几GB的服务器日志文件(在Ubuntu上)。当我尝试打开它们时,在文件加载到Vim时,终端会锁定一分钟左右。有没有一种减少时间的方法,例如通过设置Vim来按需加载文件,或通过其他方法?


4
为什么不使用less
2015年

1
您打算以任何方式操作文件,还是只想查看它们?
200_success

1
我想编辑文件。
peter-b


很可能我将永远被禁止访问该网站,但我不得不说:当涉及到巨大的文件时,Emacs就是这项工作的工具。:-)
toro2k 2015年

Answers:


25

首先,尝试加载没有插件或vimrc的vim:

vim -u NONE gargantuan.txt

如果这实际上要快得多,那么您可能需要突出显示语法,折叠,插入插件或进行其他大部分时间。尝试关闭vimrc中的内容(并禁用插件),直到找到罪魁祸首。

还要确保set ft= syn=syntax off

如果这没有帮助,则可能是因为您的太长导致了问题。尝试set nowrap关闭换行。


1
vim -U NONE -N gargantuan.txtnocompatible运行以“ viiMproved”模式运行的vim时将执行相同的操作,而不是尝试与旧的“ vi”兼容
ecerulm

15

Vim是用于此工作的错误工具:您应使用诸如more或的传呼机less

如果您坚持使用编辑器,请尝试改编自Vim Wiki的以下示例

augroup LargeFile
        let g:large_file = 10485760 " 10MB

        " Set options:
        "   eventignore+=FileType (no syntax highlighting etc
        "   assumes FileType always on)
        "   noswapfile (save copy of file)
        "   bufhidden=unload (save memory when other file is viewed)
        "   buftype=nowritefile (is read-only)
        "   undolevels=-1 (no undo possible)
        au BufReadPre *
                \ let f=expand("<afile>") |
                \ if getfsize(f) > g:large_file |
                        \ set eventignore+=FileType |
                        \ setlocal noswapfile bufhidden=unload buftype=nowrite undolevels=-1 |
                \ else |
                        \ set eventignore-=FileType |
                \ endif
augroup END

可以lessmore也可以更改我的文件吗?
马丁·图尔诺伊

3
他们当然不能。日志不打算被编辑。
romainl 2015年

5
sed是为此目的而发明的。您确定要进行哪些更改(表示为替代),然后运行sed以执行更改。这也适用于流(即,由于正在产生的文件内容没有止境)。
reinierpost

我有别名lessmoremanvimpagergithub.com/rkitover/vimpager
Alex Kroll

5

LargeFile.vim插件旨在使更快地编辑大型文件。参见http://www.drchip.org/astronaut/vim/index.html#LARGEFILE

从页面:

允许以关闭事件,撤消,语法突出显示等为代价,以更快的速度编辑大型文件(默认:100MB +为“大”)。也可以在vim.sf.net上对其进行排名。

根据手册,该插件仅在安装后才能工作。您可以通过将更g:LargeFile改为整数MB 来设置截止值,该整数表示默认为20MB(与项目描述为100的情况相反)

该插件也提供命令:UnLarge:Large:Large!以禁用,重新启用,或力使能(对于小文件)分别对当前加载的文件。


2

我听说关闭语法突出显示可以帮助您:

:syntax off

启用任何种类的折叠功能也会产生巨大的效果
craigp

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.