调用一个函数而不添加到撤消列表



在保存文件之前,我将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插件。(插件页面有其他插件链接)

最新更新