J'ai un fichier texte important avec plusieurs appels vers une fonction spécifique Je les ai assorties à l'aide de Comment puis-je les déplacer vers le haut du fichier (avec le premier match étant sur le dessus)? p> J'ai essayé exemple de fichier d'entrée: p> exemple de fichier de sortie: p> méthod_name code>. : g / méthody_name p>. p>. : g / méthody_name / normal DDGGP code> mais ça inverse la commande. Y a-t-il un meilleur moyen de couper directement et coller toutes les lignes correspondantes, dans l'ordre? P>
3 Réponses :
Que diriez-vous de l'essayer dans l'inverse: déplacer les lignes non assorties en bas:
:v/method_name/normal ddGp
@JOHNSYWEB, y a-t-il un autre problème avec cette méthode, autre qu'il est lent lorsqu'il existe de nombreux autres méthod_name code> lignes?
En fait non. : V / METHODY_NAME / M $ code> peut être plus efficace.
Je pense que vous pouvez obtenir le résultat souhaité en créant d'abord une variable attribuée
à 0: puis exécutant cette commande: p> appelle essentiellement Bien sûr, vous pouvez supprimer la variable lorsque vous n'en avez plus besoin: p> : m code> passant comme adresse la valeur de i em>, puis incréments
cette valeur par une afin de pouvoir être utilisée dans le prochain match. Semble fonctionner. P> :unlet i
Merci @johnsyweb! Vimgolf? Semble intéressant! Et félicitations, je vois que vous êtes un en haut du conseil d'administration.
Si le fichier est vraiment important, le nombre d'entrées correspondant est petit, et vous ne souhaitez pas vous déplacer dans l'ensemble du fichier avec la solution Choisissez une marque que vous ne vous souciez pas, disons Ceci ne déplacera que quelques lignes de correspondance, pas le fichier entier. P> Remarque: cela fonctionne en quelque sorte même si la première ligne contient le motif - et je n'ai pas de Explication pour cela. P> pour les scripts: p> v / 'k code>. Maintenant, la séquence de clé suivante fait ce que vous voulez: p> GGMK: g / méthody_name / m 'k-1 code> p>
ggmk code> marque première ligne avec 'k code>. li>
m 'k-1 code> déplace la ligne correspondante à 1 ligne avant que la marque ' k code> (et marque se déplace avec la ligne qui est attachée à). LI >
ul>