番号 | 記号 | 初期キー | 機能 |
---|---|---|---|
#21 | - | ^I [DEL] | タブの出力 |
Eu([TAB]をスペースに変換)が無効であれば,タブ(制御コード09h)をカーソル位置に出力する。Euが有効な場合は,タブストップ位置まで1個以上のスペース(1バイト空白コード20h)を出力する。
mi(挿入/上書きモード)が0であればEuに応じた空白文字が出力され,miが1あるいは2なら次のタブ停止位置まで移動する。
戻り値r:常に0
タブ停止位置を決定するタブ桁幅を制御する変数は3つある。指定できる値はいずれも2のべき乗で最大64。
変数 | 適用ファイル | 適用タイミング |
---|---|---|
Ta | 通常のファイル | オープン時 |
Tb | *E(その他セクション)3番で指定するデフォルトのテキスト拡張子のうち,先頭文字を大文字で指定したファイル | オープン時 |
Ht | 編集中のファイルごと | 編集中随時,オープンイベント |
マクロの中で使用することは可能だが,環境によって振る舞いが変わることに注意しなければならない。確実にタブコードを出力するためには,&o(9)
を使用するのがよい。文字列中に混在させるには$(9)
を使用したり,出力時に引数を直値9として%cで出力させる。
&?("abc$(9)def%c",9)
出力結果:
abc→ def→
(「→」はタブコード)
なお,初期アサインされたキー^Iは,プリフィクスキーとして転用されることが多い。
編集モードと同じ。但し,編集テキスト変数ht(タブストップ単位)の指定値にかかわらず1バイト幅をとる。オプションEu([TAB]をスペースに変換)が有効(+)の環境では,1バイトのスペースを出力する。
編集モードと同じ。但し,編集テキスト変数ht(タブストップ単位)の指定値にかかわらず1バイト幅をとる。オプションEu([TAB]をスペースに変換)が有効(+)の環境では,1バイトのスペースを出力する。
無効
なお,初期アサインされたキー[TAB]は複窓間の移動に使用されている。
無効
次のm.gann師のコードは,振る舞いの変化を総動員で利用したものである。敢えてプッシュ・ポップを使用しない,動きを見切った最短コードが見事だ。
21 ^[TAB] "" ;Spc_Tab (39) ;[\] Jump_Tab ?. (ks&1)?mi!, ;シフト起動なら挿入/上書きモードを逆転する eu!, #21 eu!, ;タブ/スペース出力を切り替える ?. ;通常起動ならここで終了 mi!, #] ;逆転した挿入/上書きモードを元に戻す