2012-05-17 18 views
7

Czy istnieje polecenie skopiowania pełnej funkcji? (Nie poprzez wybór myszką)Vim: Kopia funkcji

ex: 10yy -> skopiuje linie 10 z pozycji kursora.
Nie znam nr wierszy funkcji, ale chcę skopiować całą funkcję.

Czy istnieje polecenie skopiowania całej funkcji?

Odpowiedz

2

Jeśli używasz VIM, a treść ciała w języku programowania, w którym jesteś zamknięty w nawiasy klamrowe, możesz po prostu umieścić kursor na jednym z nawiasów klamrowych i wpisać y%.

+0

Jeśli chcesz otrzymać deklarację metody, możesz również przedrostować swoje polecenie z 'V', więc staje się' V% y' – tannerli

2

Języki klamrowe (takie jak Java) mogą korzystać z poleceń ]m do nawigacji po funkcjach; niektóre typy plików również definiują dla tego ]]. Dzięki temu możesz użyć [mV]My (przejdź do początku funkcji, rozpocznij tryb wizualny linii, przejdź do końca funkcji, szarpnij).

Wiele typów plików określa również składanie funkcji. Dzięki temu możesz użyć zCyyzO (zamknij wszystkie fałdy, pociągnij cały fałd pod kursorem, otwórz zagięcie).

22

To jest to, co robię w JavaScript i PHP:

va{Vy 
  1. umieścić kursor gdzieś w moim sposobie
  2. va{ wizualnie wybrać blok kodu,
  3. V aby włączyć wybór pomiędzy liniami znakowymi i liniowymi,
  4. y na yank

Jeśli jesteś zbyt głęboki i va{ wybiera tylko część swojej funkcji, możesz zrobić więcej, a{, dopóki nie wybierzesz tego, co chcesz.

+1

'ya {' upraszcza twoją sekwencję. Który działa dobrze dla każdego języka opartego na nawiasach. –

+0

'ya {' tylko szarpnie nawiasy i co jest w środku. Potrzebny jest dodatkowy krok, aby zszarpać część 'function myFunc (args)'. – romainl

+3

Rzeczywiście, ale przypuśćmy tutaj, że nawias otwierający znajduje się na tej samej linii, co linia podpisu funkcji. –