当我在vim里面运行外部命令时怎样才能保持颜色?

当我在vim里面运行外部命令时怎样才能保持颜色?

例如,命令ls --color在 shell 中执行时会显示彩色结果。但是,当我:!ls --color在 vim 中调用时,所有颜色信息都消失了。

在 vim 中调用外部命令时,如何保持颜色?

编辑:澄清我的问题,这是一个关于VIM本身,我不是实际上是在问如何启用“ls”的颜色。我想知道的是,一般如何启用彩色结果的显示全部shell 命令(只要它们有丰富多彩的结果)。

答案1

CLI Vim 还是 GUI Vim?

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

在 GUI Vim 中,你只能得到一个伪 shell,它完全不能显示任何颜色。也没有办法解决这个问题。

如果你迫切需要外部命令的彩色输出,你必须使用类似以下命令启动外部终端仿真器:!xterm & 或者使用类似插件征服壳牌

答案2

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

答案3

您可以在中创建一个函数.bashrc

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

相关内容