
Eu tenho um arquivo de backup de banco de dados MySQL de 100 MB e tenho problemas para abri-lo no Vim na minha caixa Linux que possui 16 G de RAM.
O Vim simplesmente trava (pelo menos inutilizável). Isso é algo que não entendo. Tenho 16 GB de RAM, por que não consigo carregar um arquivo de 100 MB em um editor?
É por causa do Vim? Achei que todo o gerenciamento de memória fosse feito pelo sistema operacional.
Responder1
Às vezes, o Vim tem problemas com arquivos que possuem linhas excepcionalmente longas. É um editor de texto, portanto, foi projetado para arquivos de texto, com comprimentos de linha que geralmente têm no máximo algumas centenas de caracteres de largura.
Um arquivo de banco de dados pode não conter muitos caracteres de nova linha, então pode ser uma única linha longa de 100 Mb. O Vim não ficará satisfeito com isso e, embora provavelmente funcione, pode demorar muito para carregar o arquivo.
Eu certamente abritextoarquivos muito maiores que 100 Mb com Vim. O arquivo nem precisa caber na memória de uma só vez (já que o Vim pode trocar alterações no disco conforme necessário).
Responder2
Na minha experiência, o Vim não engasgaarquivos grandes, mas emlongas filas. Use este comando para termysqldump
usarlinhas mais curtasàs custas de umarquivo maior:
$ mysqldump --complete-insert -u -p
Além disso, você pode abrir o Vim e pedir para ele não analisar seu .vimrc
arquivo ou carregar nenhum plugin com este comando:
$ vim -u NONE output.sql
Carregar o Vim dessa maneira usará menos memória e não exigirá que o Vim analise o arquivo inteiro como muitos plug-ins fazem.
Responder3
"carregue o VIM sem .vimrc e plugins (limpe o VIM), por exemplo, para arquivos ENORMES
gvim -u NONE -U NONE -N largefile.sql
Responder4
O Vim não apenas carrega o arquivo como está na memória. Ele converte em estruturas internas (linhas, palavras, etc), realiza destaque de sintaxe usando uma linguagem de script interna e assim por diante; tudo isso consome memória (muito mais que um byte por caractere) e tempo de CPU.