Vi 및 Vim에 저장할 때 후행 공백을 자동으로 제거하는 방법은 무엇입니까?

Vi 및 Vim에 저장할 때 후행 공백을 자동으로 제거하는 방법은 무엇입니까?

.vimrc파일을 저장할 때 뒤따르는 공백을 자동으로 제거하는 설정이 있나요 ?

이상적으로는 (안전을 위해) 특정 파일에 대해서만 이 기능을 갖고 싶습니다.*.rb

답변1

이는 모든 파일(.vimrc 파일)에 적용됩니다.

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

이는 Ruby(.rb) 파일(.vimrc 파일)에만 작동합니다.

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

답변2

커서 위치를 유지하려면 다음 명령을 사용하십시오.

function! <SID>StripTrailingWhitespaces()
    let l = line(".")
    let c = col(".")
    %s/\s\+$//e
    call cursor(l, c)
endfun

그렇지 않으면 커서는 저장 후 마지막으로 교체된 줄의 시작 부분에 있게 됩니다.

: 줄 끝에 공백이 있습니다 122. 온라인 상태 982이며 입력 중 입니다 :w. 위치를 복원하지 못하면 커서가 줄 시작 부분에서 끝나고 122작업 흐름이 종료됩니다.

설정을 사용하여 함수 호출 autocmd, 몇 가지 예:

" Using file extension
autocmd BufWritePre *.h,*.c,*.java :call <SID>StripTrailingWhitespaces()

" Often files are not necessarily identified by extension, if so use e.g.:
autocmd BufWritePre * if &ft =~ 'sh\|perl\|python' | :call <SID>StripTrailingWhitespaces() | endif

" Or if you want it to be called when file-type i set
autocmd FileType sh,perl,python  :call <SID>StripTrailingWhitespaces()

" etc.

사용도 가능하지만 이 경우에는 필요하지 않습니다.위치 가져오기()통과:

let save_cursor = getpos(".")
" Some replace command
call setpos('.', save_cursor)

" To list values to variables use:
let [bufnum, lnum, col, off] = getpos(".")

답변3

내 거후행 공백 플러그인 제거이렇게 하면 다양한 단순 부동 소수점과 달리 :autocmds특수한 경우도 처리하고 사용자에게 쿼리하거나 후행 공백이 있는 쓰기를 중단할 수 있습니다.

플러그인 페이지에는 대안에 대한 링크도 포함되어 있습니다.빔 팁 위키.

관련 정보