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
indentation
Dumitru
fonte
fonte
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?
>>
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. .==
usaequalexpr
ouequalprg
para reformatar as linhas fornecidas.Respostas:
Quando você usa um dos comandos
{count}>>
,{count}<<
,>{motion}
ou<{motion}
, em algumas linhas que já foram recuados, e você quer que seu novo nível de recuo para ser um múltiplo de seu'shiftwidth'
valor de opção, você pode ativar a'shiftround'
opção, e adicione essa linha em seuvimrc
:fonte
Se você quiser sempre
>>
recuar para o próximo tabstop e<<
excluir até o último tabstop, poderá religá-los da seguinte forma:Isso moverá o cursor, mas você provavelmente poderá fazer alguns truques de marca para movê-lo de volta.
^
não deixa umam'
marca, mas você pode deixar uma manualmente dentro da encadernação.fonte