Go (Golang) 编程语言带有一个名为go fmt
. 它是一个代码格式化程序,可自动格式化您的代码(对齐、字母排序、制表符、间距、成语......)。它真的很棒。
所以我发现了这个在 Vim 中使用它的小自动命令,每次缓冲区都保存到文件中。
au FileType go au BufWritePre <buffer> Fmt
Fmt 是 Go vim 插件自带的功能。
这真的很棒,但它有1个问题。每次格式化程序写入缓冲区时,它都会在撤消/重做历史记录中创建一个跳转。当尝试撤消/重做更改时,这变得非常痛苦,因为每个第二次更改都是格式化程序(使光标跳转到第 1 行)。
所以我想知道,有没有办法在触发后丢弃撤消/重做历史中的最新更改Fmt
?
编辑:
好的,到目前为止我有:
au FileType go au BufWritePre <buffer> undojoin | Fmt
但还不是很好。根据:h undojoin
,撤消后不允许撤消加入。果然,当我尝试:w
撤消后它会触发一个错误。
那么我该如何实现这样的伪代码:
if lastAction != undo then
au FileType go au BufWritePre <buffer> undojoin | Fmt
end
如果我弄清楚了最后一点,我想我有一个解决方案。