如何更改特定缓冲区的当前工作目录并将其更改为其他缓冲区的先前值?VIM:仅更改当前缓冲区的工作目录
更确切地说,我想要做的是为特定文件类型提供自动命令,当包含该文件类型的缓冲区处于活动状态时,它将更改当前工作目录。在与其他缓冲区一起工作时将其改回。
我有这样的事情,在我的vimrc:
autocmd BufEnter *.py :lcd%:p:h
autocmd BufLeave *.py :lcd-
这里的想法是,我想对Python的文件时,切换到文件所在的目录和别的东西,例如工作时切换到以前的目录文本,vimL等。显然,它没有工作。我也尝试使用BufWinLeave
,但它没有改变任何东西。
你能指出这里有什么问题吗?或者也许有一个更简单的解决方案呢?
如果':lcd'只影响* .py文件,那么你为什么会甚至尝试恢复的CWD其他缓冲区?如果该缓冲区的CWD从未改变过,那么你将恢复到什么状态? –
请注意':lcd'是窗口本地的,而不是缓冲区本地的。 – romainl
@ work.bin as romainl said window-local,not buffer- or file-local。在同一个窗口中,我可以有几个不同文件类型的缓冲区。而且我希望cwd对于所有缓冲区都是相同的,除了.py文件,我想将CWD更改为包含.py文件的dir。 – mfedoten