O que acontece se eu usar o vi em arquivos grandes?

16

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?

atripathi
fonte
3
vi(ou, vimnesse 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. Use lesspara arquivos grandes, é muito mais rápido e geralmente suficiente para ler / assistir arquivos de log.
Marco
@Marco Por que não colocá-lo como resposta?
Bernhard
11
porque não é a resposta para a pergunta, mas um comentário, a pergunta é "O que causou isso? Por que não devemos usar o vi para arquivos grandes?"
Kiwy
veja o comentário com a minha resposta.
19133

Respostas:

7

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

Not enough space in /var/tmp.

Você pode ler sobre como corrigir isso aqui: http://kb.iu.edu/data/akqv.html

rɑːdʒɑ
fonte
"o buffer de edição vi precisa de espaço igual a aproximadamente o dobro do tamanho do arquivo com o qual você está trabalhando" Fonte?
Atripathi
11
Há muito tempo, li em kb.iu.edu/data/akqv.html . então eu dei a você #
21113
20

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 vimespera linhas não muito longas. Se um arquivo contiver poucos caracteres de nova linha vimse 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 vimnunca será ágil quando você joga vários gibs nisso.

A linha inferior é, não use vimem arquivos grandes. Se você deseja visualizar (ao contrário de editar) arquivos grandes, use less. Se você deseja procurar um padrão, use uma barra para iniciar uma pesquisa em um padrão:

/<pattern>  # forward search
?<pattern>  # backward search

Se você deseja filtrar a saída, use um e comercial:

&<pattern>

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.

Marco
fonte