我试图在git中提交一些文件时出现"尾随空白"错误.
我想在保存python文件之前自动删除这些尾随的空白字符.
你能配置vim来做到这一点吗?如果是这样,怎么样?
我在这里找到了答案.
将以下内容添加到我的.vimrc文件中就可以了.
autocmd BufWritePre *.py :%s/\s\+$//e
编译以上加上保存光标位置:
fun!StripTrailingWhitespaces() let l = line(".") let c = col(".") %s/\s\+$//e call cursor(l, c) endfun autocmd FileType c,cpp,java,php,ruby,python autocmd BufWritePre :call StripTrailingWhitespaces()
如果要将此保存应用于任何文件,请忽略第二个autocmd
并使用通配符*
:
autocmd BufWritePre * :callStripTrailingWhitespaces()
我通常也有一个:
match Todo /\s\+$/
在我的.vimrc
文件中,以便行尾空格为高亮显示.
Todo是一个语法hilighting 组名,用于hilighting关键字,如TODO
,FIXME
或XXX
.它有一种令人讨厌的淡黄色背景颜色,我发现它是你在代码中不想要的东西最好的东西:-)
我都突出显示现有的尾随空格,并剥离尾随空格.
我配置我的编辑器(vim)以显示最后的空白区域,例如
在我的.vimrc的底部:
highlight ExtraWhitespace ctermbg=red guibg=red match ExtraWhitespace /\s\+$/ autocmd BufWinEnter * match ExtraWhitespace /\s\+$/ autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@并且我在保存它们时从文件中自动删除它,在我的情况下*.rb用于ruby文件,再次在我的〜/ .vimrc中
function! TrimWhiteSpace() %s/\s\+$//e endfunction autocmd BufWritePre *.rb :call TrimWhiteSpace()
5> syvex..:这是一种通过多个FileType进行过滤的方法.
autocmd FileType c,cpp,python,ruby,java autocmd BufWritePre:%s/\s\+$//e
6> lazysoundsys..:复制并粘贴自http://blog.kamil.dworakowski.name/2009/09/unobtrusive-highlighting-of-trailing.html(该链接不再有效,但您需要的位于下方)
"这样做的好处是不会突出显示您在行尾输入的每个空格,只有当您打开文件或退出插入模式时才会这样.非常整洁."
highlight ExtraWhitespace ctermbg=red guibg=red au ColorScheme * highlight ExtraWhitespace guibg=red au BufEnter * match ExtraWhitespace /\s\+$/ au InsertEnter * match ExtraWhitespace /\s\+\%#\@
7> Diego Juliao..:我在VIM Wikia的评论中看到了这个解决方案 - 删除不需要的空格
我真的很喜欢它.
把它放在你的.
在不需要的空白处添加一个..vimrc
" Removes trailing spaces function TrimWhiteSpace() %s/\s*$// '' endfunction set list listchars=trail:.,extends:> autocmd FileWritePre * call TrimWhiteSpace() autocmd FileAppendPre * call TrimWhiteSpace() autocmd FilterWritePre * call TrimWhiteSpace() autocmd BufWritePre * call TrimWhiteSpace()
8> gregf..:这就是我的做法.我不记得从哪里偷了它.
autocmd BufWritePre * :callStripWhite() fun! StripWhite() %s/[ \t]\+$//ge %s!^\( \+\)\t!\=StrRepeat("\t", 1 + strlen(submatch(1)) / 8)!ge endfun
除非您在vim中写入二进制文件,否则这可能永远不会成为问题.