我可以修复一个缓冲区,以便从 vim 窗口中删除它的唯一方法是关闭它吗?
例如,我正在使用 NERDtree 插件,它在 vim 窗口中显示文件系统。有时我忘记在使用 quickfix 命令之前将焦点更改为其他窗口,并且错误文件最终替换了文件树。(更不用说NERDtree的窗口默认宽度只有31)
编辑:
我试图用这个问题实现的是在 vim 中模拟 Eclipse 的视图和编辑器的概念。在这个术语中,NERDTree(和其他注定专门显示信息的插件)将是一个视图,而其他窗口将是编辑器。
这并不完全是一个答案,但如果你搞砸了,Ctrl-^ 会撤消缓冲区内容的更改。
我写了一个自动命令来做到这一点。将以下内容添加到 vimrc 将防止 NERDtree 缓冲区被覆盖:
autocmd BufEnter * if bufname("#") =~ "NERD_tree" && bufname("%") !~ "NERD_tree" | b# | endif
每次打开新缓冲区时,自动命令都会运行——如果它检测到前一个缓冲区是 NERDtree 而当前缓冲区不是NERDtree,那么它将返回到 NERDtree 缓冲区,本质上是“锁定”NERDtree。