在 Vim 中,当我切换到终端窗格时,如何防止 chdir 从 运行 缓冲目录?

In Vim, how can I prevent chdir to buffer directory from running when I switch to terminal pane?

在我的 .vimrc 中,我有:

autocmd BufEnter * :lchdir %:p:h

将当前目录更改为正在 window 中编辑的文件的目录。

启用 terminal 功能后,我收到以下消息:

Error detected while processing BufEnter Autocommands for "*":
E344: Can't find directory "C:\Users\sinan\!C:\WINDOWS\system32" in cdpath
E472: Command failed

然后必须按回车键将其关闭。这使得在文档 window 和终端之间来回切换很烦人。

截图如下:

我明白为什么会收到错误消息。我想弄清楚我需要如何更改上面的 autocmd 行,这样终端面板就不会 运行 了。也就是说,我需要指定 而不是终端

我该怎么做?

您可以检查'buftype'看它是否是终端缓冲区。

augroup AutoChdir
  autocmd!
  autocmd BufEnter * if &buftype !=# 'terminal' | lchdir %:p:h | endif
augroup END

注意:我还没有测试过这个。按原样使用。

有关详细信息,请参阅 :h 'buftype'