如何仅更改 NERDTree 中的列颜色

How to change column colors in the NERDTree only

我想为 Cobol 开发设置 VIM 并希望标记第 7 列到第 11 列的行以指示代码区域。然而,当我在我的 vimrc 文件中添加这行代码时,它也给 NERDTree 着色了。

set colorcolumn=7,11,73,80
autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p

如何使 NERDTree 列不着色并仅在工作文件上保持着色?

在您的 vimrc 中添加以下行:

set colorcolumn=7,11,73,80

您为 window-local 选项定义了一个全局值,每个新 window 都会重复使用该选项。它是为第一个 window 设置的,它传递给第二个 window,等等

由于该特定选项的特定值仅适用于 Cobol 缓冲区,因此您应该使用 Vim 的内置文件类型插件支持:

  1. 确保您的 vimrc:

    中有 其中之一
    filetype plugin on
    filetype plugin indent on
    filetype indent plugin on
    

    :help :filetype

  2. 在您的 Vim 运行时下创建 after/ftplugin/cobol.vim。在典型的 Unix 系统上,它应该是这样的:

    $HOME/.vim/after/ftplugin/cobol.vim
    
  3. 并添加以下行:

    setlocal colorcolumn=7,11,73,80
    

    我们使用 :help :setlocal 来确保该选项不会传递给其他 windows。