将终端命令输出直接打印到vim中 - macOS

3
每当我在vim中输入一个终端命令(例如!echo hello),我会短暂地被踢出来查看该终端命令的结果,然后提示输入Press ENTER or type command to continue。这有点突兀。我想留在vim中,并在底部打印出命令输出。

image of getting kicked out of vim to view and respond to a terminal command that was run within vim

我知道 vim 的 :read 命令可以将终端输出放入缓冲区,但这不是我想要做的。如果您感兴趣,这里有一些阅读材料。在 Screen 中运行 vim 似乎可以得到我想要的结果,但我正在尝试让它在 tmux 和原生 Mac 终端中工作。
1个回答

2
经过大量调研,可能有点过头了,我搞定了!看起来vim会将命令发送给终端,而终端则定义了从vim处理终端命令的行为。将以下内容添加到您的 .vimrc 文件中:
set t_ti= t_te= " show results from terminal commands within vim!

据我理解,这只是确保不向终端发送任何内容,从而产生我想要的结果!

image of terminal command run within vim showing output in vim

附注:上述添加到您的.vimrc文件中的内容也会在退出vim时防止vim缓冲区被清除(例如,:wq)。我可以接受这个!有时候看看你刚刚在做什么还是挺好的 :)。

一开始我还以为你要把某个变量的值设置为"在vim中显示终端命令的结果!",这似乎对于一个选项来说有些啰嗦了。 - Christian Gibbons
哈哈,我能理解你的想法!你认为删除vimrc的注释会更清晰吗? - jason z
1
通常我会在代码上面一行加注释,但我不知道普通的vim用户是否认为这样更自然/易读。 - Christian Gibbons
说实话,我把我的注释放在上一行,因为我认为这样更自然、更易读。 - Stun Brick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接