ansi 20150703.126(in MELPA)
Turn string into ansi strings

概要

ansi.el は文字列にANSIエスケープシーケンスを付加する関数群です。

端末の文字に色をつけたくてもエスケープシーケンスを忘れた場合に
役立つことでしょう。

以下のように使います。

;; 文字色
(ansi-red "foo")                        ; => "\e[31mfoo\e[0m"
(ansi-blue "bar")                       ; => "\e[34mbar\e[0m"

;; 背景色
(ansi-on-red "foo")                     ; => "\e[41mfoo\e[0m"
(ansi-on-blue "bar")                    ; => "\e[44mbar\e[0m"

;; スタイル
(ansi-bold "foo")                       ; => "\e[1mfoo\e[0m"
(ansi-blink "bar")                      ; => "\e[5mbar\e[0m"

;;; DSL化!with-ansiでansi-プレフィクスを省略できる
;; 文字色
(with-ansi
 (red "foo")                            ; => "\e[31mfoo\e[0m"
 (blue "bar")                           ; => "\e[34mbar\e[0m"
 )

;; 背景色
(with-ansi
 (on-red "foo")                         ; => "\e[41mfoo\e[0m"
 (on-blue "bar")                        ; => "\e[44mbar\e[0m"
 )

;; スタイル
(with-ansi
 (bold "foo")                           ; => "\e[1mfoo\e[0m"
 (blink "bar")                          ; => "\e[5mbar\e[0m"
 )

;;; format + ansi-XXX
(ansi-apply 'red "foo %s" "bar")        ; => "\e[31mfoo bar\e[0m"

;;; カーソル移動
(ansi-up)                               ; => "\e[1A"
(ansi-down 3)                           ; => "\e[3B"
(ansi-csi-apply 'forward)               ; => "\e[1C"
(ansi-csi-apply "J" 10)                 ; => "\e[10J"

;;; ネスト可能
(ansi-bold
 (ansi-red (ansi-blink "foo bar")))
;; => "\e[1m\e[31m\e[5mfoo bar\e[0m\e[0m\e[0m"
(with-ansi
 (bold (red (blink "foo bar"))))
;; => "\e[1m\e[31m\e[5mfoo bar\e[0m\e[0m\e[0m"

eshellはある程度エスケープシーケンスに対応しているので、
色を確かめられます。

20150714163754.png
Fig1: eshellで動作確認

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてansiを使う方は
以下のコマンドを実行します。

M-x package-install ansi

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name ansi


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。