例如,命令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