我试图让vim执行我正在用键映射(例如ctrl+)编辑的脚本x,所以我在vimrc
:map <C-x> :!exec_file %<CR>
要将文件名传递给我编写的脚本,该脚本可解析扩展名并调用适当的解释器,到目前为止,此方法效果很好。
但是,我想知道是否可以bash
直接使用脚本名称来调用它并执行它,因为我编辑的大多数脚本都有一个shebang行,所以我尝试使用此映射:
:map <C-x> :!bash %<CR>
但这不起作用,是否可以通过将其名称传递给bash来执行脚本?
@DanielBeck是的,这就是正在发生的一切,可以解决吗?也不是所有脚本都可执行,我也不想对其进行修改...
—
mux
尝试执行脚本文件时,请执行OS相同的操作:解析shebang行以确定解释器,然后调用它。本质上是您的
—
丹尼尔·贝克
exec_file
工作,但不必依赖扩展。可能只有当没有shebang行时才将其用作备用。FWIW,shebang行通常仅在您希望使脚本可执行时才有意义,因为调用解释器将始终使用文件参数。
您的bash映射在这里起作用。我用下面的映射来调用家当,假设脚本是可执行的:
—
雷神(Thor)
map <f4> :!%:p<cr>
。:p
将扩展到脚本的完整路径。
@Thor是的,但并不是我编辑的所有脚本都是可执行的,有时我打开vim并编写脚本并想在chmod'ing之前执行,或者我打开了不可执行的脚本,但是我想我现在明白为什么bash不能执行执行脚本。
—
mux
:!%
不够吗?