打开文件时,Vim中的当前缓冲区将被替换

时间:2017-10-02 23:27:36

标签: vim macvim

当通过:E命令打开一个新文件时(不是使用ctrl-P插件,这很好用!),Vim和MacVim(8.0.1098)都丢弃了当前缓冲区的内容,所以不可能使用:bn!:bp!命令切换到if。

但是,如果我修改当前缓冲区的内容,然后打开另一个文件,然后尝试关闭MacVim,我收到有关未保存文件的警告消息。所以缓冲区必须仍悬在某处?

此外,如果我拆分窗口并打开文件,则两个缓冲区都保持打开状态。

我的set hidden中有.vimrc并且:set hidden?正在运行hidden,这意味着使用:bn!:bp!滚动隐藏的缓冲区应该工作,但它没有。

2 个答案:

答案 0 :(得分:1)

  

通过:E命令打开新文件时,Vim和MacVim(8.0.1098)都会丢弃当前缓冲区的内容,因此无法切换到使用:bn!和{{ 1}}命令。

您描述的行为与以下内容不一致:

  • 预期的行为,
  • 和我用完全相同的版本获得的行为。

以可重复的方式测试它:

:bp!
  

但是,如果我修改当前缓冲区的内容,然后打开另一个文件,然后尝试关闭MacVim,我收到有关未保存文件的警告消息。所以缓冲区必须仍悬在某处?

是的,它几乎肯定在缓冲区列表中。对于列出的缓冲区尝试$ vim -Nu NORC a.txt starts Vim with a.txt :Explore replaces the current buffer with a netrw buffer (press <CR> on b.txt) replaces the netrw buffer with b.txt :bn (or :bp) replaces the current buffer with a.txt ,对所有缓冲区尝试:ls:ls!应该在#1显示:ls,在#3显示a.txt,而b.txt应该显示相同的信息,加上#2的netrw缓冲区。

另请参阅:ls!

---编辑---

作为参考,:help 'hidden'的预期输出应为:

:ls!

请注意,唯一的&#34;未列出&#34;缓冲区应该是Netrw缓冲区:#{1}}位于#2。

您是否对1 "a.txt" line 1 2u#h- "~/" line 11 3 %a "~/b.txt" line 1 以外的任何与Vim相关的文件或目录进行了更改?

答案 1 :(得分:0)

ctrlP没有问题打开&amp;切换缓冲区表明n​​etrw有问题。

仔细观察后发现我的netrw插件已经过时了。

升级到v162j(通过Vundle)解决了这个问题。