Vim:执行当前文件?

103

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

:! %:p
  • : 用于命令模式
  • ! 用于运行shell命令
  • % 引用当前缓冲区中的文件
  • :p 使用当前文件的完整路径

是否有一个更短的快捷方式来完成这个经常需要的任务?

例如,:wq 有一个 ZZ 快捷方式。

7个回答

102
:!%:p

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

没有空格,更短。

nnoremap <F9> :!%:p

或者更加易于记忆的:

nnoremap <leader>r :!%:p

31
使用 nnoremap <F9> :!%:p<Enter> 可以减轻每次按回车的负担。 - hkyi
6
使用 nnoremap <F9> :!%:p<Enter><Enter> 命令来跳过脚本执行后的 按回车键或输入命令以继续 提示。 - user
1
nnoremap <F9> :!%:p<Enter><Enter> 运行代码并立即返回到vim。使用单个Enter nnoremap <F9> :!%:p<Enter> 以保留输出屏幕。 - askalee
3
为了避免之前的运行输出与当前的混淆,我喜欢每次执行时都有一个清新的终端。要做到这一点,你可以使用nnoremap <F9> :!clear && %:p<Enter> - roganartu
1
我该如何将保存文件和运行文件的操作映射到F9键上?如果在建议的序列前加上:w,我会得到E212错误。 - Unknow0059
显示剩余3条评论

31

如果你没有设置权限,你可以运行:

:! sh %

24

如果您的文件名/目录路径中包含空格,那么以前的答案都无法正常工作。简单修复。

:!"%:p"

14

执行一次该命令后,简短的:!!将重复执行该命令。


11

在启动vi时,要明确指定文件路径,像这样“vi ./blablabla”

vi ./yourscript.pl

然后从!%开始

另一种方法是这样调用vi命令

!./%

6
你可以在 .vimrc 文件中添加键位映射。
map <F5> :!%

0
为了在vim中执行当前文件,如果文件名中有空格。
:!./"%"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接