在缓冲区切换到后,如何侦听VIM事件以运行命令?

在缓冲区切换到后,如何侦听VIM事件以运行命令?,vim,macvim,vim-plugin,nerdtree,Vim,Macvim,Vim Plugin,Nerdtree,当您在没有文件的情况下打开macvim时,它会显示Nerdtree缓冲区。选择文件时,Nerdtree将关闭,新文件将接管缓冲区。如果打开Nerdtree,它将显示根。这只是第一次发生 我希望Nerdtree保持打开状态,并反映当前文件:NERDTreeFind的功能 我让它大部分工作: autocmd BufWinEnter * call s:openAndFindNerdtree() function! s:openAndFindNerdtree() " This will only

当您在没有文件的情况下打开macvim时,它会显示Nerdtree缓冲区。选择文件时,Nerdtree将关闭,新文件将接管缓冲区。如果打开Nerdtree,它将显示根。这只是第一次发生

我希望Nerdtree保持打开状态,并反映当前文件:NERDTreeFind的功能

我让它大部分工作:

autocmd BufWinEnter * call s:openAndFindNerdtree()


function! s:openAndFindNerdtree()
  " This will only be false, until you open Nerdtree the 2nd time in this scenario
   if exists("t:NERDTreeBufName") == 0
     echo "Find my nerdtree"
     " NERDTreeFind
   endif
endfunction
我的问题是: 现在,BufWanter事件被调用,而NERDTree在缓冲区切换之前仍然具有焦点

我的问题:
我可以使用什么事件在缓冲区被切换为焦点后触发?

您尝试过BufEnter吗?@FDinoff我尝试过。就我而言,它的行为似乎与BufWinter相同。此外,这“似乎”起作用,但似乎阻止vim将文件读入缓冲区au BufReadCmd*调用s:getNumberOfOpenBuffers。您在哪里定义此自动命令?它可能在nerdtree设置变量之前运行。