カーソル行の複写 | ||||||
作者: 上村 郁夫 | ||||||
[CTRL]+[K][D](カーソル行の複写)は、VZのマニュアルでは「カーソル行を次の行にコピーしたい場合に便利です」と簡単に片づけてありますが、なかなかどうして、味わい深いマクロです。 ●実行前(通常行)文字境界または行境界のブロックの状態で実行すると、その範囲を二重化します。 ●実行前(文字境界のブロック) さて、ブロックの「二重化」まではよいのですが、「三重化」するつもりでさらに[CTRL]+[K][D]を押すと、通常行の二重化となってしまいます。 ●三重化しようとしたら……VZ標準の[CTRL]+[K][D]は「三重化」を想定していないのです。いや、そもそも「ブロックの二重化」を想定していないのかもしれません。 dupline.defを使えば、ブロックの三重化だろうが四重化だろうが可能となります。 ●dupline.defで三重化に成功まるで[CTRL]+[K][C](行・ブロック複写)を連続実行しているように見えるでしょう。でも、実際に[CTRL]+[K][C]を押してみればわかりますが、テキストスタックの先頭にはこの文字列はありません。また、一度でも[CTRL]+[K][D]以外の操作(たとえばカーソルを右に1個移動)をすると、「通常行の二重化」となります。 DUPLINE.DEFは、ユーザーが[CTRL]+[K][D]を連続して押しているあいだは無限に多重化をおこない、ユーザーが多重化をやめたとみるや「通常行の二重化」に戻る、賢いマクロなのです。 | ||||||
(「Vzマクロコレクション2」所収) | ||||||
download
【作者コメント】 (cm==50) は、直前にユーザが文字列のコピー([CTRL]+[K][C])をおこなった場合に対応するため……だったけ。 |