是否有任何编辑器可以编辑多个千兆字节的文本文件,也许只需一次将一小部分加载到内存中即可?Vim似乎不能处理它=(
是否有任何编辑器可以编辑多个千兆字节的文本文件,也许只需一次将一小部分加载到内存中即可?Vim似乎不能处理它=(
Answers:
如果你是在* nix(假设你要修改的文件只有部分(而很少)),你可以分割的文件(使用split
命令),单独进行编辑(使用awk
,sed
或类似的东西)和之后,你将它们连接起来完成。
cat file2 file3 >> file1
Ctrl-C将停止文件加载。如果文件足够小,您可能很幸运已经加载了所有内容,并杀死了所有后续加载步骤。使用此技巧时,请验证是否已加载整个文件。
Vim可以很好地处理大型文件。我刚刚编辑了一个3.4GB的文件,删除了行等。请记住三点:
:115355
将直接使您进入第115355行,对于大文件来说,这要快得多。Vim似乎在每次加载行缓冲区时都从头开始扫描,按住Ctrl-F来浏览文件似乎在文件末尾变得非常慢。注–如果由于按Ctrl-C而使Vim实例处于只读状态,则Vim可能没有将整个文件加载到缓冲区中。如果发生这种情况,保存它只会保存缓冲区中的内容,而不是整个文件。您可能会迅速选择a G
来跳到最后,以确保文件中的所有行都在那里。
可能是导致它阻塞的插件。(语法突出显示,折叠等)
您可以在没有插件的情况下运行vim。
vim -u "NONE" hugefile.log
这是极简主义,但至少会为您提供惯用的振动效果。
syntax off
是另一个明显的例子。修剪您的安装并获取所需资源。您将了解它的功能以及是否需要通过其他方式完成任务。
我尝试这样做,主要是在需要对SQL转储进行一些小的更改时,使用大约1 GB的文件。我在Windows上,这让我很痛苦。这是非常困难的。
显而易见的问题是“为什么需要?” 我可以从不得不多次尝试的经验中告诉您,您可能真的想尝试寻找另一种方法。
你是怎么做到的?我有几种方法可以做到。有时我可以通过vim或nano打开文件,并且可以使用它们。那是一个非常艰难的痛苦,但它确实有效。
如果这样不起作用(如您的情况),则只有几种选择。您可以编写一个小程序来进行所需的更改(例如,搜索和替换)。您可以使用可能能够执行的命令行程序(也许可以使用sed / awk / grep / etc来完成?)
如果这些方法不起作用,您总是可以将文件拆分为多个块(类似于拆分是显而易见的选择,但是您可以使用头/尾来获取所需的零件),然后编辑需要它的零件,稍后再组合。
不过请相信我,尝试寻找另一种方法。
我正在使用Win7 x64上的vim 7.3.3和Charles Campbell的LargeFile插件来处理多千兆字节的纯文本文件。它真的很好。
希望你说对了。
过去,我使用此工具http://csved.sjfrancke.nl/打开了3 gig文件。