2009-08-10 14 views

Odpowiedz

52

W trybie normalnym:

G100kdgg 

Innymi słowy

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

prosty i elegancki. Lubię to! – technomalogical

+0

To nie działa, jeśli bufor ma mniej niż 100 linii. Błędnie usunie wszystkie linie, ponieważ część '100k' nie będzie miała żadnego efektu. –

+1

@DonCruickshank Źle, jeśli jest mniej niż 100 linii, '100k' przejdzie do pierwszej linii, a' dgg' usunie tę pojedynczą linię. 'k' jest powtarzane' 100' razy, więc nawet jeśli istnieje tylko 5 linii, to "zburzy" górę bufora, a następnie zatrzyma się. Nie wykonuje wstępnej kontroli przed wykonaniem wszystkich czynności. To powiedziawszy, tak, błędnie usunie 1 linię, jeśli masz 100 lub mniej linii w buforze. Ale IMO, jest to bardziej idiomatyczne użycie vima niż inna wysoce przecząca odpowiedź: Jest to "zdanie" wielu poleceń, a nie jeden bardziej tajemniczy. – Izkata

49

W trybie Ex:

:1,$-100d 

Objaśnienie: ":" stawia edytor w trybie "ex" . Komenda d trybu ex usuwa linie, określone jako pojedynczy numer linii lub zakres linii. $ jest ostatnią linią i arytmetykę można zastosować do numerów linii.

+3

FWIW to jest lepsza odpowiedź, IMHO –

11

Alternatywą ogólnego przeznaczenia:

:%!tail -100 

Można stosować dowolny rozkaz powłoki po ! arbitralnie zmienia się stan bufora. Vim uruchamia polecenie i przekazuje bieżący plik do stdin i odczytuje nowy bufor z stdout.

Powiązane problemy