Puis-je utiliser vim pour ouvrir efficacement un énorme fichier?

17

Parfois, j'ai besoin d'ouvrir un fichier journal de plusieurs Go, maintenant je dois utiliser la queue pour obtenir la partie appropriée, mais c'est très fastidieux.

Puis-je simplement utiliser vim pour l'ouvrir directement? Actuellement, vim occupera beaucoup de mémoire lors de l'ouverture d'un fichier volumineux ... Vous vous demandez simplement pourquoi cela est nécessaire? S'il y a une option qui peut empêcher cette mémoire de se charger?

Carfield Yim
la source

Réponses:

13

Si vous souhaitez simplement consulter un fichier, utilisez moins .

Si vous avez besoin de découper une partie spécifique du fichier, faites-le (en moins ):

  1. Allez à la 1ère page qui vous intéresse

  2. Appuyez sur les touches met a- cela signifie: marquez la position a .

  3. Aller à la dernière position du fichier qui vous intéresse

  4. Appuyez sur les touches |(pipe) et a- cela signifie: tout diriger entre ici et positionner a à une commande

  5. Tapez la commande à laquelle vous souhaitez envoyer les données. Si vous souhaitez copier ces données dans le tampon de l'éditeur, utilisez simplement la vim -commande (le signe moins comme nom de fichier signifie que le fichier à modifier doit être lu depuis stdin ).

Si vous savez que vous aurez besoin de toutes les données d'une position spécifique jusqu'à la fin du fichier, vous pouvez également le faire:

  1. Allez à la 1ère page qui vous intéresse

  2. Appuyez sur les touches |(pipe) et $- cela signifie: tout diriger entre ici et la fin du fichier vers une commande

  3. Tapez la commande à laquelle vous souhaitez envoyer les données (par exemple cat >/tmp/myfileou vim -).

ktf
la source
1
Je ne savais pas lesspouvoir faire ça. Merci :)
icedwater
4

Découvrez ceci et cela .

Fondamentalement, vos options sont les suivantes:

  1. Essayez le script Vim Large File . Il désactive certaines fonctionnalités pour améliorer la réactivité de Vim lors de l'édition de gros fichiers.
  2. Divisez le fichier en petits morceaux, modifiez le morceau qui vous intéresse et concaténez-les à nouveau.
Dan Cruz
la source
3

Oui, Vim peut ouvrir de très gros fichiers. Mais, afin de conserver la mémoire, vous devez probablement garder à l'esprit certaines choses avant de le faire:

  • ignorer le type de fichier (pas de mise en évidence de la syntaxe, etc.), bien que, selon toute probabilité, il n'ait pas du tout de syntaxe pour les fichiers journaux, mais juste pour être sûr qu'il ne commence pas à les parcourir
  • noswapfile (vous ne voulez certainement pas une copie d'un fichier de cette taille)
  • bufhidden = décharger (économiser de la mémoire lorsqu'un autre fichier est affiché)
  • buftype = nowritefile (est en lecture seule)
  • undolevels = -1 (aucune annulation possible)

Peut-être qu'il y a une ou deux options que j'ai manquées, mais celles-ci sont si loin dans mon _vimrc.

Tour
la source
Notez que (1) il existe un plugin ( vim.org/scripts/script.php?script_id=1506 ) pour activer automatiquement plusieurs de ces options lorsqu'un grand fichier est ouvert, et (2) même avec ce programme, ouvrir des fichiers qui sont plus de quelques Go peuvent être problématiques, donc je recommande de suivre la astuce "Ctrl-C" ici: stackoverflow.com/a/19795855/1858225
Kyle Strand