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

Ben*_*min 2 python vim

搜索结果返回Q&As的音调,我不知道如何更好地改写,所以请原谅我,如果它是重复的:

我正在用Vim运行python脚本.脚本位于,~/path/to/my/script.py并且在同一路径中有一个样式表文件.

代码的内容打开文件:

f = open('./stylesheet.css', 'r')
s = f.read()
f.close()
Run Code Online (Sandbox Code Playgroud)

如果我像这样从Vim运行我的代码:!python %,它将返回:IOError: [Errno 2] No such file or directory: 'stylesheet.css'

所以似乎Vim不是从代码的位置运行我的代码,而是从/ home或root运行代码?

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

aru*_*mar 5

你可以用它:lcd %:p:h | !python %.

简要说明.lcd将目录更改为正在编辑的当前文件 - http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file

然后对该文件执行python命令.

此命令的一个问题是您的当前目录现在将是(来自您的示例)~/path/to/my/.你将不得不做另一个:lcd回到你当前的目录.我无法找到一种方法将所有内容组合到vim中的一个命令中.也许其他人可以.

编辑 - 如何再次回来cd

(删除了我的复杂方法)

对于简单的解决方案,请参阅下面的ib评论.

  • 为什么实现这个过于复杂?只需使用`:lcd%:p:h | exe'!python'.expand('%')| lcd -`.顺便说一下,使用`sil lcd`而不仅仅是`lcd`来抑制每次更改时当前工作目录路径的报告可能很有用. (2认同)