如何从脚本的路径运行Vim shell?

时间:2011-08-29 23:43:27

标签: python vim

搜索结果返回了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运行我的代码?

如何在执行期间使用代码的路径作为根路径?

3 个答案:

答案 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}}