[vim] vim에서 후행 공백을 자동으로 제거하는 방법

git에서 일부 파일을 커밋하려고하는 ‘trailing whitespace’오류가 발생합니다.

파이썬 파일을 저장하기 직전에 후행 공백 문자를 자동으로 제거하고 싶습니다.

이를 위해 vim을 구성 할 수 있습니까? 그렇다면 어떻게?



답변

나는 여기서 답을 찾았다 .

내 .vimrc 파일에 다음을 추가하면 트릭을 얻었습니다.

autocmd BufWritePre *.py :%s/\s\+$//e


답변

위의 커서 위치와 저장 커서 위치의 컴파일 :

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는 , 또는 과 같은 키워드를 강조 표시하는 데 사용되는 구문 강조 그룹 이름 입니다 . 성가 시게 못생긴 노란 배경색을 가지고 있으며 코드에서 원하지 않는 것을 강조하는 것이 가장 좋습니다 🙂TODOFIXMEXXX


답변

나는 기존의 후행 공백을 강조하고 후행 공백을 제거합니다.

끝에 공백을 표시하도록 편집기 (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()