Vim autocmd - 运行 在 WinEnter 上为每个缓冲区名称执行命令,EXCEPT {name}

Vim autocmd - Run command on WinEnter for every buffer name EXCEPT {name}

我有一个 autocmd,每次我退出并输入 window 时都会自动运行 运行s。它关闭每个 window 的 number,当前的

除外。
au WinEnter * setlocal number
au WinLeave * setlocal nonumber

但是,我不想要 NERDTree 中的行号 window。将 g:NERDTreeShowLineNumbers 设置为 0 也无济于事。只有当 window 是 而不是 NERDTree window?[=17 时,有什么方法可以在 WinEnter 上设置自动命令 运行 =]

我的最佳猜测:

au WinEnter * if !exists("b:NERDTreeType") | setlocal number | endif
au WinLeave * if !exists("b:NERDTreeType") | setlocal nonumber | endif

注意:我没有使用 NerdTree,所以我没有测试过任何东西。

以下内容在 vim 打开文件时有效,以及当您切换到和退出 NERDTree 时 windows:

au FileType * if !(&ft ==? "nerdtree") | setlocal number | endif
au WinEnter * if !(&ft ==? "nerdtree") | setlocal number | endif
au WinLeave * if !(&ft ==? "nerdtree") | setlocal nonumber | endif

在 CentOS Linux 7.6.1810 上测试

  • vim 7.4
  • 书呆子树 5.0.0