Jak skopiować wiersz zawierający ciąg znaków do bufora w vimie bez przesuwania kursora?

1

powiedzmy, że mam regex wewnątrz linii i chcę skopiować pierwszą linię powyżej pozycji kursora, która ma ten wzór bez przesuwania kursora. Na przykład (kursor jest oznaczony ||):

This is a short example.  
On the other hand,  
I'm having trouble with it. ||

Jak skopiować zdanie „To jest krótki przykład” na pozycję kursora (II)? Jeśli szukam zdania, kursor zostanie przeniesiony do To (? To jest).

tmaric
źródło

Odpowiedzi:

3

Mógłbyś:

:?short?t.

Wykonuje wyszukiwanie do tyłu short( ?short) i kopiuje pasującą linię ( t) za bieżącą linią ( .).

Możesz przeczytać o komendach Ex w :h :indexi zakresach w :h range.

edytować

W rzeczywistości tak nie działa, ale myślę, że powyższe wyjaśnienie może mieć trochę więcej sensu.

Dokładny mechanizm wyjaśniono zwięźle w :h :copy:

:[range]co[py] {address}
    Copy the lines given by [range] to below the line given by {address}.

Tutaj [range]jest pierwsza linia powyżej obecnego jednego, który pasuje shorti {address}jest obecna linia ..

Ja kocham Vima.

romainl
źródło
@romaini :) vim jest najlepszym edytorem. zawsze.
tmaric
1

Przychodzi mi na myśl kilka sposobów i wtyczek, ale naturalnym sposobem byłoby po prostu wyszukiwanie ( ?This is), szarpanie, a następnie przeskakiwanie z powrotem do pierwotnej pozycji za pomocą Ctrl+ Oi wklejania. Z pomocą listy skoków (cp. :help jumplist) Tymczasowy ruch nie jest taki zły.

Ingo Karkat
źródło