Comment puis-je supprimer dans VIM tout le texte de la ligne actuelle à la fin du fichier?

213

J'ai de très gros fichiers (plus de 10 Go). Je n'ai besoin que de quelques lignes en haut du fichier. Est-il possible (dans vim) de supprimer le reste du fichier (de la ligne courante à la fin du fichier)?

user810430
la source
12
Je sais que vous voulez utiliser Vim, mais je ferais une commande shell comme: head -n <number_of_lines> <filename> > <truncated_filename>-nest le paramètre pour le nombre de lignes que vous voulez à partir du haut
EhevuTov

Réponses:

365

dG supprimera de la ligne actuelle à la fin du fichier

dCtrl+ Endsupprimera du curseur jusqu'à la fin du fichier

Mais si ce fichier est aussi volumineux que vous le dites, vous feriez mieux de lire les premières lignes headplutôt que de modifier et d'enregistrer le fichier.

head hugefile > firstlines

(Si vous êtes sous Windows, vous pouvez utiliser le port Win32 de head)

Ed Guiness
la source
17
vous pouvez spécifier le nombre de lignes headfournies avec par exemple: head -n20 hugefilepour les 20 premières lignes. n par défaut à 10.
drevicko
3
Besoin d'une motivation pour head? L'utilisation de dG sur un fichier volumineux (1G +) prend beaucoup de temps (par exemple, 5 minutes).
BurninLeo
3
Pour ceux qui recherchent l'inverse, dggsupprimera de la ligne actuelle au début du fichier.
stevesliva du
d Ctrl + Fin ne fonctionnait pas pour moi. d Shift + End a cependant supprimé du curseur jusqu'à la fin de la ligne.
lightwing
68

Accédez à la première ligne de laquelle vous souhaitez supprimer et appuyez sur les touches dG

James Mathew
la source
39
n'appuyez pas sur ":" avant de taper dG
James Mathew
30

:.,$d

Cela supprimera tout le contenu de la ligne actuelle jusqu'à la fin du fichier. Ceci est très utile lorsque vous traitez avec la génération ou la suppression de vecteurs de test.

Chakravarthi
la source
2
Je préfère avoir plus de contrôle sur la ligne de départ, donc j'utilise: :<line number>,$dpar exemple: :3,$dsupprimera de la ligne 3 jusqu'à la fin du fichier
emont01
0

Ajoutez simplement une autre façon, en mode normal, tapez ctrl+vensuite G, sélectionnez le reste, puis D, je ne pense pas que ce soit efficace, vous devriez faire comme @Ed Guiness, head -n 20> filename in linux.

frank.lin
la source