1

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

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

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

我认为每次保存以“.py”结尾的代码之前,都会将工作目录更改为/Users/username/Documents/folder 。

当我进入 MacVim 时,打开一个新文件,输入类似

print("Hello")

并将其保存为

:w hello_world.py

如我所愿,一个名为hello_world.py的文件出现在/Users/username/Documents/folder中。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中出现了一个与hello_world.py名称相同的新文件,这与 vim 中的文件名一致。

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

4

1 回答 1

0

对我来说(在 Ubuntu 14.04 上使用 Vim 7.4.52),文件始终在 CWD 中创建,因此 autocmd 对文件放置没有影响,但会更改目录。在内部,文件的最终目录是在创建缓冲区时确定的(由 证明:ls),而不是在第一次写入或命名缓冲区时确定。

我只是设法通过

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

但是,它仍然会在 CWD 中创建初始文件。

如果你认为 Vim 应该处理这个问题(更好),你可以尝试在vim_dev mailing list上提出这个问题。

于 2014-10-07T12:01:10.203 回答