1

我的 init.vim 中有以下行:

if !&readonly
  set fileencoding=utf-8
endif

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

在此处输入图像描述

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

4

1 回答 1

1

我已经检查过了,nerdtree 窗口是:noreadonly & 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
于 2017-02-24T09:56:54.157 回答