Posso usar o vim para abrir um arquivo enorme de maneira eficaz?

17

em algum momento eu preciso abrir um arquivo de log de vários GB, agora preciso usar o tail para obter a parte adequada, mas isso é muito entediante.

Posso apenas usar o vim para abri-lo diretamente? Atualmente, o vim ocupa muita memória ao abrir um arquivo grande ... Basta saber por que é necessário? Se houver alguma opção pode impedir que a memória seja carregada?

Carfield Yim
fonte

Respostas:

13

Se você quiser apenas dar uma olhada em um arquivo, use menos .

Se você precisar cortar uma parte específica do arquivo, faça o seguinte (dentro de menos ):

  1. Vá para a 1ª página na qual você está interessado

  2. Pressione as teclas me a- isto significa: marque a posição a .

  3. Vá para a última posição do arquivo em que você está interessado

  4. Pressione as teclas |(canal) e a- isto significa: canalize tudo entre aqui e posicione a em um comando

  5. Digite o comando para o qual você deseja que os dados sejam enviados. Se você deseja copiar esses dados no buffer do editor, use apenas o vim -comando (o sinal de menos como nome do arquivo significa que o arquivo a ser editado deve ser lido pelo stdin ).

Se você souber que precisará de todos os dados de uma posição específica até o final do arquivo, faça também o seguinte:

  1. Vá para a 1ª página na qual você está interessado

  2. Pressione as teclas |(canal) e $- isto significa: canalize tudo entre aqui e o final do arquivo para um comando

  3. Digite o comando para o qual você deseja que os dados sejam enviados (por exemplo, cat >/tmp/myfileou vim -).

ktf
fonte
11
Eu não sabia que lesspoderia fazer isso. Obrigado :)
icedwater
4

Confira isso e isso .

Basicamente, suas opções são:

  1. Experimente o script Vim Large File . Desativa certos recursos para melhorar a capacidade de resposta do Vim ao editar arquivos grandes.
  2. Divida o arquivo em pedaços menores, edite o pedaço de seu interesse e concatene-o novamente.
Dan Cruz
fonte
3

Sim, o Vim pode abrir arquivos muito grandes. Mas, para economizar memória, algumas coisas você deve ter em mente antes de fazer isso:

  • ignore o tipo de arquivo (sem realce de sintaxe e assim por diante), embora com toda a probabilidade não tenha nenhuma marcação de sintaxe para arquivos de log, mas apenas para ter certeza de que não começará a passar por eles
  • noswapfile (você definitivamente não quer uma cópia de um arquivo desse tamanho)
  • bufhidden = descarregar (economize memória quando outro arquivo for exibido)
  • buftype = nowritefile (é somente leitura)
  • undolevels = -1 (não é possível desfazer)

Talvez haja uma ou duas opções que eu perdi, mas essas estão tão longe no meu _vimrc.

Torre
fonte
Observe que (1) existe um plug-in ( vim.org/scripts/script.php?script_id=1506 ) para ativar várias dessas opções automaticamente quando um arquivo grande é aberto e (2) mesmo com esse programa, abrindo arquivos que são mais do que um par GB de tamanho ainda pode ser problemático, por isso eu recomendo seguir a ponta "Ctrl-C" aqui: stackoverflow.com/a/19795855/1858225
Kyle Strand