git에서 일부 파일을 커밋하려고하는 ‘trailing whitespace’오류가 발생합니다.
파이썬 파일을 저장하기 직전에 후행 공백 문자를 자동으로 제거하고 싶습니다.
이를 위해 vim을 구성 할 수 있습니까? 그렇다면 어떻게?
답변
답변
위의 커서 위치와 저장 커서 위치의 컴파일 :
fun! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
keepp %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는 , 또는 과 같은 키워드를 강조 표시하는 데 사용되는 구문 강조 그룹 이름 입니다 . 성가 시게 못생긴 노란 배경색을 가지고 있으며 코드에서 원하지 않는 것을 강조하는 것이 가장 좋습니다 🙂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()
그리고 파일을 저장할 때 파일에서 ‘자동 스트립’합니다. 내 경우에는 루비 파일 * .rb, ~ / .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
답변
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 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()