コマンド入力中にman page / helpを見れるようにする
bind -x
はコマンドラインの状態を保持したまま任意のコマンドを実行するキーバインドを定義する。
これを使うと、zshのrun-helpのような機能を実装することができる。
if [[ -n "$PS1" ]]; then bind -x '"\eh":"[[ -n $READLINE_LINE ]] && man ${READLINE_LINE%% *}"' bind -x '"\e?":"[[ -n $READLINE_LINE ]] && (${READLINE_LINE%% *} --help) |& ${PAGER:-less}"' fi
上のコードを~/.bashrcに書いておくと、コマンドライン入力中にM-h
でman page、M-?
でhelpを見ることができる。
ページャを閉じた後も元のコマンドラインが残っているので、引き続き引数などを入力することが可能。
便利。
2015-01-23追記
次のような関数を定義し、sudoを読み飛ばすようにした。
if [[ -n "$PS1" ]]; then bind -x '"\eh":"__look_at man"' bind -x '"\e?":"__look_at help"' __look_at() { local line="${READLINE_LINE##sudo }" local cmd="${line%% *}" if hash "$cmd" &>/dev/null; then if [[ "$1" == "man" ]]; then man "$cmd" elif [[ "$1" == "help" ]]; then "$cmd" --help |& ${PAGER:-less} fi fi } fi