在vimscript函数输出中显示不需要的控制字符

时间:2012-03-31 03:09:27

标签: vim

[在OS X Lion上使用MacVim 7.3]

我有一个运行外部命令的vimscript函数。它正在正确执行,但输出显示(不需要的)控制字符,例如[0m[33m[36m-1H。 vimscript函数中的相关行是:

exec ":!bundle exec rspec --color " . a:filename

产生:

:!bundle exec rspec --color spec/acceptance/user_logs_in.feature
[33m*[0m

Pending:
[33m  User logs in [0m
[36m    # the step 'the user "foo@test.host" exists' is not implemented[0m
[36m    # [0m

Finished in 0.07121 seconds
[33m1 example, 0 failures, 1 pending[0m

这是从终端看到的相同命令和输出,这就是我希望它在vim中显示的方式:

$ bundle exec rspec --color spec/acceptance/user_logs_in.feature
*

Pending:
  User logs in
    # the step 'the user "foo@test.host" exists' is not implemented
    #

Finished in 0.1161 seconds
1 example, 0 failures, 1 pending

此外,无论何时执行和外部命令,vim都会立即显示-1H。例如,如果我输入:

:ls<return>

我明白了:

:ls-1H
<rest of the output is as expected>

有关隐藏这些控制字符和-1H的任何想法。

(免责声明:我对vim很新,所以请不要假设我有太多的背景知识。)

感谢。

2012年3月31日更新@ 17:32

Sam Goldman是正确的:MacVim不知道如何显示颜色,因此输出颜色代码。

我已切换到终端vim(支持颜色,至少使用iTerm),但使用的是MacVim附带的vim版本,它是更新的,并使用ruby支持进行编译(除其他事项外)。最简单的方法是:

brew install macvim --override-system-vim 

1 个答案:

答案 0 :(得分:3)

MacVim不知道如何显示颜色。终端vim将正确显示颜色,或者您可以在rspec命令(或.rspec文件)中添加--no-color。我不确定-1H的事情。也许你的终端有一些定制?