vim - 在 Vim 中,当我切换到终端窗格时,如何防止 chdir 到缓冲区目录运行?
问题描述
在我的.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
然后必须按回车键将其关闭。这使得在文档窗口和终端之间来回切换很烦人。
这是一个屏幕截图:
我明白为什么我会收到错误。我试图弄清楚我需要如何更改autocmd
上面的行,以便它不会在终端窗格中运行。也就是说*
,我需要指定not a terminal而不是。
我怎么做?
解决方案
您可以检查'buftype'
它是否是终端缓冲区。
augroup AutoChdir
autocmd!
autocmd BufEnter * if &buftype !=# 'terminal' | lchdir %:p:h | endif
augroup END
注意:我没有对此进行测试。按原样使用。
查看:h 'buftype'
更多信息
推荐阅读
- javascript - 有没有办法让 Node.JS 在执行我的 Dialogflow 输出函数之前先执行我的 MySQL 函数?
- exoplayer2.x - 更改当前播放剪辑的持续时间
- php - 看看我是否误解了 numberformatter 或者我是否错误地使用它来解析和验证
- gitlab-ci - 如何在 GitLab 管道的各个阶段之间保留 docker 映像实例?
- java - 如何停止警报声
- css - Wordpress Menu CSS code only works when hovering over, how can i fix
- html - 100% 的 Div 百分比不适合一行
- websocket - 从 NestJS 控制器或服务发出 websocket 事件
- java - file_paths.xml 无法从字符串资源中读取
- c# - 获取使用自定义属性标记的方法的 MethodInfo