Vim:执行当前文件?


75

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

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

是否有一个较短的捷径来完成这项频繁的任务?

例如,有的ZZ快捷方式:wq,等等。

Answers:


77
:!%:p

,没有空格,较短。

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

nnoremap <F9> :!%:p

或更“助记符”:

nnoremap <leader>r :!%:p

20
使用nnoremap <F9>:!%:p <Enter>减轻每次按Enter的负担。
hkyi 2014年

6
用于在脚本执行后nnoremap <F9> :!%:p<Enter><Enter>也跳过Press ENTER or type command to continue
用户

1
nnoremap <F9> :!%:p<Enter><Enter>运行代码并立即返回vim。使用单个Enternnoremap <F9> :!%:p<Enter>保持输出屏幕
askalee

关于nnoremap。另请注意,这将无法正确处理带有空格的文件名,请参阅以下答案
user202729

我喜欢为每个执行都配备一个新的终端,因此我不会将以前的运行与当前的运行混淆。为此,您可以使用nnoremap <F9> :!clear && %:p<Enter>
roganartu

17

如果您的文件名/目录路径中包含空格,则以上答案均无效。简单修复。

:!"%:p"




1

启动vi时,请明确指定文件路径,例如“ vi ./blablabla”

vi ./yourscript.pl

之后,您可以随时只以:!%开始

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

!./%
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.