ex コマンド、set のテスト。
set [option[=value] | nooption | option? | all]*
単純なコマンドに見えて、意外に奥が深い。
引数がまったくない場合、デフォルトの値から変更されているオプションが表示される。
引数が all を含む場合、すべてのオプションが表示される。posix では all が排他的とは定義されていない。つまり、:set report all などと入力すると report の値を表示し、次に全オプションを表示する……ような実装が定義にもっとも素直に従っている。vim もそう動作する。これに対し、wasavi では最初に引数を走査し、all を含んでいたら他の引数は無視し、単に全オプションを 1 度だけ表示する。
オプション名に続き、文字 ? を入力した場合、現在のオプションの値が表示される。? とオプション名の間には 0 文字以上の空白を挟むことができる。2 値タイプのオプションでは、現在のオプション値を表示するのに ? の入力は必須である。2 値タイプ以外のオプションでは、? を付けても付けなくても、代入式でない限り現在の値を表示する。
2 値タイプのオプションが set option の形式で指定された場合、option の値はオンになる。一方、set nooption の形式ではオフになる。2 値タイプ以外のオプションで nooption 形式を指定するとエラーになる。
2 値タイプ以外の、数値や文字タイプのオプションでは set option=value 形式で値を与えることができる。このとき、value 内に空白を含めるには、空白の前にバックスラッシュを置く必要がある。1 文字以上の空白は引数の区切りとみなされる。これにより、単体の set コマンドで複数のオプションをセットしたり表示したりできる。オプション名と = の間には 0 文字以上の空白を含めることができる。