[在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
MacVim不知道如何显示颜色。终端vim将正确显示颜色,或者您可以在rspec命令(或.rspec文件)中添加--no颜色。我不确定-1H的事。也许你为你的终端定制了一些?