在Git中提交一些文件时,我得到了“尾随空白”错误。

我想在保存Python文件之前自动删除这些尾随的空白字符。

您可以配置Vim来实现这一点吗?如果有,怎么做?


当前回答

autocmd BufWritePre *.py execute 'norm m`' | %s/\s\+$//e | norm g``

这将使光标保持在保存之前的相同位置

其他回答

在.vimrc文件中使用时,这里的其他方法在MacVim中不知何故对我不起作用。这里有一个这样的例子,它突出显示了尾随空格:

set encoding=utf-8
set listchars=trail:·
set list

下面是一种通过多个FileType进行过滤的方法。

autocmd FileType c,cpp,python,ruby,java autocmd BufWritePre <buffer> :%s/\s\+$//e

对于那些想要为特定的文件类型(FileTypes并不总是可靠的)运行它的人:

autocmd BufWritePre *.c,*.cpp,*.cc,*.h,*.hpp,*.py,*.m,*.mm :%s/\s\+$//e

或者使用vim7:

autocmd BufWritePre *.{c,cpp,cc,h,hpp,py,m,mm} :%s/\s\+$//e

我在这里找到了答案。

在我的.vimrc文件中添加以下内容就成功了:

autocmd BufWritePre *.py :%s/\s\+$//e

末尾的标志表示如果搜索模式失败,该命令不会发出错误消息。。更多信息请参见:h:s_flags。

我就是这么做的。我不记得从哪里偷来的了。

autocmd BufWritePre * :call <SID>StripWhite()
fun! <SID>StripWhite()
    %s/[ \t]\+$//ge
    %s!^\( \+\)\t!\=StrRepeat("\t", 1 + strlen(submatch(1)) / 8)!ge
endfun