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

15

Apesar de termos sido instruídos a não fazer isso, um colega meu usou o vi para visualizar um arquivo de texto grande (server.log 3,5 GB). Isso preencheu / var / tmp e causou alguns problemas no servidor.

O que causou isso? Por que não devemos usar o vi para arquivos grandes?

    
por atripathi 19.12.2013 / 13:34

2 respostas

7

O diretório padrão (/ var / tmp) para 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, porque o vi usa as linhas extras para manipulação de 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ê pode receber, 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: link

    
por 19.12.2013 / 13:50
18

O Vim não foi projetado para arquivos grandes. Tem certas características que reduzem 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 memória. Além disso, recursos como realce de sintaxe, arquivo de troca e desfazer são muito ineficientes com arquivos grandes e lentos ainda mais. Outro problema é que vim não espera linhas muito longas. Se um arquivo contiver alguns caracteres de nova linha, vim ficará inutilizável.

Por isso, há plug-ins como vim-largefile que alteram determinadas configurações para serem mais eficientes com arquivos grandes, mas em o final vim nunca será mal-humorado quando você joga vários GiBs nele.

A linha inferior é, não use vim em arquivos grandes. Se você quiser visualizar (em contraste com a edição) arquivos grandes, use less . Se você quiser procurar um padrão, use uma barra para iniciar um padrão de pesquisa:

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

Se você quiser 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-c e 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 esse propósito.

    
por 19.12.2013 / 14:05

Tags