我正在编写一个将在 CLI 中运行的小型 Ruby 脚本。
为了改进界面,我需要为我输出的一些元素添加颜色/粗体。
那可行吗?如果是这样,我几乎可以肯定这是,如何?
我正在编写一个将在 CLI 中运行的小型 Ruby 脚本。
为了改进界面,我需要为我输出的一些元素添加颜色/粗体。
那可行吗?如果是这样,我几乎可以肯定这是,如何?
在许多终端(但不是 Windows)上,您可以使用这样的序列:"\e[#{code}m"
,其中代码基于这些表。如果使用多个代码,则必须用分号分隔。主要代码如下:
1 Bold Intensity
4 Underline
5 Slow blink
6 Fast blink
22 Normal Intensity
Foreground 3X
Background 4X
Where X is:
-----------
0 Black
1 Red
2 Green
3 Yellow
4 Blue
5 Magenta
6 Cyan
7 White
因此,例如,对于蓝色背景上缓慢闪烁的粗体绿色文本,您可以使用"\e[5;1;32;44mWOW!\e[0m"
. 将\e[0m
所有内容重置为终端默认值。
有一个 gemrainbow
可以很容易地设置终端输出的样式。
sudo gem install rainbow
安装后,您可以执行以下操作:
puts 'some text'.underline
亲爱的鲁比人! 我更喜欢在 Ruby 中找到默认的集成支持。在这里我找到了一些,无需安装任何 gem 就可以工作:
def red(mytext); "\e[31m#{mytext}\e[0m"; end
def light_red(mytext); "\e[1;31m#{mytext}\e[0m"; end
def green(mytext); "\e[32m#{mytext}\e[0m"; end
def light_green(mytext); "\e[1;32m#{mytext}\e[0m"; end
def yellow(mytext); "\e[1;33m#{mytext}\e[0m"; end
def blue(mytext); "\e[34m#{mytext}\e[0m"; end
def light_blue(mytext); "\e[1;34m#{mytext}\e[0m"; end
puts red("hello world. I don't need no color.")
puts light_red("hello world. I don't need no color.")
puts green("hello world. I don't need no color.")
puts light_green("hello world. I don't need no color.")
puts blue("hello world. I don't need no color.")
puts light_blue("hello world. I don't need no color.")
puts yellow("hello world. I don't need no color.")
它适用于puts和print。