Estou recebendo erros de 'espaço em branco à direita' tentando confirmar alguns arquivos no git.
Quero remover esses caracteres de espaço em branco à direita automaticamente antes de salvar os arquivos python.
Você pode configurar o vim para fazer isso? Se sim, como?
vim
automation
whitespace
removing-whitespace
Paul D. Eden
fonte
fonte
Respostas:
Eu encontrei a resposta aqui .
Adicionar o seguinte ao meu arquivo .vimrc fez o truque.
fonte
e
dos meios finais, se não encontrar o padrão, vi não considera o comando de substituição como falhaCompilação acima, além de salvar a posição do cursor:
Se você deseja aplicar isso ao salvar em qualquer arquivo, deixe de fora o segundo
autocmd
e use um curinga*
:fonte
autocmd FileType c,cpp,java,php,ruby,python
peça para aplicá-la a todos os arquivos.<buffer>
com*
se você quer que ele funcione em todos os arquivoskeepp
, não irá alterar seu histórico de pesquisa, ou sejakeepp %s/\s\+$//e
Eu também normalmente tenho um:
no meu
.vimrc
arquivo, para que o espaço em branco do final da linha fique oculto.Todo sendo um nome de grupo de hilighting de sintaxe usado para palavras-chave de hilighting como
TODO
,FIXME
ouXXX
. Ele tem uma cor de fundo amarelamente irritante e feia, e eu acho que é o melhor para esconder coisas que você não quer no seu código :-)fonte
:hi Todo
. Então eu examinei:hi <Tab>
e:help hi
. Eu considereiCursor
eError
, mas acho que vou tentarmatch VisualNOS /\s\+$/
. Eu posso combinar isso com alguns dosautocmd
s de outras respostas aqui.Destaco o espaço em branco à direita existente e também removo o espaço em branco à direita.
Eu configurei meu editor (vim) para mostrar espaços em branco no final, por exemplo
com isso na parte inferior do meu .vimrc:
e removo automaticamente os arquivos ao salvá-los, no meu caso * .rb para arquivos ruby, novamente no meu ~ / .vimrc
fonte
Aqui está uma maneira de filtrar por mais de um FileType.
fonte
Copiado e colado de http://blog.kamil.dworakowski.name/2009/09/unobtrusive-highlighting-of-trailing.html (o link não funciona mais, mas o que você precisa está abaixo)
"Isso tem a vantagem de não destacar cada espaço digitado no final da linha, apenas quando você abre um arquivo ou sai do modo de inserção. Muito elegante."
fonte
Eu vi essa solução em um comentário no VIM Wikia - Remova espaços indesejados
Eu realmente gostei. Adiciona um
.
a espaços em branco indesejados.Coloque isso no seu
.vimrc
fonte
É assim que estou fazendo. Não me lembro de onde o roubei.
fonte
%s
a global (g) bandeira é inútil como um espaço no fim de linha :-)Uma solução que simplesmente retira o espaço em branco à direita do arquivo não é aceitável em todas as circunstâncias. Ele funcionará em um projeto que teve essa política desde o início e, portanto, não existe espaço em branco que você não tenha apenas se adicionado ao seu próximo commit.
Suponha que você deseje apenas não adicionar novas instâncias do espaço em branco à direita, sem afetar o espaço em branco existente nas linhas que você não editou, a fim de manter seu commit livre de alterações irrelevantes para o seu trabalho.
Nesse caso, com o git, você pode usar um script como este:
Ou seja, escondemos as alterações e filtramos todas as
+
linhas no diff para remover seus espaços em branco à medida que reaplicamos a alteração no diretório de trabalho. Se este canal de comando for bem-sucedido, descartamos o esconderijo.fonte
As outras abordagens aqui de alguma forma não funcionaram para mim no MacVim quando usadas no
.vimrc
arquivo. Então, aqui está um que destaca e destaca os espaços finais:fonte
set listchars=trail:·
dizendo:E474: Invalid argument: listchars=trail:·
. Você pode validar seu exemplo?autocmd BufWritePre * :%s/\s\+$//<CR>:let @/=''<CR>
fonte
Para pessoas que desejam executá-lo para tipos de arquivos específicos (os tipos de arquivo nem sempre são confiáveis):
Ou com vim7:
fonte
Se você aparar espaços em branco, deverá fazê-lo apenas em arquivos que já estejam limpos. "Quando em Roma...". Essa é uma boa etiqueta ao trabalhar em bases de código onde mudanças espúrias não são bem-vindas.
Essa função detecta o espaço em branco à direita e ativa o corte apenas se já estiver limpo.
O crédito para essa ideia vai para uma jóia de um comentário aqui: https://github.com/atom/whitespace/issues/10 (o maior fluxo de comentários de tíquetes de bugs de todos os tempos)
fonte
let _s=@/
e restaurá-lo no final `deixe @ / = _ s` .Neste caso, estamos usando registo buraco negro