Vim 执行当前文件?

Vim 执行当前文件?,vim,Vim,如果我有一个在Vim中打开的带有shebang行(例如#!/bin/bash)的文件,并且该文件具有执行权限(即chmod+x),我知道我可以键入此命令来执行它,而无需离开编辑器: :! %:p :用于命令模式 以运行shell命令 %以引用当前缓冲区中的文件 :p使用当前文件的完整路径 对于这项频繁的任务,是否有较短的捷径 e、 g.对于:wq等,有一个ZZ快捷方式 :!%:p ,没有空格,则较短 如果需要更短的快捷方式,可以创建自定义映射: nnoremap <F9> :

如果我有一个在Vim中打开的带有shebang行(例如
#!/bin/bash
)的文件,并且该文件具有执行权限(即
chmod+x
),我知道我可以键入此命令来执行它,而无需离开编辑器:

:! %:p
  • 用于命令模式
  • 以运行shell命令
  • %
    以引用当前缓冲区中的文件
  • :p
    使用当前文件的完整路径
对于这项频繁的任务,是否有较短的捷径

e、 g.对于
:wq
等,有一个
ZZ
快捷方式

:!%:p
,没有空格,则较短

如果需要更短的快捷方式,可以创建自定义映射:

nnoremap <F9> :!%:p
nnoremap:!%:P
或者更“助记”:

nnoremap r:!%:P

您可以将密钥映射添加到.vimrc

map <F5> :!%
map:!%

执行一次后,一个简短的
将重复此操作。

如果您尚未设置权限,则可以运行:

:! sh %

如果文件名/目录路径中有空格,则前面的答案都无效。简单的修复

:!"%:p"

启动vi时,显式指定文件路径,如“vi./bla”

然后从
!%

另一个变体是像这样调用vi命令

!./%

使用nnoremap:!%:p以减轻每次按Enter键的负担。使用
nnoremap:!%:p
要跳过
也可在脚本执行后按ENTER键或键入command继续
nnoremap:!%:p
运行代码并立即返回vim。使用单输入
nnoremap:!%:p
为了保持输出屏幕,我喜欢每次执行都有一个新的终端,这样我就不会将以前运行的输出与当前运行的输出混淆。为此,您可以使用
nnoremap:!清除&&%:p
如何将保存文件并运行文件的操作映射到F9?如果我把
:w
放在建议的序列之前,我得到E212。
vi ./yourscript.pl
!./%