如果我在大文件上使用vi会怎样?


16

尽管没有指示,但我的一位同事使用vi查看了一个大文本文件(server.log 3.5 GB)。这填满了/ var / tmp并在服务器上引起了一些问题。

是什么原因造成的?为什么我们不应该对大文件使用vi?


3
vi(或vim就此而言)在大型文件上实在太慢了,如果行尾没有很多,甚至可能无法使用。此外,文件需要适合内存。使用less大文件,它的速度更快,往往足以读/看日志文件。
Marco

@Marco为什么不把它作为答案?
Bernhard

1
因为这不是问题的答案,而是一条评论,问题是“是什么原因造成的?为什么不对大文件使用vi?”
2013年

用我的答案看评论。
rɑːdʒɑ

Answers:


7

vi编辑缓冲区的默认目录(/ var / tmp)需要的空间大约等于正在使用的文件大小的两倍,因为vi使用多余的行来进行缓冲区操作。

如果/ var / tmp目录没有足够的空间用于编辑缓冲区(例如,您正在使用大文件,或者系统空间不足)

有时您可能会收到,您还将收到以下类似的错误消息

Not enough space in /var/tmp.

您可以在此处阅读有关如何解决此问题的信息:http : //kb.iu.edu/data/akqv.html


“ vi编辑缓冲区需要的空间大约等于正在使用的文件大小的两倍”源?
atripathi 2013年

1
很久以前,我从kb.iu.edu/data/akqv.html中阅读了内容。所以我把它给你
rɑːdʒɑ

20

Vim不是为大文件而设计的。它具有某些功能,会大大减慢用户体验。例如,它将文件加载到内存中,这基本上限制了编辑小于您的内存大小的文件。此外,语法高亮,交换文件和撤消等功能对于大型文件而言效率很低,甚至会使速度变慢。另一个问题是vim期望的行数不会太长。如果文件包含很少的换行符,则该字符vim将变得不可用。

话虽这么说,有些插件像vim-largefile可以更改特定设置,以便对大文件更有效,但是最后vim将永远是活泼的,当你在它扔几个GIBS。

最重要的是,不要vim在大文件上使用。如果要查看(与编辑相比)大文件,请使用less。如果要搜索模式,请使用斜线开始搜索模式:

/<pattern>  # forward search
?<pattern>  # backward search

如果要过滤输出,请使用“&”号:

&<pattern>

然后使用开始连续输出shift-f。您可以使用退出连续输出显示,ctrl-c并优化或取消过滤器图案或开始搜索。

要编辑大型文件,请使用诸如之类的工具sed,这些工具非常有效,并且为此目的而设计。

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.