代码之家  ›  专栏  ›  技术社区  ›  Sinan Ünür

在VIM中,当我切换到终端窗格时,如何防止chdir to buffer目录运行?

  •  0
  • Sinan Ünür  · 技术社区  · 6 年前

    在我的 .vimrc ,我有:

    autocmd BufEnter * :lchdir %:p:h
    

    它将当前目录更改为该窗口中正在编辑的文件的目录。

    terminal 但是,功能已启用,我会收到以下消息:

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

    然后必须按Enter键取消。这使得在文档窗口和终端之间来回切换非常烦人。

    以下是截图:

    In Vim, switching to terminal causes chdir error

    我明白为什么会出错。我想知道我需要如何改变 autocmd 上面的行,这样它就不会在终端窗格中运行。也就是说,而不是 * ,我需要说明 不是终点站 .

    我该怎么做?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Peter Rincker    6 年前

    你可以查一下 'buftype' 以查看它是否是终端缓冲区。

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

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

    :h 'buftype' 更多信息