我开始使用vim编辑我的python代码,我希望vim根据不同的后缀保存代码到不同的文件夹中,例如' .py'。
所以,我把它添加到我的gvimrc文件中(我确实使用了MacVim,但vim上出现了同样的问题)
au BufWritePre *.py :cd /Users/username/Documents/folder
我认为每次将代码保存到' .py&#39之前,这会将工作目录更改为 / Users / username / Documents / folder ;
当我进入MacVim时,打开一个新文件,输入类似
的内容print("Hello")
并通过
保存:w hello_world.py
名为 hello_world.py 的文件出现在 / Users / username / Documents / folder 中,因为我祝愿。 ":pwd" vim中的命令也返回" / 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
/ Users / username / Documents / folder 下的 hello_world.py 中的内容保持不变。 但是 / Users / username 中出现了一个具有相同 hello_world.py 名称的新文件,这是一致的用vim中的文件名。
我想我的gvimrc中的autocmd脚本在保存' .py'之前确实更改了工作目录。文件,但我试图找出文件名与工作目录不一致的原因,以及如何保存我的' .py'将文件存入特定文件夹。
答案 0 :(得分: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上提出问题。