在保存文件之前,我将vim设置为从行尾修剪空白,并确保在编辑.py文件时在文件末尾只有一个空白行。然而,函数调用结束在撤消历史;我怎么能运行这些功能而不能够撤消它们?
fun! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/s+$//e
call cursor(l, c)
endfun
autocmd FileType * autocmd BufWritePre <buffer> :call <SID>StripTrailingWhitespaces()
function TrimEndLines()
let save_cursor = getpos(".")
:silent! %s#($ns*)+%$##
call setpos('.', save_cursor)
endfunction
au BufWritePre * call TrimEndLines()
function AppendEndLine()
let save_cursor = getpos(".")
:silent! %s/^(.*)%$/1r/
call setpos(".", save_cursor)
endfunction
au BufWritePre * call AppendEndLine()
禁用undo功能会丢失undo历史记录。想想撤销的实现;如果你在那里有一个间隙,那就很难了。
如果你不担心丢失历史记录,
:set undolevels=-1
(然后恢复到之前的值)就可以了。
同样,:undojoin
可以用来将两个分开的条目融合在一起。但在您的情况下,最好将(自动)更改保存在撤消历史记录中。
PS:有一些插件可以以更健壮的方式实现尾部空白的删除,例如我的DeleteTrailingWhitespace插件。(插件页面有其他插件链接)