在 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'
在我的 .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'