执行当前文件?

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

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

对于这种频繁的任务有没有更短的捷径?

例如,:wq有一个 ZZ快捷键,等等。

42097 次浏览
:!%:p

,without the spaces, is shorter.

If you want an even shorter shortcut, you can create a custom mapping:

nnoremap <F9> :!%:p

or the more "mnemonic":

nnoremap <leader>r :!%:p

You can add a key mapping to your .vimrc

map <F5> :!%

After you've executed that once, a short :!! will repeat it.

If you haven't set permissions you can run:

:! sh %

None of the previous answers work if your filename/directory path has spaces in it. Simple fix.

:!"%:p"

When starting vi, specify file path explicitly, like this "vi ./blablabla"

vi ./yourscript.pl

Then start with !%

The other variant is to invoke the vi command like this

!./%