如何在 Vim 中执行 shell 命令,并在下面打印结果?

如何在 Vim 中执行 shell 命令,并在下面打印结果?

我想从 vim 编辑 shell 命令并从 vim 执行它们。目前我使用!!sh(将当前行管道化为命令 sh),但这会删除该行本身。

是否可以在 shell 中执行该命令,并将结果粘贴到该行下面?

答案1

作为克劳西指出yyp!!sh将当前行拉取(复制)到寄存器,将该行粘贴到原始行下方,并用命令的输出替换最下面的一行。

为了保存击键,您可以通过在文件中添加下一行来映射此操作~/.vimrc

地图<F5> yyp!!sh<CR><Esc>

这样,每次F5在命令模式下按下时,该行都会被执行,结果将显示在该行下方。

答案2

在执行之前复制/粘贴该行怎么样(类似于yyp!!sh)?

答案3

在缓冲区中输入 shell 命令,例如last | head
在命令行模式下:read !^R.
当然不是逐字输入,而是^RCTRL-R组合键。
在 中查找:help c_ctrl-r.代表“最后插入的文本”。
如果命令是一个单词,例如vnstat
将光标放在该单词上,然后输入:read !<cword>

相关内容