尽管我们被告知不要这样做,但我的一位同事使用 vi 查看了一个大文本文件(server.log 3.5 GB)。这填满了 /var/tmp 并在服务器上引起了一些问题。
这是什么原因造成的?为什么我们不应该将 vi 用于大文件?
Mar*_*rco 21
Vim 不是为大文件设计的。它具有某些功能会大大降低用户体验。例如,它将文件加载到内存中,这基本上限制了编辑小于内存大小的文件。此外,语法高亮、交换文件和撤消等功能在处理大文件时效率非常低,甚至会减慢速度。另一个问题是vim
预计排队不会太长。如果文件包含很少的换行符,vim
则无法使用。
话虽说,有喜欢的插件VIM-largefile这种变化特别设置为与大文件更有效率,但最终vim
将永远是活泼的,当你在它扔几个GIBS。
底线是,不要vim
在大文件上使用。如果要查看(与编辑相反)大文件,请使用less
. 如果要搜索模式,请使用斜杠开始搜索模式:
/<pattern> # forward search
?<pattern> # backward search
Run Code Online (Sandbox Code Playgroud)
如果要过滤输出,请使用与号:
&<pattern>
Run Code Online (Sandbox Code Playgroud)
然后使用 开始连续输出shift-f。您可以退出连续输出显示ctrl-c并优化或取消您的过滤器模式或开始搜索。
要编辑大文件,请使用诸如 之类的工具sed
,它们非常高效且专为此目的而设计。
vi 编辑缓冲区的默认目录 (/var/tmp) 需要的空间大约等于您正在处理的文件大小的两倍,因为vi 使用额外的行进行缓冲区操作。
如果 /var/tmp 目录没有足够的空间用于编辑缓冲区(例如,您正在处理一个大文件,或者系统空间不足
有时您可能会收到,您也会收到以下错误消息
Not enough space in /var/tmp.
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关如何解决此问题的信息:http : //kb.iu.edu/data/akqv.html