Referindo-se a tarefas de limpeza como (mas não limitadas a) as detalhadas nestas perguntas:
existe uma maneira de aplicar esses comandos apenas às linhas dos arquivos que foram realmente modificados? Isso é para manter a saída do diff focada na mudança real após a edição do código fonte (um revisor de código em potencial não ficaria confuso com as alterações envolvidas na limpeza de todo o arquivo), sem introduzir novos problemas de formatação.
:changes
não funciona sem muita invasão; como parece que essas informações são armazenadas no arquivo viminfo, e não há como ver quais alterações você fez nesta sessão e qual a anterior ... A menos que você desative o arquivo viminfo, é claro, mas isso é bastante pesado ... gostaria de ser provado errado aqui, embora :-)Respostas:
Você pode usar o comando
folddoopen
para executar um comando apenas nas linhas que não estão dentro de uma dobra fechada.Por exemplo, você pode remover o espaço em branco do final de linhas com o comando:
Para aplicar isso apenas às linhas que atualmente não estão dentro de uma dobra fechada, adicione
folddopen
assim:folddoopen
também pode ser abreviado parafoldd
.Se você estiver usando o Vim como a ferramenta diff do controle de origem, poderá usá-lo para aplicar edições apenas às linhas alteradas enquanto visualiza o diff.
Observe que, por padrão, o modo diff do Vim exibe algumas linhas antes e depois de cada seção alterada. Portanto, para não afetar as linhas imediatamente antes ou depois das linhas alteradas, é necessário primeiro definir
context
,diffopt
por0
exemplo:Para edições manuais, você também pode achar a
foldopen
opção útil. Ele define quais tipos de comandos farão com que as dobras sejam abertas. Embora observe que isso não impede que a edição ocorra dentro das dobras da mesma maneira que ofolddoopen
comando.(Se você quer dizer outra coisa com "as linhas dos arquivos que foram realmente modificadas", precisará encontrar uma maneira de dobrar as linhas inalteradas antes de executar o comando: a maneira mais fácil é manter uma cópia inalterada do arquivo e use o vimdiff manualmente.)
fonte
:folddoopen
, parece um comando muito útil. Eu também queria oferecer que, se você estiver usando o fugitive.vim , poderá ver com mais facilidade a diferença do seu buffer atual com o:Gdiff
comando:vsp new
, then:read !git show HEAD~1:path
e finalmente:windo diffthis
(e usando sua solução).