複数セクションがある man ページを peco で一覧から選べるようにする


ほかのセクションに同名の man ページがあるか否かを確認するには、man コマンドに -aw オプションを付けて確認することができます。

ほかのセクションに同名のmanページがあるか調べるには - @IT

このオプションを利用して peco でセクション一覧を表示し、一覧から目的の man を表示するシェルスクリプトの関数を書いてみました。

.bashrc
manselect() {
  if [ $# -ne 1 ]; then
    echo 'ArgumentError: wrong number of arguments (expected 1)'
    return 1
  fi
  man $1 > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    echo "ArgumentError: no manual entry for $1"
    return 1
  fi
  selected=$(man -aw $1 | peco)
  args=$(basename $selected | awk -F . '{ printf("%s %s\n", $2, $1) }')
  man $args
}

意外に複数セクションがある man ページを発見することができたりして、なかなか楽しいです。