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 that
resultará 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 equalexpr
ou equalprg
para reformatar as linhas fornecidas.
filetype plugin indent on
na sua.vimrc
, filetype (e plugin) vai aplicar regras de recuo-relacionado. Ou seja, verifique qual é realmente o seutabstop
valor ( 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?