123

是否有任何编辑器可以编辑数千兆字节的文本文件,也许只需一次将一小部分加载到内存中?Vim 似乎无法处理它 =(

4

15 回答 15

157

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

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

  1. 按 Ctrl-C:Vim 最初尝试读取整个文件,以执行语法高亮和文件中的行数等操作。Ctrl-C 将取消此枚举(以及语法高亮),它只会加载什么需要在屏幕上显示。
  2. 只读:当文件太大而无法生成 . 文件副本以执行编辑。我不得不w!保存文件,那是花费最多时间的时候。
  3. 转到行:键入:115355将带您直接到第 115355 行,这在那些大文件中要快得多。Vim 似乎每次加载行缓冲区时都会从头开始扫描,并且按住 Ctrl-F 扫描文件似乎在接近结尾时变得非常慢。

注意 - 如果你的 Vim 实例是只读的,因为你按下 Ctrl-C,Vim 可能没有将整个文件加载到缓冲区中。如果发生这种情况,保存它只会保存缓冲区中的内容,而不是整个文件。您可以快速检查G以跳到末尾,以确保文件中的所有行都在那里。

于 2013-11-05T18:13:34.980 回答
78

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

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

vim -u "NONE" hugefile.log

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

syntax off

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

于 2009-05-26T02:17:05.643 回答
76

如果您在 *nix 上(并且假设您只需要修改文件的一部分(并且很少)),您可以拆分文件(使用split命令),单独编辑它们(使用awk,sed或类似的东西)并在您之后将它们连接起来完成。

cat file2 file3 >> file1
于 2009-05-26T02:23:31.823 回答
20

使用 split + vim 解决方案对@Al pachio 给出的答案略有改进,您可以使用 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
于 2013-09-28T23:13:08.967 回答
15

您可能想查看这个VIM 插件,它会在加载大文件时禁用某些 vim 功能以提高速度。

于 2009-05-26T01:37:04.897 回答
9

我尝试过这样做,当我需要对 SQL 转储进行一些小改动时,主要使用 1 GB 左右的文件。我在 Windows 上,这很痛苦。这非常困难。

显而易见的问题是“为什么需要?” 我可以从不得不多次尝试的经验告诉你,你可能真的想尝试另一种方法。

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

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

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

不过相信我,试着找到另一种方法。

于 2009-05-26T01:38:13.397 回答
6

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

于 2009-05-26T02:36:51.953 回答
4

我在 Win7 x64 上使用 vim 7.3.3 和Charles Campbell 的 LargeFile 插件来处理数千兆字节的纯文本文件。它真的很好用。

我希望你来对。

于 2012-11-20T08:56:39.267 回答
3

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

于 2009-05-26T01:36:47.567 回答
2

过去我用这个工具打开了一个 3 gig 文件http://csved.sjfrancke.nl/

于 2009-05-26T01:36:52.620 回答
2

就个人而言,我喜欢UltraEdit。这是他们关于大文件的小技巧

于 2009-05-26T01:51:00.703 回答
2

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

于 2009-05-26T01:54:27.890 回答
1

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

于 2009-05-26T01:36:58.610 回答
1

我唯一能用于类似的东西是我最喜欢的 Mac 十六进制编辑器 0XED。但是,这是我认为数十兆字节的文件。我不确定它会走多远。不过,我很确定它只会一次将文件的一部分加载到内存中。

于 2009-05-26T01:57:21.033 回答
0

过去,当文件变得非常大时,我成功地使用了拆分/编辑/连接方法。为此,您必须知道要编辑的文本在原始文件中的位置。

于 2009-05-26T01:44:14.820 回答