我想从 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.
当然不是逐字输入,而是^R
按CTRL-R
组合键。
在 中查找:help c_ctrl-r
。.
代表“最后插入的文本”。
如果命令是一个单词,例如vnstat
,
将光标放在该单词上,然后输入:read !<cword>
。