搜索结果返回了Q& As的音调,我不知道如何更好地改写它,所以请原谅我是否重复:
我正在使用Vim运行python脚本。该脚本位于~/path/to/my/script.py
,并且在同一路径中有一个样式表文件。
代码的内容将打开文件:
f = open('./stylesheet.css', 'r')
s = f.read()
f.close()
如果我从Vim运行我的代码:!python %
,它将返回:IOError: [Errno 2] No such file or directory: 'stylesheet.css'
所以看来Vim不是从代码的位置运行我的代码,而是从/ home或root运行我的代码?
如何在执行期间使用代码的路径作为根路径?
答案 0 :(得分:5)
您可以使用此:lcd %:p:h | !python %
。
简要说明。 lcd将目录更改为正在编辑的当前文件 - http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file
然后对文件执行python命令。
此命令的一个问题是您的当前目录现在是(来自您的示例)~/path/to/my/
。您必须执行另一个:lcd
才能返回当前目录。我无法找到一种方法将所有内容组合到vim中的一个命令中。也许别人可以。
编辑 - 如何再次回来
(删除了我的复杂方法)
简单的解决方案请参考下面的ib评论。
答案 1 :(得分:1)
要在与脚本相同的目录中打开文件,请尝试以下操作:
import os
script_dir = os.path.dirname(__file__)
target_file = os.path.join(script_dir, 'stylesheet.css')
with open(target_file, 'r') as f:
s = f.read()
答案 2 :(得分:0)
当前文件的vim中的快捷方式是%,因此输入:!python $
:!python %
而不是{{1}}