2011-03-08 155 views
8

在保存会话之前,我没有正确删除缓冲区吗?它似乎在我打开的每个缓冲区都流淌着。我使用带有标准:tabe:tabnew命令的gvim。从vim会话中删除缓冲区

  1. gvim的清洁开始
  2. 我打开多个选项卡与:tabe,做了一些工作
  3. :mksession! ~/session救我的会话状态
  4. 不需要缓冲#14,:14bd
  5. :ls确认#14被删除
  6. :mksession! ~/session再次保存会话
  7. D一天一个工作,:qa
  8. 最多可以装入GVIM第二天,:so ~/session
  9. 缓冲区14依然存在!
  10. ???这个我几乎每天都做的正是它为我工作得很好 -
  11. 没有利润
+0

如果你使用'bw'而不是'bd'? – Benoit 2011-03-09 06:25:07

+2

+1仅用于“无利润”:) – 2011-03-10 22:11:43

回答

7

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

更新:我检出了会话文件,发现args命令很可能会造成麻烦。我是否正确,缓冲#14是从外壳打开的?尝试创建下面的命令,并使用它,而不是bd

command -nargs=? -bang BW :silent! argd % | bw<bang><args> 
+0

我想更重要的是,缓冲区#14中的文件仍然存在。 对我来说,他们保存他们的号码。 – jjt 2011-03-10 04:20:48

+0

Ahhh是的,它是通过上下文“使用现有vim编辑”打开的。谢谢! – jjt 2011-03-18 21:23:41

+0

我..我不明白....(Vim n00b这里) – 2015-09-03 05:46:52

4

您正确地做这个。 如果您使用bd保存会话并取消列出缓冲区,则在恢复时应保持不公开。

为了找出发生了什么问题,我建议您打开会话文件并搜索'badd'(例如:g/badd以获得弹出列表)。这些badd是使用正确索引将缓冲区加载回缓冲区列表的命令。

另外,我可能用另一个名字保存第二个会话并在两个文件之间做一个vimdiff,只是为了确保没有任何问题。

会话文件非常容易阅读,如果您遇到问题,您可以随时使用:h作为特定命令。

+0

是的,我结束了会话并重新开始。任何时候我打开会话,列出缓冲区,然后以不同的名称保存,buf#和文件仍然会被写入会话文件,并带有badd命令。 – jjt 2011-03-10 04:22:49

+0

只是要清楚...你正在保存会话(例如':mks session.first'),然后删除缓冲区':db 14',然后创建一个新的会话':mks session.second',然后你'在“session.second”中的某处再次看到'badd +14 myfile'这行? – PDug 2011-03-10 07:24:53

+0

1)'badd'不是会话文件如何将缓冲区添加到列表的唯一方式。 2)'badd'与缓冲区号完全无关后的数字。 – ZyX 2011-03-10 22:11:18

0

确定:这是讨厌我了。我有一个命令(Arch Linux的:Krusader文件管理器),使我

vim --remote 

右键单击Krusader文件并打开Vim的那个文件。我也通过我的〜/来保存Vim会话。vimrc:

" Save session on quitting Vim: 
autocmd! VimLeave * mksession! ~/.vim/vim_session.vim 
" mksession! overwrites old session 

" Restore session on starting Vim: 
autocmd! VimEnter * source ~/.vim/vim_session.vim 

但是,我通过'vim --remote'外部打开的文件,例如,

/mnt/Vancouver/Programming/scripts/chunk.sh 

在会话之间固执己见,即使按照惯例:bd,:bw,:bw!等命令,和/或删除vim会话文件。

望着vim_session.vim文件,我注意到有问题的 'argadd' 行,持久性文件:

argadd /mnt/Vancouver/Programming/scripts/chunk.sh 

所以,

:help arglist 

:argd /mnt/Vancouver/Programming/scripts/chunk.sh 

删除这样的说法。

最后,在从缓冲区列表(:bd)中清除该文件并重新启动Vim之后,恢复前一个会话,然后减去该文件。


编辑:如果你不想做,必须键入长路径“:argd”命令,你不需要有任何上市“:ARG”,只是做

:argd*