ChatGPT解决这个技术问题 Extra ChatGPT

Vim:执行当前文件?

vim

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

:! %:p

: 用于命令模式

!运行 shell 命令

引用当前缓冲区中的文件

:p 使用当前文件的完整路径

这个频繁的任务有没有更短的捷径?

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


r
romainl
:!%:p

,没有空格,更短。

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

nnoremap <F9> :!%:p

或更“助记符”:

nnoremap <leader>r :!%:p

使用 nnoremap :!%:p 来减轻每次按 Enter 的负担。
在脚本执行后使用 nnoremap <F9> :!%:p<Enter><Enter> 也跳过 Press ENTER or type command to continue
nnoremap <F9> :!%:p<Enter><Enter> 运行代码并立即返回 vim。使用单个 Enter nnoremap <F9> :!%:p<Enter> 保留输出屏幕
我喜欢每次执行都有一个新的终端,这样我就不会将以前运行的输出与当前运行混淆。为此,您可以使用 nnoremap <F9> :!clear && %:p<Enter>
我如何将保存文件并运行它的操作映射到 F9?如果我将 :w 放在建议的序列之前,我会得到 E212。
J
James Dunmore

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

:! sh %

n
nullUser

如果您的文件名/目录路径中有空格,则前面的答案都不起作用。简单的修复。

:!"%:p"

I
Ingo Karkat

执行一次后,一个简短的 :!! 将重复它。


a
armagedescu

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

vi ./yourscript.pl

然后从 !% 开始

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

!./%

j
jpmuc

您可以将键映射添加到 .vimrc

map <F5> :!%