VIM:仅为当前缓冲区

时间:2017-03-28 16:41:16

标签: vim

如何更改特定缓冲区的当前工作目录并将其更改为其他缓冲区的先前值?

更准确地说,我想要做的是为特定文件类型设置自动命令,当包含文件类型的缓冲区处于活动状态时,这些命令将更改当前工作目录。并在使用其他缓冲区时将其更改回来。

我的vimrc中有类似的东西:

autocmd BufEnter *.py :lcd%:p:h
autocmd BufLeave *.py :lcd-

这里的想法是我想在处理python文件时切换到文件的目录,并在处理其他内容时切换到上一个目录,例如:文字,vimL等。显然,它没有用。我也尝试使用BufWinLeave,但它没有改变任何东西。

你能指出这里有什么问题吗?或者也许有一个更简单的解决方案?

1 个答案:

答案 0 :(得分:0)

我认为你可以通过以下方式完成类似的工作:

augroup CDRooter
  autocmd!
  autocmd BufWinEnter * if &filetype == 'python' | lcd %:p:h | else | lcd! | endif
augroup END

注意:我不确定:lcd -是否会运作良好。相反,我使用:lcd!简单地将窗口恢复为使用全局当前工作目录。

基本思路是每当你进入一个窗口嗅探文件类型并相应地执行:lcd

如需更多帮助,请参阅:

:h 'filetype'
:h BufWinEnter
:h :lcd
:h :augroup
:h :autocmd
:h :if