番号 | 記号 | 初期キー | 機能 |
---|---|---|---|
#23 | - | ^QU | 英大文字/小文字変換 |
カーソル位置以降の英字1語の大小を逆にする。大小どちらに変換するかはカーソル位置の1文字で判断される。つまり,カーソル位置が小文字なら,以降を大文字化する。語の途中で実行すると,カーソル位置より前は変化しない。なお,実行後のカーソル位置は変化しない。
戻り値r:常に0
マクロの中で使用することもできるが,カーソル位置の文字コードが60hよりも大きいのか小さいのか判定が必要になるので,何れかのバッファに取得して文字列関数&Su()あるいは&Sl()を使用した方が楽である。なお,入力された1文字を大文字にして他の処理に受け渡すには,関数&u()を使用するとよい。
編集モードと同じ
入力窓はこのコマンドを使用する際の作業用として使い易い。
編集モードと同じ
無効
無効
#23はその使い勝手に制限があるため,マクロでの拡張がよく行われたコマンドの代表でもある。次に掲げるような拡張が複数存在し,マクロでの手法も様々である。
23 ^QU "Word Case" ;ykome ; 【全角対応】 (ck)?{ ; カーソル位置が半角なら#23のみ実行 (cd<'A'||cd>'z')?. ; アルファベットでないなら終了 a=cd>'Z', ; a+大文字化 a-小文字化 i=-1, ; ポインタ用カウンタを初期化 #28 ; ラインバッファへ入る(cpがlbuf指示) :A i++, ; iは0から開始(cp..0がカーソル位置) c=cp..i, ; cに文字コードを取得 c!!, ; cを上位下位交換して演算可能な数値に (c=='_'||c=='$'||c>='0'&&c<='9')? >A ;特定の記号と数字をスキップして処理を停止させない (c>='A'&&c<='Z')?{ ; 大文字なら小文字化処理の対象 (a)?? cp..i=(c+$21)!!, >A } ;'a'($8281)-'A'($8260)=$21 (c>='a'&&c<='z')?{ ; 小文字なら大文字化処理の対象 (a)? cp..i=(c-$21)!!, >A } ;演算後に上位下位を再交換して填め込む } #23
1 ^^ "Capital" (s>2)?. #a &u(cd) mi[+, &o(r) mi], #f
= H_case.def = * M 89^\"半角英文字列の先頭を大文字/小文字化" ?. mr[, &s lx[, ly[, #a #d ' ' #a #23 #d #g &y(0]) &x(0]) mr], &d &b(2) *
23 ^KW "" ;Word Case (63) ;[\] Abc ?. #28 (r)?. &s cp[, ;cp保存: 長い論理行での復帰のため (ct-6)?#a (ks&1)?{ (cd&32)?#23 #d } ;#d (cd&32<1) } ?#23 #23 cp], #?
24 ^OW "" ;Case Lower (50) ;[\] Upper ?. #? (r)?. wa..19.2-, ;wa..19: bend, #?: view too (ks&1)?&Su(cp) ?&Sl(cp) #?