gpt4 book ai didi

Vim:退出拆分窗口时删除缓冲区

转载 作者:行者123 更新时间:2023-12-04 17:54:55 25 4
gpt4 key购买 nike

我的 .vimrc 中有这个非常有用的函数:

function! MyGitDiff()
!git cat-file blob HEAD:% > temp/compare.tmp
diffthis
belowright vertical new
edit temp/compare.tmp
diffthis
endfunction

它的作用基本上是在垂直分割窗口中从存储库中打开我当前正在处理的文件,然后与之进行比较。这非常方便,因为我可以轻松地将更改与原始文件进行比较。

但是,有一个问题。完成比较后,我通过键入 :q 删除了拆分窗口。然而,这并没有从缓冲区列表中删除缓冲区,我仍然可以在缓冲区列表中看到 compare.tmp 文件。这很烦人,因为每当我进行新的比较时,我都会收到此消息:

警告:文件“temp/compare.tmp”自编辑开始后已更改。

有没有办法从缓冲区中删除文件并关闭垂直分割窗口?

最佳答案

也许您需要 bwipe 命令?

:bw[ipeout][!] N1 N2 ...
Like |:bdelete|, but really delete the buffer. Everything
related to the buffer is lost. All marks in this buffer
become invalid, option settings are lost, etc. Don't use this
unless you know what you are doing.

一种选择是定义以下内容:

function! DelBuf(filename)
let bname = bufname(filename)
if l:bname != ""
let bidx = buffer_number(l:bname)
exec = "bw " . l:bidx
endif
endfunction

并在函数的开头添加对 DelBuf("comapre.tmp") 的调用。

理论上应该可以像这样将 DelBuf 绑定(bind)到 `bufhidden 事件:

autocmd! bufhidden "compare.tmp" call DelTmp("compare.tmp")

...但出于某种原因,它对我不起作用。

关于Vim:退出拆分窗口时删除缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4527951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com