문제

나는'후행 공백'오류를 저지하려고 어떤 파일에 사용할 수 있습니다..

나는 원하는 이들을 제거하는 공백 문자를 자동적으로 오기 전에 저장하는 파이썬 파일이 있습니다.

구성할 수 있 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 파일, 줄 공백의 끝이 hilight가 있도록 파일.

구문 히힐 라이트 팅 그룹 이름 이는 등장 키워드와 같은 키워드에 사용됩니다 TODO, FIXME 또는 XXX. 그것은 성가신 못생긴 황색 배경색을 가지고 있으며, 나는 그것이 당신에게 물건을 힐 라이트하는 데 가장 적합하다는 것을 알았습니다. ~하지 않다 코드를 원합니다 :-)

나는 모두 하이라이트는 기존 후행 공백하고 또한 지구 후행 공백.

구성 내 편집기(vim)을 보여 흰색 공간이 끝에,예를 들어,

enter image description here

와이의 하단에 my.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()

다음은 둘 이상의 파일 타입으로 필터링하는 방법입니다.

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- 원치 않는 공간을 제거하십시오

정말 좋아. 추가 a . 원치 않는 흰색 공간에서.

enter image description here

이것을 당신에게 넣으십시오 .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>

특정 파일 유형에 대해 실행하려는 사람들의 경우 (Filetypes는 항상 신뢰할 수있는 것은 아닙니다) :

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 (가장 긴 버그 티켓 댓글 스트림)

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top