当缓冲区位于 vim 中的目录中时执行命令

Execute command when buffer is in directory in vim

我正在寻找一种在缓冲区指向目录时执行命令(:term)的方法(比如打开指向目录的 vim 时打开 NERDTree) 当缓冲区为 empty/start 屏幕时

像 NERDTree 这样的插件使用所谓的 临时缓冲区 来显示它们的 "UI"。对于语法突出显示,大多数还设置自定义的、特定于插件的 filetype。所以你可以挂钩到 :help FileType 事件::autocmd FileType nerdtree ...

直接打开终端对我不起作用;因为插件在其临时缓冲区设置中被中断,并且不希望终端干扰。这里至少需要将 return 添加到原始暂存缓冲区的其他命令。 (但是像 :echomsg 这样不起眼的东西会按原样工作。)或者你只是通过 feedkeys():

延迟打开
:autocmd FileType nerdtree call feedkeys(":terminal\<CR>")

一种更通用的方法(不仅适用于 NERDTree)可以连接到 BufWinEnter 并检查是否 &buftype == 'nofile'(这是暂存缓冲区的典型属性)。

要检查 Vim 是否以 "start screen" 启动,请使用 VimEnter 并检查 empty(bufname('')).

:autocmd VimEnter * if empty(bufname('')) | exe "terminal" | endif