Quoi qu'il en soit pour naviguer en pourcentage dans vim?

25

J'ouvre souvent de gros fichiers en parcourant les journaux pour trouver des informations. Comme toutes les lignes ont un horodatage dans mon cas et je suis sûr de la partie du fichier dans laquelle l'info est présente qui m'intéresse. Par exemple,

  • dans la moitié inférieure du contenu du fichier (50% ou plus) ou
  • environ 10% de plus vers la fin du fichier ou
  • faites défiler plus de 20% du fichier d'origine.

Donc, pour naviguer rapidement de cette façon, c'est-à-dire avec un pourcentage - Existe-t-il déjà une fonctionnalité existante dans vim?

mtk
la source
@stephane Est-il possible de dépasser de 10% la ligne actuelle? Ne voit rien de référencé pour naviguer dans cela dans l'aide:h N%
mtk
Je viens d'essayer un pourcentage relatif + 50% Ça ne marche pas, alors non. J'ai mis à jour ma réponse pour afficher des informations d'aide.
X Tian

Réponses:

45

Désolé pour une réponse courte, mais

il suffit de taper 50%

                                                        *N%*
{count}%                Go to {count} percentage in the file, on the first
                        non-blank in the line |linewise|.  To compute the new 
                        line number this formula is used:
                            ({count} * number-of-lines + 99) / 100
                        See also 'startofline' option.  {not in Vi}
X Tian
la source
3
Cette réponse est sans faille. Et cela pourrait devenir encore plus vrai si vous pouviez également faire un mouvement relatif: c'est-à-dire, avancer par exemple de 10% vers l'avant, indépendamment du fait de regarder où vous en êtes. Notez également que vous ne devez pas entrer: pour accéder au mode de commande.
nilon
3

Il y a la [count]%commande (combien intuitive!) Pour une navigation absolue. Pour une navigation relative, vous devez calculer le montant vous-même. Par exemple, pour faire défiler 33%:

:exe 'normal!' 33 * line('$') / 100 . 'j'

(Vous souhaiterez probablement créer des mappages qui les utiliseront v:count.)

Ingo Karkat
la source