我开始使用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邮件列表中提出这个问题。