如何在 vimrc 设置中忽略 nerdtree 缓冲区?

How to ignore nerdtree buffer in vimrc settings?

我的 init.vim 中有以下行:

if !&readonly
  set fileencoding=utf-8
endif

将文件编码设置为 utf-8。它工作正常,除非我将光标放在 nerdtree window 中,在这种情况下我会收到以下错误:

我猜它试图将 nerdtree window 设置为 utf-8。我认为我可以通过在 if 语句中检查 nerdtree 来解决这个问题(这样它就不会尝试为 nerdtree windows 设置文件编码)。我该怎么做?

我已经检查过,书呆子树 window 是:noreadonly & nomodifiable。你收到的消息告诉你一切。你不能修改一个 window 是 'nomodifiable' 即使通过在它上面设置一个选项。尝试:

if !&readonly && &modifiable
  set fileencoding=utf-8
endif

其他选项是在某个变量中记住当前状态:

if !&readonly
    let prev_modifiable = &modifiable
    set modifiable
    set fileencoding=utf-8
    let &modifiable=prev_modifiable
endif