タブ/スペース交換

作者: 上村 郁夫


 「変換」ではなく「交換」であることに注意してください。
 [TAB]を押すとカーソル位置にタブコードを挿入することはご存知のとおりです。「Eu+」([TAB]でスペースコードを入力ON)だと、タブの場合と同じ桁位置まで半角スペースを挿入します。
┌───────────────────┐
│                                      │
└───────────────────┘
 (画面7−8)タブコードを挿入(Eu-)

┌───────────────────┐
│                                      │
└───────────────────┘
 (画面7−9)半角スペースを挿入(Eu+)

 たいていの人は「Eu-」のまま使っているでしょうが、一時的に[TAB]で半角スペースを挿入したいことがあります。[SHIFT]+[f・1](モードメニュー)には、このオプションを変更する項目はありません。あったとしても、ONとOFFで2度手間となります。
 そこでXTAB.DEFの出番です。[CTRL]+[TAB](J-3100では[SHIFT]+[TAB])を押すと、一時的にオプション「Eu」を逆転してタブまたはスペースを挿入します。ふだん「Eu+」で使っている人は、[SHIFT]+[TAB]でタブを挿入できます。
 [CTRL]+[TAB](J-3100では[SHIFT]+[TAB])は「文字列の補完」マクロに使われています。このマクロは検索文字列ヒストリーのサイズに依存し、古い文字列は消えますので、本気で使うには力不足の感をいなめません。めったに使わない人は、XTAB.DEFと差し替えてください。
 「文字列の補完」を残しておきたいなら、UNPASTE.DEF(ペーストのアンドゥ)の後ろ側にコピーするとよいでしょう。UNPASTE.DEFは行・ブロックの挿入または複写の直後以外は何もしません。手があいているのなら「文字列の補完」をやらせましょう。[CTRL]+[K][U]というキーは[CTRL]+[Q][U](英大文字/小文字変換)と機能的に似ていますから好都合です。


(「Vzマクロコレクション2」所収)

download
======== xtab.def ======== by I.Kamimura
* M
22 ^[TAB] "タブ/スペース交換"
        eu!, #21 eu!,
;*
;======== End of xtab.def ========

【作者コメント】
最後の段落は何を云わんとしているのか、よほどのマクロ愛好家でないとチンプンカンプンでしょう。筆者でさえ一瞬首をかしげました。下記リストのようにしろと言いたのです。連続実行するには、[Ctrl]+[K][U]は押しにくいので、[Ctrl]+[[](直前のコマンド実行)を使いましょう。
======== unpaste.def ======== by I.Kamimura
* M
89 ^KU  "ペーストのアンドゥ"
        (cm==48)? { mb=r, #y. }
        (cm==50)? { mb=r, ux[+, #y ux],. }
        
        (lx)??.
        &s mp[,
        (cm)?{ x=lx, i=2, }?{ &x(x) #t i++, }
        #a #G #61 ' ' #h (i){ #e } #m #t
        mp], #? cm=0, 
;* ;======== End of unpaste.def ========