Vim 防止在autocmd中卸载缓冲区
我正在编写一个Vim 防止在autocmd中卸载缓冲区,vim,autocmd,Vim,Autocmd,我正在编写一个BufUnloadautocmd,我希望有条件地防止缓冲区从autocmd中实际卸载或关闭。有办法做到这一点吗 例如,我想使用autocmd将缓冲区的内容用作mercurial的提交消息,autocmd执行以下操作: autocmd BufUnload <buffer> !hg ci -l logfile autocmd BufUnload!hgci-l日志文件 因此,如果提交失败(hg命令返回非零错误代码),我想让缓冲区保持打开和不变。我认为这是不可能的(至少我无
BufUnload
autocmd
,我希望有条件地防止缓冲区从autocmd中实际卸载或关闭。有办法做到这一点吗
例如,我想使用autocmd将缓冲区的内容用作mercurial的提交消息,autocmd执行以下操作:
autocmd BufUnload <buffer> !hg ci -l logfile
autocmd BufUnload!hgci-l日志文件
因此,如果提交失败(
hg
命令返回非零错误代码),我想让缓冲区保持打开和不变。我认为这是不可能的(至少我无法实现这一点,即使:在BufUnload
上抛出异常),但没有任何东西阻止你重新编辑同一个文件(假设它被正确地持久化)立即再次。您可以通过扩展(')从autocmd中获取文件规范。这可能有助于您实现目标。我认为这是不可能的(至少我无法实现这一点,即使:在BufUnload上抛出异常,但没有任何东西阻止您重新编译:
立即再次编辑相同的文件(假设它已正确持久化)。您可以通过展开(')从autocmd中获取文件规范。这可能有助于实现您的目标。我认为这是不可能的(至少我无法做到这一点,即使当:在BufUnload
上抛出异常时也是如此),但没有任何东西可以阻止您立即重新编辑相同的文件(假设它被正确保存)。您可以通过展开从autocmd中获取filespec(“。可能会帮助您实现目标。我认为这是不可能的(至少我无法实现这一点,即使:在BufUnload
上引发异常),但没有任何东西阻止您重新编辑同一个文件(假设该文件已正确持久化)再次。您可以通过expand(')从autocmd中获取文件规范。这可能有助于您实现目标。我建议将此消息保存在变量中。在aurum中(VCS插件↔Vim集成)有以下逻辑编码:当清除或写入带有提交消息的缓冲区时(触发实际提交并清除),我保存三个变量:
提交消息
当前提交十六进制(您可以使用hglog-r.
查看它)
当前存储库根目录
。然后,当再次提交某个内容时,使用以下逻辑:如果当前存储库根与保存的根相同,并且当前提交十六进制也相同,则从变量中获取提交消息并初始化缓冲区
以下行为的原因:
如果提交失败,我希望恢复提交消息(与您的相同)
如果我做了hg rollback
,编辑了一些内容并想再次提交,我想恢复提交消息
如果我关闭提交缓冲区,因为我记得我想编码更多的更改,我想
如果我没有执行上述任何操作,我不希望看到旧的提交消息
保存当前提交十六进制是为了区分前三种情况和最后一种情况。我建议将此消息保存在一个变量中↔Vim集成)有以下逻辑编码:当清除或写入带有提交消息的缓冲区时(触发实际提交并清除),我保存三个变量:
提交消息
当前提交十六进制(您可以使用hglog-r.
查看它)
当前存储库根目录
。然后,当再次提交某个内容时,使用以下逻辑:如果当前存储库根与保存的根相同,并且当前提交十六进制也相同,则从变量中获取提交消息并初始化缓冲区
以下行为的原因:
如果提交失败,我希望恢复提交消息(与您的相同)
如果我做了hg rollback
,编辑了一些内容并想再次提交,我想恢复提交消息
如果我关闭提交缓冲区,因为我记得我想编码更多的更改,我想
如果我没有执行上述任何操作,我不希望看到旧的提交消息
保存当前提交十六进制是为了区分前三种情况和最后一种情况。我建议将此消息保存在一个变量中↔Vim集成)有以下逻辑编码:当清除或写入带有提交消息的缓冲区时(触发实际提交并清除),我保存三个变量:
提交消息
当前提交十六进制(您可以使用hglog-r.
查看它)
当前存储库根目录
。然后,当再次提交某个内容时,使用以下逻辑:如果当前存储库根与保存的根相同,并且当前提交十六进制也相同,则从变量中获取提交消息并初始化缓冲区
以下行为的原因:
如果提交失败,我希望恢复提交消息(与您的相同)
如果我做了hg rollback
,编辑了一些内容并想再次提交,我想恢复提交消息
如果我关闭提交缓冲区,因为我记得我想编码更多的更改,我想
如果我没有执行上述任何操作,我不希望看到旧的提交消息
保存当前提交十六进制是为了区分前三种情况和最后一种情况。我建议将此消息保存在一个变量中↔Vim集成)有以下逻辑编码:当清除或写入带有提交消息的缓冲区时(触发实际提交并清除),我保存三个变量:
提交消息
当前提交十六进制(您可以使用hglog-r.
查看它)
当前存储库根目录
.那么当你做某事的时候