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?
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?
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 if
i jego „następnie” blok)ii
: bieżący poziom wcięciaaI
: bieżący poziom wgłębienie oraz jednej linii powyżej jednej linii poniżej 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).
Czy działa, gdy bieżący poziom wcięć ma puste linie? – industryworker3595112
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.
Czy to prawda?'{}' są dla akapitów i przechodzą do następnej pustej linii. – progo
'(' 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. " –
Możesz wyświetlić linie (: set nu), a następnie przejść do wiersza, w którym zaczyna się blok kodu (: lineNumber) i szarpnąć je.
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
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) –