如何在Neovim中查看最近执行的外部命令输出?
Neovim中查看
:!命令历史输出的方法 首先明确核心问题::!执行外部命令的弹窗输出不会自动存入:messages日志,这就是你用:messages看不到的原因;而g<是用来查看命令行输入历史(比如你敲过的:!echo...这条命令本身),并非命令执行后的输出内容,所以也无效。
以下是几种内置的解决方法:
方法1:用:redir重定向输出到寄存器或文件
:redir是Neovim内置的输出重定向工具,可把命令输出存到寄存器或文件,方便后续查看:
- 存到寄存器(以
a寄存器为例):
后续查看时,用:redir @a :!echo "Where is my file?" :redir END"ap将寄存器内容粘贴到缓冲区,或:put a直接插入到当前光标位置。 - 存到临时文件:
再通过:redir > /tmp/nvim_cmd_output.txt :!echo "Where is my file?" :redir END:edit /tmp/nvim_cmd_output.txt打开查看。
方法2:用r!直接将输出写入缓冲区
如果希望命令输出直接进入当前缓冲区(而非弹窗),可以替换:!为r!:
:r!echo "Where is my file?"
这条命令会把外部命令的输出直接插入到当前光标位置,后续直接在缓冲区就能查看内容。
方法3:用:terminal执行命令(更灵活的持久化方式)
若经常需要留存外部命令的输出,推荐使用内置终端:terminal:
- 打开终端并执行命令:
执行后终端缓冲区会保留输出内容,通过:terminal echo "Where is my file?"Ctrl+\ Ctrl+n退出终端插入模式,即可像普通缓冲区一样浏览、编辑;后续切换回该终端缓冲区,可使用:b <终端缓冲区名>或:buffers列表选择。
补充:g<和:messages无效的原因
g<:该快捷键调出的是命令行输入历史,显示的是你输入过的所有Ex命令本身,而非命令执行后的输出内容。:messages:此命令显示的是Neovim内部日志(如错误提示、插件消息等),:!的弹窗输出不属于这个范畴,因此不会被记录。
内容的提问来源于stack exchange,提问作者BurgeoningApe
相关产品推荐
相关产品推荐

