Vim
如何在 Vi 和 Vim 中保存時自動去除尾隨空格?
保存文件時是否有
.vimrc
自動刪除尾隨空格的設置?理想情況下(為了安全起見)我只想為某些文件提供此功能,例如
*.rb
這適用於所有文件(在 .vimrc 文件中):
autocmd BufWritePre * :%s/\s\+$//e
這僅適用於 ruby(.rb) 文件(在 .vimrc 文件中):
autocmd BufWritePre *.rb :%s/\s\+$//e
要保持游標位置,請使用以下內容:
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(".")