|
| 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 | +``` |
0 commit comments