在vim中运行外部命令时如何保持颜色?


12

例如,对于ls --color在外壳中执行的命令,该命令显示色彩鲜艳的结果。但是,当我:!ls --color在vim内部调用时,所有颜色信息都消失了。

在vim中调用外部命令时,应该怎么做才能保持颜色?

编辑:为了澄清,我的问题,这是一个问题关于VIM本身,我竟问如何使“LS”的色彩。我想知道的是,通常如何启用所有 shell命令的彩色结果显示(只要它们具有彩色结果)。


2
在这里工作正常。
伊格纳西奥·巴斯克斯

2
“这是关于VIM本身的问题……”
伊格纳西奥·巴斯克斯

2
而vim是“程序员常用的软件工具”之一...

1
所以是电子邮件。不一定是这里的主题是“我怎么打雷鸟”。
伊格纳西奥·巴斯克斯

2
Vim具有ctags,缩进和更直接的编程支持。电子邮件直接用于编程吗?
詹斯(Jens)2012年

Answers:


5

CLI Vim还是GUI Vim?

您不能在CLI Vim本身中显示:!ls:!ls --color或任何其他外部命令的输出,因为它是单线程的:Vim被挂起并$ ls --color在您的shell中执行。没有办法解决。好了,您可以将外部命令的输出放置在当前缓冲区中,但这不是一回事。

在GUI Vim中,您只能获得完全无法显示任何颜色的伪外壳。也没有办法解决。

如果您非常需要外部命令的彩色输出,则必须使用类似的命令启动外部终端仿真器,:!xterm & 使用类似Conque Shell的插件。


1
我会建议类似tmux或屏幕。
lucapette

确实是的。但是询问者坚持认为这是关于Vim本身的问题。Tmux很棒。通过SSH在远程服务器上登录并在tmux / screen中使用配置良好的Vim是一种令人惊喜的体验。非常适合进入该区域并在那里停留。
romainl 2012年

@romainl感谢您的出色回答。我使用了gVim,我错误地认为CLI vim也无法显示颜色...经过一些试验,我发现颜色已正确显示在CLI vim中。
CMinus 2012年

1

您可以:set shellcmdflag=-ic使外壳以交互方式运行,就像命令提示符一样。


1

您可以在.bashrc以下位置创建函数:

function ls { /bin/ls --color=always; }
export -f ls

很抱歉输入错误,但是我没有问如何使用“ ls”命令显示颜色-我很好奇在使用vim执行外部命令时如何保留颜色。我仅以“ ls”为例。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.