7

我正在使用 MacVim,我想!用彩色打印命令。例如:

在 bash 中,以下 echo 语句以绿色打印 Hello World(如预期的那样):

$ echo -e "\033[32m Hello World" 
 Hello World

但是,在 VIM 中,输出不是颜色,而是打印转义码:

:!echo -e "\033[32m Hello World" 
 [32m Hello World

如何让 VIM(尤其是 MacVim build 57)打印!命令输出并尊重 ANSI 颜色转义。

4

5 回答 5

4

你不能。但是您可以暂停编辑器并相对较快地进入 shell;

或者您可以使用Ansi Filter删除转义序列,这样您至少不会看到一团糟。

于 2011-05-25T15:05:39.237 回答
2

这个:

:!echo $(tput setaf 1)Hello world$(tput sgr0)

将以彩色打印Hello world

不要使用转义序列,而是命名 tput 条目。(所有时候,不仅在这个例子中)。阅读:
人 teminfo;人 infocmp; man tput - 了解更多信息。

根据评论,我发现这个问题非常有趣。

仍在寻找更好的解决方案,但现在找到这个 - http://code.google.com/p/conque/。允许在 MacVim 的缓冲区内运行彩色命令。

于 2011-05-25T15:20:43.933 回答
2

不知道这是否有帮助,但是在 vim 中运行我的 RSpec 测试会使用该--color选项为我提供彩色输出。我使用以下命令内联运行当前的规范文件:

:map ,t :w\|:!rspec --color %<cr>

于 2012-05-26T20:42:47.457 回答
1

如果您在控制台模式下运行 macvim(vim,而不是 mvim),所有 :! 命令被重定向到 shell 并在那里执行。他们占据整个窗口而不是其中的 1/3,并且他们使用您的控制台碰巧拥有的任何主题。

但是你会得到 ansicolors。

于 2012-09-19T21:02:01.340 回答
0

您的问题(以及由@avocade 完成的弹出窗口)解决了我在我的 aurum 插件中进行一些打印的问题,因此我已经编写了(开始编写,但最重要的功能已经在这里)ansi_esc_echo插件。要在您的系统中使用它,您必须安装它,安装frawor并执行

execute frawor#Setup('0.0', {'autoload/ansi_esc_echo': '0.0'})
call s:_r.ansi_esc.echo("\e[33mabc")

. 目前它只处理(专门讨论特殊字符或序列)回车、退格(未经测试)、制表符、换行符和 CSI 颜色。

于 2012-05-28T10:02:53.333 回答