2013-03-16 68 views
34

如果我有一个shebang行(如#!/bin/bash)开在Vim的一个文件,该文件具有执行权限(即chmod +x)我知道我可以键入此无需离开编辑器来执行它:Vim:执行当前文件?

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

此频繁任务是否有更短的快捷方式?

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

回答

31
:!%:p 

,不带空格,较短。

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

nnoremap <F9> :!%:p 

或更多的“记忆”:

nnoremap <leader>r :!%:p 
+0

如果我不在我正在编辑的文件所在的文件夹中,这并不够,而且我不想每次都考虑每一个文件,或者强迫自己始终必须'cd '编辑前..我喜欢肌肉记忆。 (我很欣赏你的回答,并提供解决方案,谢谢你。) – Robottinosino 2013-03-16 13:12:44

+0

是的,我在阅读你的评论前实际修改了我的答案。 – romainl 2013-03-16 13:13:24

+10

使用nnoremap :!%:p 可以减轻每次按下Enter键的负担。 – hkyi 2014-04-01 10:41:12

1

您可以添加键映射到你的.vimrc

map <F5> :!% 
2

执行完一次后,短:!!会重复。

+0

只有当它是最后一个执行命令.. :( – Robottinosino 2013-03-16 16:45:08

+0

最后':!',那是。 – 2013-03-16 19:45:05

8

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

:! sh % 
1

以前的答案都不工作,如果你的文件名/目录路径中有空格在里面。简单的修复。

:!"%:p"