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ąć?


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.


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.


-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?

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.