답변:
커서 위치를 유지하려면 다음과 같이 사용하십시오.
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.
getpos () 를 사용할 수도 있지만이 경우에는 필요하지 않습니다 .
let save_cursor = getpos(".")
" Some replace command
call setpos('.', save_cursor)
" To list values to variables use:
let [bufnum, lnum, col, off] = getpos(".")
내 DeleteTrailingWhitespace 플러그인 은이 작업을 수행하며 다양한 간단한 :autocmds
부동 과 달리 특수 사례를 처리하거나 사용자를 쿼리하거나 후행 공백으로 쓰기를 중단 할 수 있습니다.
플러그인 페이지에는 대안에 대한 링크가 있습니다. Vim Tips Wiki 에 대한 토론도 많이 있습니다.