Como você recua> <sem sair do modo visual e sem perder a seleção atual?

16

Geralmente, preciso recuar manualmente, mas quando entro em um modo visual, selecione minhas linhas para recuar e pressione <ou >, deixo o modo visual, querendo ou não.

Eu prefiro tê-lo para permanecer no modo visual e manter intacta minha seleção e posição do cursor.

Como posso conseguir isso?

Akiva
fonte
1
Existe alguma chance de um remapeamento fazer o truque? Algo como :vmap < <a?
Feffe

Respostas:

19

Eu tenho isso no meu vimrc:

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

Observe que você também pode simplesmente usar .(ponto) para repetir a última ação do recuo.

VanLaser
fonte
Quase perfeito, salve que meu cursor não se move com a linha.
Akiva
1
@ Akiva Talvez você queira adicionar um ^no final desse mapeamento? ie >gv^?
Martin Tournoij
2
O cursor parece se mover (ou não), dependendo da sua posição em relação ao texto recuado. Não está claro para mim onde você deseja que o cursor fique: no mesmo número de coluna ou no mesmo caractere? Além disso, você sabe que ainda pode mover o cursor, por exemplo j, com k, letc. enquanto estiver no modo visual?
VanLaser
2
Honestamente, eu apenas coloquei <Right>E <Left>depois dos comandos, e isso funcionou bem.
Akiva
9

Sei que essa não é uma solução automática, mas você pode fazer isso usando gvo recuo visual.

Isso entrará no modo visual com a seleção anterior selecionada e o cursor na última linha. Veja :h gvpara mais informações.

Tumbler41
fonte
-2

Tentei adicionar o seguinte mapeamento ao meu vimrc:

vmap < <a
vmap > >a

Parece ter resultados interessantes, talvez seja isso que você está procurando?

Feffe
fonte