vim:应用 AutoCMD 时,新文件的目录与当前工作目录不匹配



我开始使用vim来编辑我的python代码,我希望vim根据不同的后缀(如'.py'.)将代码保存在不同的文件夹下

所以,我把它添加到我的gvimrc文件中(我确实在使用MacVim,但vim上也出现了同样的问题)

au BufWritePre *.py :cd /Users/username/Documents/folder

我认为这会在每次保存以".py"结尾的代码之前将工作目录更改为/Users/用户名/Documents/文件夹

当我进入MacVim,打开一个新文件,键入类似的内容时

print("Hello")

并通过保存

:w hello_world.py

一个名为hello_world.py的文件出现在/Users/用户名/Documents/文件夹中,正如我所希望的那样。vim中的":pwd"命令还返回了"/Users/username/Documents/folder"。但是当我通过检查vim中hello_world.py的文件名时

:!echo %

它返回

/Users/username/hello_world.py

而不是预期的文件名

/Users/username/Documents/folder/hello_world.py # expected filename

此外,当我试图升级像这样的代码时

print("Hello")
print("World")

并通过保存

:w

hello_world.py中的内容在/Users/username/Documents/folder下保持不变。但在/Users/username中出现了一个新文件,该文件与vim中的文件名一致。

我想我在gvimrc中的autocmd脚本在保存".py"文件之前确实更改了工作目录,但我正在努力弄清楚为什么文件名与工作目录不一致,以及如何将".py"文件保存到特定文件夹中。

对我来说(在Ubuntu 14.04上使用Vim 7.4.52),文件总是在CWD中创建的,所以autocmd对文件的放置没有影响,而是更改了目录。在内部,文件的最终目录是在创建缓冲区时确定的(如:ls所示),而不是在缓冲区的第一次写入或命名期间。

我只是设法通过接近你想要的

:au BufWritePost *.py file /Users/username/Documents/folder/%:t

它仍然在CWD中创建初始文件。

如果你认为Vim应该更好地处理这个问题,你可以尝试在Vim_dev邮件列表中提出这个问题。

相关内容

  • 没有找到相关文章

最新更新