前の記事でも紹介したけど、zshですべてのオプションの設定を一覧表示したいときは、set -o
コマンドを使う。
set -o
noaliases off
allexport off
noalwayslastprompt off
alwaystoend off
noappendhistory off
autocd on
autocontinue off
noautolist off
... 以下省略 ...
でもこれにはちょっと罠があって、先頭にnoが付いているオプションはon/offが逆になる。
例えばさっきの例では、「noaliasesがoff」と出力されている。
noaliases off
これは、実は「aliasesオプションがon」であることを表している。つまり、先頭にnoと付いている場合は、先頭のnoを取り除いてon/offを逆にすると本来の意味になる。
これを頭の中で考えると分かりにくいので、コマンドで自動的に変換するようにした。このコマンドでOK。
% set -o | sed -e 's/^no\(.*\)on$/\1 off/' -e 's/^no\(.*\)off$/\1 on/'
これを呼び出したときの出力はこんな感じ。うまく変換できてる。
% set -o | sed -e 's/^no\(.*\)on$/\1 off/' -e 's/^no\(.*\)off$/\1 on/'
aliases on
allexport off
alwayslastprompt on
alwaystoend off
appendhistory on
autocd on
autocontinue off
autolist on
関数にするとすぐに呼び出せる。
function showoptions() {
set -o | sed -e 's/^no\(.*\)on$/\1 off/' -e 's/^no\(.*\)off$/\1 on/'
}
これで便利になるので、試してみてください!