Как сделать отступ> <, не выходя из визуального режима и не теряя текущий выбор?

16

Мне часто приходится делать отступ вручную, но когда я вхожу в визуальный режим, выбираю строки для отступа и нажимаю <или >, я покидаю визуальный режим независимо от того, хочу я этого или нет.

Я бы предпочел, чтобы я оставался в визуальном режиме и сохранял свой выбор и положение курсора без изменений.

Как мне этого добиться?

Акива
источник
1
Есть ли шанс, что переназначение поможет? Что то типа :vmap < <a?
Feffe

Ответы:

19

У меня есть это в моем vimrc:

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

Обратите внимание, что вы также можете просто использовать .(точка), чтобы повторить последнее действие отступа.

VanLaser
источник
Почти идеально, за исключением того, что мой курсор не двигается вместе со строкой.
Акива
1
@ Akiva Может быть, вы хотите добавить ^в конце этого сопоставления? то есть >gv^?
Мартин Турной
2
Кажется, курсор перемещается (или нет) в зависимости от его положения относительно текста с отступом. Мне непонятно, где вы хотите, чтобы курсор оставался: с тем же номером столбца или с тем же символом? Кроме того, вы знаете, что вы все еще можете перемещать курсор, например, с помощью j, kи lт. Д. В визуальном режиме?
VanLaser
2
Честно говоря, я просто поставил <Right>А <Left>после команд, и это сработало нормально.
Акива
9

Я знаю, что это не автоматическое решение, но вы можете сделать это, используя gvпосле визуального отступа.

Это перейдет в визуальный режим с выбранным предыдущим выбором и вашим курсором на последнюю строку. Смотрите :h gvдля получения дополнительной информации.

Tumbler41
источник
-2

Я попытался добавить следующее отображение в мой vimrc:

vmap < <a
vmap > >a

Вроде бы интересные результаты, может быть, это то, что вы ищете?

Feffe
источник