2011-12-31 26 views
17

Mogę użyć vi{ i va{, aby wybrać bloki kodu C++. Bardzo mi to pomaga, kiedy muszę je szarpać/usuwać.Jak wybrać blok kodu Python za pomocą Vima?

Ale Python używa wcięcia do wskazania bloków kodu. Nie mogę znaleźć lepszego sposobu. Jakieś pomysły?

+0

możliwe duplikaty [Mark blok na podstawie poziomu wcięcia w Vimie] (http://stackoverflow.com/questions/7377771/mark-block-based-on-indentation-level-in-vim) –

Odpowiedz

23

Nie miałem wiele okazji, aby go jeszcze użyć, ale Michael Smith mówi, że vim-indent-object może być blisko tego, co chcesz.

Przykład użycia (pokazane jako linia numer z set number aktywnego)

1 This is 
    2 some text 
    3  with multiple 
    4 levels of 
    5 indentation. 
    6 There is also 
    7  another stanza. 

pomocą kursora w linii 2, 4 lub 5, typ Vii aby wybrać linie 2 do 5.
z kursorem na wiersz 3, wpisz Vai, aby wybrać linie od 2 do 3.
Za pomocą kursora na linii 3 wpisz Vaiii (lub Viiii), aby zaznaczyć linie od 2 do 5 (w trybie wizualnym wiele zastosowań obiektów wcięć rozszerza zaznaczenie do następnego poziomu do góry/na zewnątrz).

Tekst obiektów definiuje to:

  • ai: obecny poziom wcięcia plus linia powyżej
    przydatna, gdy chcesz, aby pobrać wiersz wprowadzający (np chwycić if i jego „następnie” blok)
  • ii: bieżący poziom wcięcia
  • aI: bieżący poziom wgłębienie oraz jednej linii powyżej jednej linii poniżej
    usef ul dla języków używających instrukcji "end": if/endif).
  • iI: obecny poziom wcięcia (efektywnie ii i iI są takie same)

Obiekty mogą być również wykorzystywane do innych poleceń, które oczekują obiekty tekstowe (tj cii aby usunąć bieżący poziom wcięcia i zacząć wstawienie jego wymiany).

+0

Czy działa, gdy bieżący poziom wcięć ma puste linie? – industryworker3595112

6

Po prostu uderzyłem w v dla trybu wizualnego, następnie ( lub ). Spowoduje to przejście do następnej pustej linii. To powinno odpowiadać twoim blokom kodu, jeśli ładnie formatujesz.

+1

Czy to prawda?'{}' są dla akapitów i przechodzą do następnej pustej linii. – progo

+1

'(' i ')' są dla zdań. "Zdanie definiowane jest jako kończące się na' .', '!' Lub '?', Po którym następuje koniec linii lub spacja lub tabulator. " –

1

Możesz wyświetlić linie (: set nu), a następnie przejść do wiersza, w którym zaczyna się blok kodu (: lineNumber) i szarpnąć je.

0

Dla Pythona, zwykle używam "zM", aby złożyć cały plik, a następnie "2yy", aby zerwać całą funkcję.

Jeśli funkcja jest w środku jakiejś klasy, można użyć "ZC" zamiast "ZM"

Trzeba dodać następującą linię do ~/.vimrc, aby ZM/ZC praca:

autocmd FileType python set foldmethod=indent 
Powiązane problemy