2009-08-10 23 views

Répondre

52

En mode normal:

G100kdgg 

En d'autres termes:

G  -> go to last line 
100k -> go up 100 lines 
dgg -> delete to top of file 
+0

simple et élégant. J'aime ça! – technomalogical

+0

Cela ne fonctionne pas si le tampon contient moins de 100 lignes. Il supprimera incorrectement toutes les lignes car la partie '100k' n'aura aucun effet. –

+1

@DonCruickshank Incorrect, s'il y a moins de 100 lignes, '100k' ira à la première ligne et' dgg' supprimera cette seule ligne. 'k' est répété' 100' fois, donc même s'il n'y a que 5 lignes, il va "bomber" le haut du tampon et s'arrêter. Il ne vérifie pas avant de faire toutes les actions. Cela dit, oui, il supprimera incorrectement 1 ligne si vous avez 100 lignes ou moins dans le tampon. Mais OMI, il s'agit d'une utilisation plus idiomatique de vim que l'autre réponse hautement mise à jour: c'est une "phrase" de plusieurs commandes, plutôt qu'une seule plus cryptique. – Izkata

49

En mode ex:

:1,$-100d 

Explication: ":" met l'éditeur en mode "ex" . La commande d du mode ex supprime des lignes, spécifiées comme un seul numéro de ligne, ou une plage de lignes. $ est la dernière ligne, et l'arithmétique peut être appliquée aux numéros de ligne.

+3

FWIW c'est la meilleure réponse, à mon humble avis –

11

Une solution à usage général alternatif:

:%!tail -100 

Vous pouvez utiliser toute commande shell après la ! de modifier arbitrairement le tampon courant. Vim démarre la commande et envoie le fichier en cours à stdin, puis lit le nouveau tampon à partir de stdout.

Questions connexes