不使用 shebang 执行 Vim 中的当前文件

Execute current file in Vim without shebang

如果有 python 扩展名,是否有一个干净的别名可以放入我的 vimrc 中 运行 使用 python 当前文件?

目前我有 nnoremap <leader>r :!%:p<Enter>,如 this 问题中所建议的(当我点击 \+r 时,它 运行 是打开的文件)。它适用于 bash 文件,其中约定是添加一个 shebang 行并使文件可执行,但对于 python 文件,它显然退出 1.

作为解决方法,我添加了一个新命令 - command PyBang :call append(0, "#!/usr/bin/env python") - 将 python shebang 添加到文件顶部。问题是这并不是 .py 文件的真正约定,并且出于某种原因使它们全部可执行似乎需要付出很多努力。

所以我正在努力编写一个别名,如果没有扩展名,它将 运行 :!%:p<Enter> 并在文件上有 .py 扩展名的情况下添加 python在缓冲区中。

非常感谢任何想法。

最简单的方法是在 运行 shell 命令中使用 vim 的感叹号。例如,

: ! python3 % 将 运行 当前文件 %python3 在 vim 之外,无论您在 shell 中。

您可以将其与 vim 脚本结合使用,为此命令创建您自己的快捷方式。

要将其与您当前的 bash 函数结合使用,您需要在 vim 函数中使用条件逻辑来检测文件类型(请参阅 here and here 了解如何使用文件类型及其检测)