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