2011-12-13 18 views
26

Byłem w linii 93 i zrozumiałem, że chcę usunąć linię 89. Napisałem :d89 w nadziei, że linia 89 zostanie usunięta. To nie zadziałało.Vim: Czy możesz usunąć konkretny numer linii z innej linii?

Czy ktoś zna dobry sposób na osiągnięcie tego typu interakcji? Jestem wygodnym użytkownikiem Vima, ale nie (jeszcze) zrobiłem skok do pisania wtyczek ...

Dzięki.

Odpowiedz

47

Adres polecenia dwukropka (np. Numer linii) pojawia się jako pierwszy.

:89d 

Należy pamiętać, że spowoduje to również przejście do miejsca zmiany. Możesz użyć ``, aby odskoczyć.

Jeśli wolisz mieć tylko jedno polecenie, możesz zdefiniować własne polecenie. np:

command! -range -nargs=0 Delete <line1>,<line2>d|norm `` 

Określa polecenie o nazwie Delete że usuwa adresowaną zakres (<line1>,<line2>d), a następnie przechodzi do tyłu (norm ``).

można nazwać to lubią:

:89Delete 

Rzeczywiście można wywołać go z dowolnego unikalnego przedrostka, więc może być w stanie dostać się do:

:89D 
+0

hum ... dlaczego nie po prostu wypróbować sugestię i zobaczyć, co się stanie? – woliveirajr

+0

+1, polecenie tutaj składa się z "adresu" (który może być numerem linii) i polecenia. –

+0

@ Ete zachowanie podobne do nawigacji do 89, a następnie usunięcia. Jest to dość powszechne zachowanie dla poleceń dwukropka. ': s' zostawia cię na linii ostatniej zmiany, na przykład. –

1

:89d który usuwać 89. linii, gdy jesteś w innej linii.

:89,91d które usuwają 89. 90. i 91. linię, gdy jesteś w innej linii.

To także funkcja, nawet jeśli używasz vrapper w eclipse, zamiast standardowego vim.