在Git中提交一些文件时,我得到了“尾随空白”错误。
我想在保存Python文件之前自动删除这些尾随的空白字符。
您可以配置Vim来实现这一点吗?如果有,怎么做?
在Git中提交一些文件时,我得到了“尾随空白”错误。
我想在保存Python文件之前自动删除这些尾随的空白字符。
您可以配置Vim来实现这一点吗?如果有,怎么做?
当前回答
我既突出显示现有的尾随空白,也去掉尾随空白。
我配置我的编辑器(vim)在结尾显示空白,例如。
在我的。vimrc的底部:
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
在保存文件时,我会“自动剥离”它,在我的情况下*。Rb为ruby文件,同样在我的~/.vimrc中
function! TrimWhiteSpace()
%s/\s\+$//e
endfunction
autocmd BufWritePre *.rb :call TrimWhiteSpace()
其他回答
下面是一种通过多个FileType进行过滤的方法。
autocmd FileType c,cpp,python,ruby,java autocmd BufWritePre <buffer> :%s/\s\+$//e
编译以上加上保存光标位置:
function! <SID>StripTrailingWhitespaces()
if !&binary && &filetype != 'diff'
let l:save = winsaveview()
keeppatterns %s/\s\+$//e
call winrestview(l:save)
endif
endfun
autocmd FileType c,cpp,java,php,ruby,python autocmd BufWritePre <buffer> :call <SID>StripTrailingWhitespaces()
如果你想在保存到任何文件时应用此命令,请省略第二个autocmd并使用通配符*:
autocmd BufWritePre,FileWritePre,FileAppendPre,FilterWritePre *
\ :call <SID>StripTrailingWhitespaces()
我既突出显示现有的尾随空白,也去掉尾随空白。
我配置我的编辑器(vim)在结尾显示空白,例如。
在我的。vimrc的底部:
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
在保存文件时,我会“自动剥离”它,在我的情况下*。Rb为ruby文件,同样在我的~/.vimrc中
function! TrimWhiteSpace()
%s/\s\+$//e
endfunction
autocmd BufWritePre *.rb :call TrimWhiteSpace()
我在这里找到了答案。
在我的.vimrc文件中添加以下内容就成功了:
autocmd BufWritePre *.py :%s/\s\+$//e
末尾的标志表示如果搜索模式失败,该命令不会发出错误消息。。更多信息请参见:h:s_flags。
autocmd BufWritePre *: % s / \ \ + $ / / < CR >:让@ / = " < CR >