Pau*_*den 192 vim whitespace automation removing-whitespace
我试图在git中提交一些文件时出现"尾随空白"错误.
我想在保存python文件之前自动删除这些尾随的空白字符.
你能配置vim来做到这一点吗?如果是这样,怎么样?
Pau*_*den 202
我在这里找到了答案.
将以下内容添加到我的.vimrc文件中就可以了.
autocmd BufWritePre *.py :%s/\s\+$//e
Run Code Online (Sandbox Code Playgroud)
ste*_*heg 166
编译以上加上保存光标位置:
fun! <SID>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 <buffer> :call <SID>StripTrailingWhitespaces()
Run Code Online (Sandbox Code Playgroud)
如果要将此保存应用于任何文件,请忽略第二个autocmd并使用通配符*:
autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
Run Code Online (Sandbox Code Playgroud)
mat*_*mat 68
我通常也有一个:
match Todo /\s\+$/
Run Code Online (Sandbox Code Playgroud)
在我的.vimrc文件中,以便行尾空格为高亮显示.
Todo是一个语法hilighting 组名,用于hilighting关键字,如TODO,FIXME或XXX.它有一种令人讨厌的淡黄色背景颜色,我发现它是你在代码中不想要的东西最好的东西:-)
Mic*_*ant 51
我都突出显示现有的尾随空格,并剥离尾随空格.
我配置我的编辑器(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()
Run Code Online (Sandbox Code Playgroud)
并且我在保存它们时从文件中自动删除它,在我的情况下*.rb用于ruby文件,再次在我的〜/ .vimrc中
function! TrimWhiteSpace()
%s/\s\+$//e
endfunction
autocmd BufWritePre *.rb :call TrimWhiteSpace()
Run Code Online (Sandbox Code Playgroud)
syv*_*vex 13
这是一种通过多个FileType进行过滤的方法.
autocmd FileType c,cpp,python,ruby,java autocmd BufWritePre <buffer> :%s/\s\+$//e
Run Code Online (Sandbox Code Playgroud)
复制并粘贴自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\+\%#\@<!$/
au InsertLeave * match ExtraWhiteSpace /\s\+$/
Run Code Online (Sandbox Code Playgroud)
我在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()
Run Code Online (Sandbox Code Playgroud)
这就是我的做法.我不记得从哪里偷了它.
autocmd BufWritePre * :call <SID>StripWhite()
fun! <SID>StripWhite()
%s/[ \t]\+$//ge
%s!^\( \+\)\t!\=StrRepeat("\t", 1 + strlen(submatch(1)) / 8)!ge
endfun
Run Code Online (Sandbox Code Playgroud)