Embora tenhamos sido instruídos a não fazê-lo, um colega meu usou o vi para exibir um arquivo de texto grande (server.log 3,5 GB). Isso encheu / var / tmp e causou alguns problemas no servidor.
O que causou isso? Por que não devemos usar o vi para arquivos grandes?
vi
(ou,vim
nesse caso) é muito lento em arquivos grandes e pode ser inutilizável se não houver muitas extremidades de linha. Além disso, o arquivo precisa caber na memória. Useless
para arquivos grandes, é muito mais rápido e geralmente suficiente para ler / assistir arquivos de log.Respostas:
O diretório padrão (/ var / tmp) para o buffer de edição do vi precisa de espaço igual a aproximadamente o dobro do tamanho do arquivo com o qual você está trabalhando, porque o vi usa as linhas extras para manipulação do buffer.
Se o diretório / var / tmp não tiver espaço suficiente para o buffer de edição (por exemplo, você está trabalhando com um arquivo grande ou o sistema está ficando sem espaço)
algumas vezes, você receberá a seguinte mensagem de erro como esta também
Você pode ler sobre como corrigir isso aqui: http://kb.iu.edu/data/akqv.html
fonte
O Vim não foi projetado para arquivos grandes. Possui certos recursos que diminuem drasticamente a experiência do usuário. Por exemplo, ele carrega o arquivo na memória, o que basicamente limita a edição de arquivos menores que o tamanho da sua memória. Além disso, recursos como realce de sintaxe, trocar arquivo e desfazer são muito ineficientes com arquivos grandes e diminuem ainda mais a velocidade. Outra questão é que
vim
espera linhas não muito longas. Se um arquivo contiver poucos caracteres de nova linhavim
se tornar inutilizável.Isso dito, existem plugins como vim-largefile que configurações específicas mudar para ser mais eficiente com arquivos grandes, mas no final
vim
nunca será ágil quando você joga vários gibs nisso.A linha inferior é, não use
vim
em arquivos grandes. Se você deseja visualizar (ao contrário de editar) arquivos grandes, useless
. Se você deseja procurar um padrão, use uma barra para iniciar uma pesquisa em um padrão:Se você deseja filtrar a saída, use um e comercial:
Em seguida, inicie a saída contínua usando shift-f. Você pode sair da exibição de saída contínua com ctrl-ce refinar ou cancelar seu padrão de filtro ou iniciar uma pesquisa.
Para editar arquivos grandes, use ferramentas como
sed
, eles são eficientes e projetados para essa finalidade.fonte