是否有任何编辑器可以编辑多GB的文本文件,可能只是一次只将小部分加载到内存中?它似乎不像Vim可以处理它=(
Ctrl-C将停止文件加载.如果文件足够小,你可能已经很幸运地加载了所有内容并且刚刚杀死任何后加载步骤.使用此提示时,验证是否已加载整个文件.
Vim可以很好地处理大文件.我刚编辑了一个3.4GB的文件,删除了行等.要记住以下三点:
按Ctrl-C:Vim尝试最初读取整个文件,执行语法高亮显示和文件中行数等操作.Ctrl-C将取消此枚举(以及语法高亮显示),并且只会加载需要在屏幕上显示.
Readonly:当文件太大而无法创建时,Vim可能会以只读方式启动.文件复制以执行编辑.我不得不w!保存文件,这是花费最多时间的时间.
转到行:键入:115355
将直接转到115355行,这对于那些大文件来说要快得多.Vim似乎每次加载缓冲线时都从头开始扫描,按住Ctrl-F扫描文件似乎在它结束时变得非常慢.
注意 - 如果您的Vim实例因为按Ctrl-C而处于只读状态,则Vim可能无法将整个文件加载到缓冲区中.如果发生这种情况,保存它只会保存缓冲区中的内容,而不是整个文件.您可以快速检查a G
以跳到最后以确保文件中的所有行都在那里.
它可能是导致它窒息的插件.(语法高亮,折叠等)
你可以在没有插件的情况下运行vim.
vim -u "NONE" hugefile.log
这是极简主义但它至少会给你你习惯的vi动作.
syntax off
是另一个明显的问题.修剪您的安装并获取您需要的内容.您将了解它的功能以及是否需要通过其他方式完成任务.
如果你是在*nix(假设你要修改的文件只有部分(而很少)),你可以分割的文件(使用split
命令),单独进行编辑(使用awk
,sed
或类似的东西)和之后,你将它们连接起来完成.
cat file2 file3 >> file1
使用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
您可能想要查看此VIM插件,该插件在加载大文件时为了速度而禁用某些vim功能.
我试图这样做,当我需要对SQL转储进行一些小改动时,大多数文件大约为1 GB.我在Windows上,这是一个很大的痛苦.这非常困难.
显而易见的问题是"为什么你需要?" 我可以告诉你,不止一次尝试这个经验,你可能真的想尝试找到另一种方式.
你是怎么做到的?我有几种方法可以做到.有时我可以通过vim或nano来打开文件,我可以使用它们.这是一个非常艰难的痛苦,但它确实有效.
当这不起作用时(如你的情况),你只有几个选项.您可以编写一个小程序来进行所需的更改(例如,搜索和替换).您可以使用可能能够执行此操作的命令行程序(也许可以使用sed/awk/grep/etc来完成?)
如果那些不起作用,你总是可以将文件拆分成块(类似于拆分是显而易见的选择,但你可以使用head/tail来获得你想要的部分),然后编辑需要它的部分,然后重新组合.
相信我,试着寻找另一种方式.
我认为十六进制编辑器处理大文件是很常见的。在Windows上,我使用HxD,它声称可以处理高达8 EB(80亿千兆字节)的文件。