Skip to content

Commit 650c1e8

Browse files
committed
adds post: "zsh: colorize man pages"
1 parent 863496c commit 650c1e8

File tree

3 files changed

+132
-0
lines changed

3 files changed

+132
-0
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,6 @@ src/site_generator/active_config.clj
1919

2020
# fully built static site
2121
resources/exported_site
22+
23+
# script way
24+
resources/public/blog_images
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# Zsh: colorize man pages
2+
3+
After we got so many bright colors in zsh let's check our man pages.
4+
5+
If You didn't add "colored-man-pages" to list of plugins in ~/.zshrc You will see first variant, if added than second. But how this works and is there a way to get third?
6+
7+
<table>
8+
<tr>
9+
<td>
10+
<img style="display:block;" width="100%" src="https://s3.amazonaws.com/blog-images.epxlabs.com/8/colored-man-pages-off.png">
11+
</td>
12+
<td>
13+
<img style="display:block;" width="100%" src="https://s3.amazonaws.com/blog-images.epxlabs.com/8/colored-man-pages.png">
14+
</td>
15+
<td>
16+
<img style="display:block;" width="100%" src="https://s3.amazonaws.com/blog-images.epxlabs.com/8/colored-man-pages-custom.png">
17+
</td>
18+
</tr>
19+
</table>
20+
21+
Let's talk a little about how plugins work located inside oh-my-zsh.
22+
23+
There is 2 directories in $ZSH:
24+
25+
* plugins - for all things which came while You install oh-my-zsh
26+
* custom/plugins - you should use this when want override anything from default setup
27+
28+
So to setup our own color scheme we can start by copy default plugin to our directory:
29+
30+
```clojure
31+
cd ~/.oh-my-zsh/custom/plugins/
32+
cp -r ../../plugins/colored-man-pages .
33+
```
34+
35+
And update it a little:
36+
37+
```clojure
38+
if [[ "$OSTYPE" = solaris* ]]
39+
then
40+
if [[ ! -x "$HOME/bin/nroff" ]]
41+
then
42+
mkdir -p "$HOME/bin"
43+
cat > "$HOME/bin/nroff" <<EOF
44+
#!/bin/sh
45+
if [ -n "\$_NROFF_U" -a "\$1,\$2,\$3" = "-u0,-Tlp,-man" ]; then
46+
shift
47+
exec /usr/bin/nroff -u\$_NROFF_U "\$@"
48+
fi
49+
#-- Some other invocation of nroff
50+
exec /usr/bin/nroff "\$@"
51+
EOF
52+
chmod +x "$HOME/bin/nroff"
53+
fi
54+
fi
55+
56+
man() {
57+
env \
58+
LESS_TERMCAP_mb=$(printf '\e[01;31m') \ # enter blinking mode - red
59+
LESS_TERMCAP_md=$(printf '\e[01;35m') \ # enter double-bright mode - bold, magenta
60+
LESS_TERMCAP_me=$(printf '\e[0m') \ # turn off all appearance modes (mb, md, so, us)
61+
LESS_TERMCAP_se=$(printf '\e[0m') \ # leave standout mode
62+
LESS_TERMCAP_so=$(printf '\e[01;33m') \ # enter standout mode - yellow
63+
LESS_TERMCAP_ue=$(printf '\e[0m') \ # leave underline mode
64+
LESS_TERMCAP_us=$(printf '\e[04;36m') \ # enter underline mode - cyan
65+
PAGER="${commands[less]:-$PAGER}" \
66+
_NROFF_U=1 \
67+
PATH="$HOME/bin:$PATH" \
68+
man "$@"
69+
}
70+
```
71+
<br>
72+
73+
## ANSI color sequences
74+
75+
The color sequences are composed of sequences of numbers separated by semicolons.
76+
77+
The most common codes are:
78+
79+
<table>
80+
<tr><td width="10%"> Code </td><td width="30%"> Note </td>
81+
<td rowspan="20"><img style="display:block;" width="100%" src="https://s3.amazonaws.com/blog-images.epxlabs.com/8/colors.png"></td></tr>
82+
<tr><td> 0 </td><td> to restore default color </td></tr>
83+
<tr><td> 1 </td><td> for brighter colors </td></tr>
84+
<tr><td> 4 </td><td> for underlined text </td></tr>
85+
<tr><td> 5 </td><td> for flashing text </td></tr>
86+
<tr><td> 30 </td><td> for black foreground </td></tr>
87+
<tr><td> 31 </td><td> for red foreground </td></tr>
88+
<tr><td> 32 </td><td> for green foreground </td></tr>
89+
<tr><td> 33 </td><td> for yellow (or brown) foreground </td></tr>
90+
<tr><td> 34 </td><td> for blue foreground </td></tr>
91+
<tr><td> 35 </td><td> for purple foreground </td></tr>
92+
<tr><td> 36 </td><td> for cyan foreground </td></tr>
93+
<tr><td> 37 </td><td> for white (or gray) foreground </td></tr>
94+
<tr><td> 40 </td><td> for black background </td></tr>
95+
<tr><td> 41 </td><td> for red background </td></tr>
96+
<tr><td> 42 </td><td> for green background </td></tr>
97+
<tr><td> 43 </td><td> for yellow (or brown) background </td></tr>
98+
<tr><td> 44 </td><td> for blue background </td></tr>
99+
<tr><td> 45 </td><td> for purple background </td></tr>
100+
<tr><td> 46 </td><td> for cyan background </td></tr>
101+
<tr><td> 47 </td><td> for white (or gray) background </td></tr>
102+
</table>
103+
<br>
104+
105+
__Run this in terminal:__
106+
107+
```clojure
108+
#!/bin/sh
109+
echo -e "\033[00;30m 00;30m \033[00m \033[02;30m 02;30m \033[00m"
110+
echo -e "\033[00;31m 00;31m \033[00m \033[02;31m 02;31m \033[00m"
111+
echo -e "\033[00;32m 00;32m \033[00m \033[02;32m 02;32m \033[00m"
112+
echo -e "\033[00;33m 00;33m \033[00m \033[02;33m 02;33m \033[00m"
113+
echo -e "\033[00;34m 00;34m \033[00m \033[02;34m 02;34m \033[00m"
114+
echo -e "\033[00;35m 00;35m \033[00m \033[02;35m 02;35m \033[00m"
115+
echo -e "\033[00;36m 00;36m \033[00m \033[02;36m 02;36m \033[00m"
116+
echo -e "\033[00;37m 00;37m \033[00m \033[02;37m 02;37m \033[00m"
117+
echo -e "\033[01;30m 01;30m \033[00m \033[01;40m 01;40m \033[00m"
118+
echo -e "\033[01;31m 01;31m \033[00m \033[01;41m 01;41m \033[00m"
119+
echo -e "\033[01;32m 01;32m \033[00m \033[01;42m 01;42m \033[00m"
120+
echo -e "\033[01;33m 01;33m \033[00m \033[01;43m 01;43m \033[00m"
121+
echo -e "\033[01;34m 01;34m \033[00m \033[01;44m 01;44m \033[00m"
122+
echo -e "\033[01;35m 01;35m \033[00m \033[01;45m 01;45m \033[00m"
123+
echo -e "\033[01;36m 01;36m \033[00m \033[01;46m 01;46m \033[00m"
124+
echo -e "\033[01;37m 01;37m \033[00m \033[01;47m 01;47m \033[00m"
125+
```

src/site_generator/snippets.clj

+4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929
:date "October 27, 2016"
3030
:author "Alex Shlyonov"
3131
:file-path "resources/partials/blog-posts/2016-08-27-zsh-in-the-pursuit-of-efficiency.markdown"}
32+
{:title "Zsh: colorize man pages"
33+
:date "October 31, 2016"
34+
:author "Alex Shlyonov"
35+
:file-path "resources/partials/blog-posts/2016-10-31-zsh-colorize-man-pages.markdown"}
3236
{:title "An Introduction to clojure.spec"
3337
:date "October 25, 2016"
3438
:author "Alex Martin"

0 commit comments

Comments
 (0)