如何编辑多GB的文本文件? Vim不起作用=(

时间:2009-05-26 01:32:52

标签: vim text text-editor

是否有任何编辑器可以编辑多GB的文本文件,可能只是一次只将小部分加载到内存中?它似乎不像Vim可以处理它=(

15 个答案:

答案 0 :(得分:140)

Ctrl-C将停止文件加载。如果文件足够小,你可能已经很幸运地加载了所有内容并且刚刚杀死任何后加载步骤。使用此提示时,请验证是否已加载整个文件。

Vim可以很好地处理大文件。我刚刚编辑了一个3.4GB的文件,删除了行等。要记住三件事:

  1. 按Ctrl-C:Vim尝试最初读取整个文件,执行语法高亮显示和文件中的行数等操作.Ctrl-C将取消此枚举(以及语法高亮显示),它将只加载屏幕上显示的内容。
  2. Readonly:当文件太大而无法创建时,Vim可能会以只读方式启动。文件复制以执行编辑。我不得不w!保存文件,这是花费最多时间的时间。
  3. 转到第一行:键入:115355将直接转到第115355行,这对于那些大文件来说要快得多。 Vim似乎每次加载缓冲线时都从头开始扫描,按住Ctrl-F扫描文件似乎在接近结束时变得非常慢。
  4. 注意 - 如果您的Vim实例因为按Ctrl-C而处于只读状态,则Vim可能无法将整个文件加载到缓冲区中。如果发生这种情况,保存只会保存缓冲区中的内容,而不是整个文件。您可以快速查看G以跳到最后以确保文件中的所有行都在那里。

答案 1 :(得分:67)

它可能是导致它窒息的插件。 (语法高亮,折叠等。)

你可以在没有插件的情况下运行vim。

vim -u "NONE" hugefile.log

这是极简主义但它至少会给你你习惯的vi动作。

syntax off

是另一个显而易见的问题。修剪您的安装并获取您需要的内容。您将了解它的功能以及是否需要通过其他方式完成任务。

答案 2 :(得分:66)

如果你在* nix上(假设你必须只修改文件的一部分(很少)),你可以拆分文件(使用split命令),单独编辑它们(使用{{1完成之后,将它们连接起来。

。},awk或类似的东西
sed

答案 3 :(得分:18)

@Al pachio用split + vim解决方案给出的答案略有改进你可以用glob读取文件,有效地使用文件块作为缓冲区,例如

$ split -l 5000 myBigFile
xaa
xab
xac
...

$ vim xa*
#edit the files

:nw  #skip forward and write
:n!  #skip forward and don't save 

:Nw  #skip back and write
:N!  #skip back and don't save

答案 4 :(得分:13)

您可能需要查看此VIM plugin,以便在加载大型文件时为了提高速度而禁用某些vim功能。

答案 5 :(得分:8)

我试图这样做,主要是当我需要对SQL转储进行一些小改动时,文件大约为1 GB。我在Windows上,这是一个很大的痛苦。这非常困难。

显而易见的问题是“为什么你需要?”我可以告诉你不必一次尝试这个经验,你可能真的想要找到另一种方式。

那你怎么做的?我有几种方法可以做到。有时我可以通过vim或nano来打开文件,我可以使用它们。这是一个非常艰难的痛苦,但它确实有效。

如果不起作用(如您的情况),您只有几个选项。您可以编写一个小程序来进行所需的更改(例如,搜索和替换)。您可以使用可能能够执行此操作的命令行程序(也许可以使用sed / awk / grep / etc来完成?)

如果这些不起作用,你可以随时将文件拆分成块(类似split的东西是显而易见的选择,但你可以使用head / tail来获取你想要的部分),然后编辑部分(s)需要它,并在以后重新组合。

相信我,试着找另一种方式。

答案 6 :(得分:6)

我认为十六进制编辑器处理大文件是相当普遍的。在Windows上,我使用HxD,声称处理最多8 EB(80亿千兆字节)的文件。

答案 7 :(得分:4)

我在Win7 x64上使用vim 7.3.3和LargeFile plugin by Charles Campbell来处理多GB的纯文本文件。它的效果非常好。

我希望你说得对。

答案 8 :(得分:2)

哇,从来没有设法让vim窒息,即使是一两GB。我听说UltraEdit(在Windows上)和BBEdit(在Mac上)更适合更大的文件,但我没有个人经验。

答案 9 :(得分:2)

过去,我使用此工具http://csved.sjfrancke.nl/

打开了一个3 gig文件

答案 10 :(得分:2)

我使用FAR Commander的内置编辑器/查看器来处理超大型日志文件。

答案 11 :(得分:1)

我已将TextPad用于大型日志文件,但没有上限。

答案 12 :(得分:1)

就个人而言,我喜欢UltraEdit。这是他们的小spiel on large files

答案 13 :(得分:1)

我唯一可以使用的东西是我最喜欢的Mac十六进制编辑器,0XED。然而,那是我认为大到几十兆字节的文件。我不知道它会走多远。我很确定它只会立即将部分文件加载到内存中。

答案 14 :(得分:0)

过去,当文件变得非常大时,我成功地使用了分割/编辑/加入方法。要使其工作,您必须知道原始文件中待编辑文本的位置。