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

时间:2015-01-13 22:34:21

标签: vim

我有一个autocmd,每次退出并进入窗口时都会运行。除了当前窗口之外,它会关闭每个窗口的number

au WinEnter * setlocal number
au WinLeave * setlocal nonumber

但是,我不想在NERDTree窗口中输入行号。将g:NERDTreeShowLineNumbers设置为0也无济于事。只有当窗口是NERDTree窗口时,有没有办法让WinEnter上的自动命令运行?

2 个答案:

答案 0 :(得分:1)

我最好的猜测:

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

注意:我没有使用NerdTree,所以我没有测试任何这个。

答案 1 :(得分:0)

使用文件打开vim时,以及在您打开和关闭NERDTree窗口时,以下操作均有效:

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
  • NERDTree 5.0.0
相关问题