文字入力時のカーソルの無移動方法についNo.24391
シオ さん 08/01/28 19:08
 
上書きモードで半角英数字を入力したときにカーソルが移動してほ
しくないのですがそのような設定はありますでしょうか。

なければマクロでという話になるのですが、まずは設定にあるかど
うかを知りたくって質問しました。
#自分で調べたところ発見できませんでした。

やろうとしていることは列内の編集です。
例えば20列目だけを編集したいのです。
上書きモードで文字を入力して、キーボードで←↓を押せばいいの
ですが、少しでもキーボード入力を減らしたいです。
文字を入力してもカーソルが移動しなければ←を押す手間が省けま
す。

OS WindowsXP Pro SP2
秀丸 Ver6.14

[ ]
RE:24391 文字入力時のカーソルの無移動方No.24394
秀丸担当 さん 08/01/29 10:38
 

>上書きモードで半角英数字を入力したときにカーソルが移動してほ
>しくないのですがそのような設定はありますでしょうか。

そういう設定はいまのところありません。
自分がよくやる方法としては、
・Shift+F1 (キー操作の記録開始)
・何か一字入力
・←
・↓
・Shift+F1 (キー操作の記録終了)
としておいて、後は Shift+F2(キー操作の再生) をリピートしてやります。
固定の一字の場合はこれでできます。
数字の連番の場合は、0〜9の書き換えを記録して、10個ずつ再生してまずは一
の位だけを書き換えて、あとから十の位を書き換えるとか。少々面倒ですが、そ
れほど大量でなければそんな感じで済ませたりします。

V7.00以降では、[マクロ]→[マクロ登録]→[自動起動]で、編集後タイマーのマ
クロを登録しておけば、上書きモードに限ってその動作にさせることも可能です。
例えば以下のようなマクロを登録しておきます。

if( event == 5 ){ //編集後タイマー
    if( geteventparam(0) == 0 ) { //通常の編集
        if( overwrite ) { //上書きモード時
            left;
        }
    }
}

この操作のためだけに普段の入力でこのマクロが動き続けるのも嫌だと思うので、
この操作をするときだけ自動起動マクロをONにして、普段はOFFにしておくのが
いいと思います。

[ ]
RE:24394 文字入力時のカーソルの無移動方No.24398
シオ さん 08/01/29 13:55
 
秀丸担当様

>V7.00以降では、[マクロ]→[マクロ登録]→[自動起動]で、編集後タイマーのマ
>クロを登録しておけば、上書きモードに限ってその動作にさせることも可能です。
>例えば以下のようなマクロを登録しておきます。
>
>if( event == 5 ){ //編集後タイマー
>    if( geteventparam(0) == 0 ) { //通常の編集
>        if( overwrite ) { //上書きモード時
>            left;
>        }
>    }
>}

上記マクロを登録したところ理想通りの動きとなりました。


>この操作のためだけに普段の入力でこのマクロが動き続けるのも嫌だと思うので、
>この操作をするときだけ自動起動マクロをONにして、普段はOFFにしておくのが
>いいと思います。

やや重たかったので普段常駐するのは避けたいと思い、以下の自動起動マクロの
ONとOFFを切り替えるマクロを作成してメニューバーに登録しました。
しかし正常に動作しません。

ここから==========>
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
#eventMacroFlag = getregnum( "EventMacroFlag" );
closereg;

#autoRunMacro = #eventMacroFlag & 1;
if (#autoRunMacro) {
 // 自動起動有効のため無効にする
 #eventMacroFlag = #eventMacroFlag - 1;
} else {
 // 自動起動無効のため有効にする
 #eventMacroFlag = #eventMacroFlag + 1;
}

openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "EventMacroFlag", #eventMacroFlag;
closereg;
envchanged;
<==========ここまで

レジストリエディタでEventMacroFlagの値をみたところ値は正常に切り替わっていま
す。
[マクロ]→[マクロ登録]でマクロ登録画面を表示させれば秀丸のほうに設定が反映され
ましたので、どうもenvchangedがあやしいのではと考えています。
正しい関数があれば教えてください。

[ ]
RE:24398 文字入力時のカーソルの無移動方No.24399
Iranoan さん 08/01/29 15:54
 
 シオさん今日は、Iranoan です。
 念の為お断りしておくと、開発者とは何の関わりも無い単なる一ユーザです。
> ONとOFFを切り替えるマクロを作成してメニューバーに登録しました。
> しかし正常に動作しません。
 正常に動作しない理由はわかりませんが、ON/OFF を切り替えるなら末尾の
方法ですっきりすると。
//------------------------------------------------------------
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "EventMacroFlag", getregnum( "EventMacroFlag" )^1;
closereg;
envchanged;

[ ]
RE:24399 文字入力時のカーソルの無移動方No.24400
秀丸担当 さん 08/01/29 16:02
 

> ONとOFFを切り替えるマクロを作成してメニューバーに登録しました。
> しかし正常に動作しません。

このレジストリの値は、秀丸エディタ内部でキャッシュされているため、すぐに
反映されていませんでした。
envchangedをしたときは反映できるように、次のβ版で修正したいと思います。

[ ]