从vim会话中删除缓冲区

jjt*_*jjt 10 windows vim

在保存会话之前,我没有正确删除缓冲区吗?它似乎浮现在我打开的每个缓冲区上.我使用gvim与标准:tabe:tabnew命令.

  1. 清洁gvim的开始
  2. 我打开了一些标签:tabe,做了一些工作
  3. :mksession! ~/session 保存我的会话状态
  4. 不需要缓冲区#14, :14bd
  5. :ls 确认#14已删除
  6. :mksession! ~/session 再次保存会话
  7. 做一天的工作, :qa
  8. 第二天加载gvim, :so ~/session
  9. 缓冲区14仍然存在!!
  10. ???
  11. 没有利润

ZyX*_*ZyX 7

保存/恢复会话时不保留缓冲区编号.因此,如果您有15个打开的缓冲区并删除一个缓冲区,则将有14个缓冲区.当会话恢复时,这14个缓冲区将被赋予2到15的数字,无论它们之前的数字是多少(在vim启动时,未命名的缓冲区采用数字1,它将被会话文件关闭).因此,检查会话文件创建的#14缓冲区是否与旧的#14缓冲区具有相同的文件名.

更新:我检查了会话文件,发现该args命令很可能导致问题.我是对的,缓冲区#14是从shell打开的吗?尝试创建以下命令并使用它而不是bd:

command -nargs=? -bang BW :silent! argd % | bw<bang><args>
Run Code Online (Sandbox Code Playgroud)