tmux使用時にmanページを新規ウィンドウ表示 & manページをカラー表示にする設定法のまとめ
tmux使用時、通常、manページは man
コマンドを実行したウィンドウに表示される。この状態では、manページを参照しながらコマンドを実行したい場合、不便である。
その解決策として、tmux使用時に、manページを新規ウィンドウで表示する方法をまとめる。
また、manページをカラー表示にし、読みやすくする方法もまとめる。
設定手順
設定は、以下の2つの手順に分けておこなう。
- 新規ウィンドウ表示の設定
- manページカラー表示の設定
上記2つの手順は、それぞれ独立しているため、どちらか1つの設定だけをおこなうことも可能。
新規ウィンドウ表示の設定
manページをtmux内の新規ウィンドウで表示するために、シェル関数を追加する。
設定手順
$HOME/.zshrc に、以下の関数を追加する。(スクリプト引用&改変元)
function man_tmux() {
if [ $# -le 1 ];
tmux new-window -n "man $@" "exec man $@"
else
man $@
fi
}
alias man=man_tmux
以下、コピペ用ワンライナー
$ echo -e 'function man_tmux() {\n\tif [ $# -le 1 ];\n\t\ttmux new-window -n "man $@" "exec man $@"\n\telse\n\t\tman $@\n\tfi\n}\nalias man=man_tmux' | sed -e 's/\t/ /g' >> ~/.zshrc
補足
上記関数の"new-window"を"split-window"にした場合、新規ウィンドウではなく分割ペインとしてmanページが表示される。
manページカラー表示の設定
manページをカラー表示にするには、大きく分けて次の2種類の方法がある。
- ページャでカラー表示できるように設定する
- ターミナルでカラー表示できるように設定する
ここでは、ページャはlv、less、mostの3つを、
ターミナルはevilvteを、合計4通りの設定方法を述べる。
lvでカラー表示 (上記4種類の中で、一番おすすめの方法)
設定手順
$HOME/.zshenv に、以下の内容を追加する。
MANPAGER="lv"
LV="-c -Sh1;36 -Su1;4;32 -Ss7;37;1;33"
以下、コピペ用ワンライナー
$ echo -e 'MANPAGER="lv"\nLV="-c -Sh1;36 -Su1;4;32 -Ss7;37;1;33"' >> ~/.zshenv
カラーコードは、こちらを参考に。
注意点として、lvのオプションでは、ANSIカラーコードとして正確に記述する必要はない。
数値とセミコロン';'だけで指定できる。
"tmux new-window"実行時には $HOME/.zshrc は読込まれないため、上記設定は $HOME/.zshenv に書かなければならない。
(以下、上記の問題の詳細が書いてあるサイト)
この方法の欠点
- (考えつく限りでは)無し
lessでカラー表示
環境変数"LESS_TERMCAP"を用いて設定をおこなう。
設定手順
1. $HOME/.zshenv に、以下の内容を追加する。
MANPAGER="less"
LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking
LESS_TERMCAP_md=$'\E[01;38;5;74m' # begin bold
LESS_TERMCAP_me=$'\E[0m' # end mode
LESS_TERMCAP_so=$'\E[38;5;246m' # begin standout-mode - info box
LESS_TERMCAP_se=$'\E[0m' # end standout-mode
LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline
LESS_TERMCAP_ue=$'\E[0m' # end underline
2. 任意のANSIカラーコードを指定する。
この方法の欠点
- マルチバイト文字を表示する際、表示がおかしくなることがある
- マルチバイト文字の検索ができない
mostでカラー表示
mostは標準でmanページをカラー表示するため、インストールとmanページャの指定をするだけで良い。
設定手順
この方法の欠点
- キーバインドがlvやlessと大きく異なる
> less風のキーバインドに設定することは可能(参考: ArchWiki - man page)
ターミナル(evilvte)でカラー表示
evilvteの特定のテキストを色付けするオプションを有効にする。
設定手順
1. config.h を編集する。
の3行をコメントアウトし、それぞれ任意の色を指定する。
// #define COLOR_TEXT_BOLD "red"
// #define COLOR_TEXT_DIM "#FFFF00"
// #define COLOR_TEXT_HIGHLIGHTED "green"
2. make install する。
この方法の欠点
- manページ以外の表示にも、上記の色設定が適用されてしまう
参考サイト
- tmux内でコマンドを実行する際に新しいウィンドウやウィンドウを分割して実行する - うどん駆動開発
http://blog.repl.info/blog/2011/12/03/ssh-with-tmux-and-zsh/ - LV Homepage (in Japanese)
http://www.mt.cs.keio.ac.jp/person/narita/lv/index_ja.html - tmux new-windowで環境変数が読み込まれない件 | Proxima Fermata
http://blog.larus.jp/?p=583 - zsh: 5. Files
http://zsh.sourceforge.net/Doc/Release/Files.html#Startup_002fShutdown-Files - zshの設定ファイルの読み込み順番のメモ - 目の前には僕らの道がある
http://masasuzu.hatenablog.jp/entry/20120506/1336286016 - man page - ArchWiki
https://wiki.archlinux.org/index.php/man_page#Colored_man_pages