Jak wcinasz> <bez wychodzenia z trybu wizualnego i utraty bieżącego wyboru?

16

Często muszę ręcznie wciąć, ale kiedy wchodzę w tryb wizualny, wybieram linie do wcięcia i naciskam <lub >, opuszczam tryb wizualny, czy chcę, czy nie.

Wolę go mieć, więc pozostaję w trybie wizualnym i zachowuję wybór i pozycję kursora w nienaruszonym stanie.

Jak mogę to osiągnąć?

Akiva
źródło
1
Czy jest szansa, że ​​remapowanie załatwi sprawę? Coś takiego :vmap < <a?
Feffe

Odpowiedzi:

19

Mam to w moim vimrc:

"keep visual mode after indent
vnoremap > >gv
vnoremap < <gv

Zauważ, że możesz także po prostu użyć .(kropki), aby powtórzyć ostatnie wcięcie.

VanLaser
źródło
Prawie idealnie, z wyjątkiem tego, że mój kursor nie porusza się wraz z rzędem.
Akiva
1
@Akiva Może chcesz dodać ^na końcu tego mapowania? tj. >gv^?
Martin Tournoij
2
Kursor wydaje się poruszać (lub nie) w zależności od jego pozycji względem wciętego tekstu. Nie jest dla mnie jasne, gdzie chcesz pozostać kursor: pod tym samym numerem kolumny, czy nad tym samym znakiem? Ponadto, trzeba wiedzieć, że można jeszcze przesunąć kursora np j, k, litd., Podczas gdy w trybie wizualnym?
VanLaser
2
Szczerze mówiąc, po prostu położyłem <Right>I <Left>po poleceniach i to działało dobrze.
Akiva
9

Wiem, że to nie jest automatyczne rozwiązanie, ale możesz to zrobić, używając gvwizualnego wcięcia.

Przejdzie do trybu wizualnego z zaznaczonym poprzednim wyborem i kursorem w ostatnim wierszu. Zobacz :h gvwięcej informacji.

Tumbler41
źródło
-2

Próbowałem dodać następujące mapowanie do mojego vimrc:

vmap < <a
vmap > >a

Wydaje się, że ma interesujące wyniki, może tego właśnie szukasz?

Feffe
źródło