我得到“结尾的空白”错误试图犯git的一些文件。
我想自动权利之前,我保存Python文件删除这些尾随空格字符。
你可以配置Vim来做到这一点? 如果是这样,怎么样?
我得到“结尾的空白”错误试图犯git的一些文件。
我想自动权利之前,我保存Python文件删除这些尾随空格字符。
你可以配置Vim来做到这一点? 如果是这样,怎么样?
我找到了答案在这里 。
添加以下到我的.vimrc文件里没有的伎俩。
autocmd BufWritePre *.py :%s/\s\+$//e
上面加上节省的光标位置编译:
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()
如果你想在保存到任何文件应用此,离开了第二个autocmd
,并使用通配符*
:
autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
我通常还具有:
match Todo /\s\+$/
在我.vimrc
文件中,所以行空白的那一端被加亮后。
藤堂是一个语法高亮显示组名称是用于高亮显示了关键字,比如TODO
, FIXME
或XXX
。 它有一个烦人丑陋淡黄底色,我觉得这是最好的,以高亮显示您不想要的东西在你的代码:-)
余两个突出现有结尾的空白,并且还剥离前后的空白字符。
配置我的编辑器(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()
我和“自动带”从文件在我的〜/ .vimrc再次.RB红宝石文件,保存他们的时候,在我的情况*
function! TrimWhiteSpace()
%s/\s\+$//e
endfunction
autocmd BufWritePre *.rb :call TrimWhiteSpace()
这里是一种由一个以上的文件类型进行过滤。
autocmd FileType c,cpp,python,ruby,java autocmd BufWritePre <buffer> :%s/\s\+$//e
复制和粘贴从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\+$/
我看到在评论这一解决方案VIM维基-删除不需要的空间
我真的很喜欢它。 添加一个.
在不必要的空格。
.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()
这是我如何做。 我不记得我是从TBH偷走了。
autocmd BufWritePre * :call <SID>StripWhite()
fun! <SID>StripWhite()
%s/[ \t]\+$//ge
%s!^\( \+\)\t!\=StrRepeat("\t", 1 + strlen(submatch(1)) / 8)!ge
endfun
简单地剥离从文件结尾的空白溶液不是在所有情况下是可接受的。 这将在已经从一开始这个政策的一个项目工作,所以没有这样的空白,你不只是增加自己在即将提交。
假设你希望只是不增加新的实例尾随空白的,没有,你没有编辑行影响现有的空白,以保持你的提交免费这无关你的工作变动。
在这种情况下,用git,你可以可以使用这样一个脚本:
#!/bin/sh
set -e # bail on errors
git stash save commit-cleanup
git stash show -p | sed '/^\+/s/ *$//' | git apply
git stash drop
也就是说,我们藏匿的更改,然后过滤所有的+
的DIFF线以消除他们的尾随空白,因为我们重新申请更改到工作目录。 如果此命令管道是成功的,我们放弃了藏匿。
其他方法在这里有点不为我的MacVim在使用时工作.vimrc
文件。 因此,这里是一个没有和亮点尾随空格:
set encoding=utf-8
set listchars=trail:·
set list
autocmd BufWritePre * :%s/\s\+$//<CR>:let @/=''<CR>
对于谁想要运行特定的文件类型(文件类型并不总是可靠的)人:
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
如果修剪空白,你只能做在那些已经干净的文件。 “在罗马的时候...”。 这是一个好礼仪在哪里虚假的变化是不受欢迎的代码库工作时。
此功能可检测尾随空白,并打开微调只有当它已经干净。
这一观点的信用去评论这里的宝石: https://github.com/atom/whitespace/issues/10 (最长的bug票注释流过)
autocmd BufNewFile,BufRead *.test call KarlDetectWhitespace()
fun! KarlDetectWhitespace()
python << endpython
import vim
nr_unclean = 0
for line in vim.current.buffer:
if line.rstrip() != line:
nr_unclean += 1
print "Unclean Lines: %d" % nr_unclean
print "Name: %s" % vim.current.buffer.name
cmd = "autocmd BufWritePre <buffer> call KarlStripTrailingWhitespace()"
if nr_unclean == 0:
print "Enabling Whitespace Trimming on Save"
vim.command(cmd)
else:
print "Whitespace Trimming Disabled"
endpython
endfun
fun! KarlStripTrailingWhitespace()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun