我正在尝试创建一个autocmd
,当我退出插入模式时,它会替换文件中的所有空格。然而,AFAIK会使Vim记住模式并删除那里已有的模式。
" Add function for remove tailing whitespaces
command! CleanupTrailingSpaces :%s/\s\+$//ge | :nohlsearch
autocmd InsertLeave * :CleanupTrailingSpaces
是否有:s[ubstitute]
的标志会使其无法保存模式?
答案 0 :(得分:8)
这样的标志会有用,但尚不存在。但是,您可以像这样保存和重置寄存器:
" Add function for remove tailing whitespaces
command! CleanupTrailingSpaces let reset = @/ | %s/\s\+$//ge | let @/ = reset | nohlsearch
autocmd InsertLeave * :CleanupTrailingSpaces
答案 1 :(得分:3)
我从vimcasts获得了类似的东西。 : - )
function! <SID>StripTrailingWhitespaces()
" Preparation: save last search, and cursor position.
let _s=@/
let l = line(".")
let c = col(".")
" Do the business:
%s/\s\+$//e
" Clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
nnoremap <silent> <F5> :call <SID>StripTrailingWhitespaces()<CR>
autocmd BufWritePre *.py,*.js :call <SID>StripTrailingWhitespaces()