在我保存文件之前,我已经设置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#\($\n\s*\)\+\%$##
call setpos('.', save_cursor)
endfunction
au BufWritePre * call TrimEndLines()
function AppendEndLine()
let save_cursor = getpos(".")
:silent! %s/^\(.*\)\%$/\1\r/
call setpos(".", save_cursor)
endfunction
au BufWritePre * call AppendEndLine()
答案 0 :(得分:1)
您无法在不丢失撤消历史记录的情况下禁用撤消操作。想想撤消实现;如果你在那里有差距,那将会非常困难。
如果您不担心失去历史,
:set undolevels=-1
(然后恢复到之前的值)将会这样做。
此外,:undojoin
可用于将两个独立的条目融合在一起。但在您的情况下,最好将(自动)更改保留在撤消历史记录中。
PS:有一些插件能够以更强大的方式实现尾部空白删除,例如:我的DeleteTrailingWhitespace plugin。 (插件页面包含指向其他插件的链接。)