De tempos em tempos, tenho que trabalhar com código que não é recuado para o nível de recuo que o Vim configurou (4 espaços por nível), geralmente após copiar / colar algo no arquivo. Eu costumo me contentar com <<e >>. O problema é que eles não saltam para o próximo nível de recuo, apenas adicionam ou subtraem 4 espaços.
Se eu tiver um código como este
if condition:
do this
do that
fazendo >>on do thatresultará em
if condition:
do this
do that
Eu quero que isso aconteça
if condition:
do this
do that
Além de corresponder facilmente ao recuo da linha acima, quero que ele pule para o próximo nível de recuo, e não adicione 4 espaços.
Isto é o que tenho no meu .vimrc em relação à indentação
:set tabstop=4 shiftwidth=4 expandtab
>>e, <<respectivamente, adicione e remova o recuo, que não é o que você deseja. O que você quer é "formatação", o que é feito ==.
:nnoremap >> ^i<tab><esc>se você realmente deseja o comportamento das guias #>>
==vai pular para o nível da linha acima. Embora seja uma boa coisa saber, isso não funcionaria em todos os casos em que estou interessado. Como complemento da pergunta, o que eu quero é fazer >>e <<recuar / deduzir até o próximo múltiplo de largura de turno da borda nessa direção. .
==usa equalexprou equalprgpara reformatar as linhas fornecidas.
filetype plugin indent onna sua.vimrc, filetype (e plugin) vai aplicar regras de recuo-relacionado. Ou seja, verifique qual é realmente o seutabstopvalor ( fará; o mesmo para as outras configurações), ao editar e altere esses valores adicionando sua linha a um arquivo 'after', algo como: stackoverflow.com/a/159066/5000478set tabstop?