在保存会话之前,我没有正确删除缓冲区吗?它似乎浮现在我打开的每个缓冲区上。我将gvim与标准:tabe
和:tabnew
命令一起使用。
:tabe
打开了一些标签,做了一些工作:mksession! ~/session
保存我的会话状态:14bd
:ls
确认#14已删除:mksession! ~/session
再次保存会话:qa
:so ~/session
答案 0 :(得分:7)
保存/恢复会话时不保留缓冲区编号。因此,如果您有15个打开的缓冲区并删除一个缓冲区,则将有14个缓冲区。当会话恢复时,这14个缓冲区将被赋予2到15的数字,无论它们之前的数字是多少(在vim启动时,未命名缓冲区采用数字1,它将被会话文件关闭)。因此,检查会话文件创建的#14缓冲区是否与旧#14缓冲区具有相同的文件名。
更新:我检查了会话文件,发现args
命令很可能导致问题。我是对的,缓冲区#14是从shell打开的吗?尝试创建以下命令并使用它而不是bd
:
command -nargs=? -bang BW :silent! argd % | bw<bang><args>
答案 1 :(得分:4)
你正在这样做 - 我几乎每天都这样做,它对我来说很好。 如果您使用bd取消列出缓冲区并保存会话,则在恢复时它应保持不列出状态。
为了找出问题所在,我建议打开会话文件并搜索“badd”(例如:g/badd
以获取弹出列表)。这些badd是使用正确的索引将缓冲区加载回缓冲区列表的命令。
另外,我可能会以不同的名称保存第二个会话,并在两个文件之间执行vimdiff,以确保没有任何错误。
会话文件非常易于阅读,如果您遇到困难,您可以始终:h
获取特定命令。
答案 2 :(得分:0)
好的:这也让我烦恼。我有一个命令(Arch Linux:Krusader文件管理器)
vim --remote
这使我能够右键单击Krusader中的文件并在Vim中打开该文件。我还通过我的〜/ .vimrc保存了Vim会话:
" 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&#39;”外部打开的文件,例如
/mnt/Vancouver/Programming/scripts/chunk.sh
在会话之间顽固地坚持,即使在做了平常之后:bd,:bw,:bw!等命令,和/或删除vim会话文件。
查看vim_session.vim文件,我注意到了一个&#39; argadd&#39;与违规的持久性文件对齐:
argadd /mnt/Vancouver/Programming/scripts/chunk.sh
所以,
:help arglist
:argd /mnt/Vancouver/Programming/scripts/chunk.sh
删除该参数。
最后,在从缓冲区列表(:bd)清除该文件并重新启动Vim之后 - 恢复上一个会话,减去该文件。
编辑:如果您不想在执行&#34;:argd&#34;时输入长路径命令,你不需要用&#34;:arg&#34;列出任何东西,只需要做
:argd*