1 件の投稿を表示中 (合計 6 個)
  • 作成者
    投稿
  • #23435
    ent
    参加者

    http://www.emeditor.org/ja/cmd_edit_shift_top.html
    こちらに書かれている 「選択範囲をXXXへ」コマンドではできなかったので以下のパターンに対応できる選択コマンドの追加をお願いできないでしょうか。

    以下のサンプル文字列2行は、1行目が行頭にタブ、その次にABCで行末。2行目が行頭から123でタブ、その次にABCで行末。です。
    \tABC
    123\tABC

    1行目の行末から SHIFT+HOME キーを押すと、ABCが選択されますが、2行目の行末から SHIFT+HOME を押すと123\tABCが選択されます。
    要望のコマンドは、2行目のような場合にもABCを選択するものです。実現可能でしょうか。
    非空白文字のまとまりの終了を目印に選択していく動作が希望です。

    DEF\t123\tABC
    という文字で行末から1回コマンドを実行すると ABC が選択され、続けてコマンドを実行すると123\tABC を選択し、3回目には DEF\t123\tABC が選択できる動作だと尚良いです。

    ショートカットキーの割り当てはされなくても、コマンドがあれば好みの設定で呼び出しますのでコマンドだけでも実装していただきたく。

    ご検討のほどよろしくお願いいたします。

    #23437
    Yutaka Emura
    キーマスター

    ent 様

    いつもお世話になっております。江村です。

    [選択範囲を1単語左へ] コマンド

    http://www.emeditor.org/ja/cmd_edit_shift_left_word.html

    Ctrl+Shift+Left

    が相当すると思います。

    よろしくお願い申し上げます。

    #23440
    ent
    参加者

    江村様

    回答ありがとうございます。

    試してみましたが、それだと 希望したような選択動作になりません。 サンプルとして挙げた文字列が単純すぎましたね、申し訳ありません。

    たとえば 以下のようなURL(その前後は空白文字) があった場合、末尾から先頭までURL全体を一度に選択したいのです。
    https://jp.emeditor.com/forums/
    または 以下のようなフルパス なども一度に選択したいのです。
    C:\Windows\SysWOW64

    つまり 「非空白文字のまとまり」を選択するコマンドがほしいのですが、既存のコマンドで同様の動作をするものがありますでしょうか。

    さらに発展させると「「非空白文字のまとまり」」に限らずそのような選択対象の文字列のマッチ条件を設定によって正規表現で与えることができるとカスタマイズ性が良くてベストです。

    よろしくお願いいたします。

    #23442
    Yutaka Emura
    キーマスター

    ent 様

    いつもお世話になっております。江村です。

    簡単に実現するには、[カスタマイズ] ダイアログの [編集] タブの [次の文字を英数字として扱う] テキスト ボックスに、

    _:/\

    などを入力することができます。いかがでしょうか?

    よろしくお願い申し上げます。

    #23443
    ent
    参加者

    江村様

    代替案の提案ありがとうございます。さっそく試してみました。

    確かに今回の範囲選択としては悪くないですが、この設定による他の箇所での影響がどこまで及ぶか想像がつかず、常用するには怖い、不便だと感じました。

    具体的には、マーカーの 自動マーカー>カーソル位置の単語を取得する、の設定まで
    影響を受けていることが確認できました。こういうところは設定カスタマイズ前と同じ動作をさせたいです。

    今回の要望の実現をを検討していただきたく。

    よろしくお願いいたします。

    #23444
    Yutaka Emura
    キーマスター

    ent 様

    いつもお世話になっております。江村です。

    それでは、次のようなマクロはいかがでしょうか?

    // if cursor is already at the left edge, quit now
    if( document.selection.GetActivePointX(eePosLogical) == 1 )  Quit();
    // skip first spaces
    for( ;; ) {
    	document.selection.CharLeft(true,1);
    	if( document.selection.GetActivePointX(eePosLogical) == 1 )  break;
    	if( !/^\s/.test(document.selection.Text) ) {
    		break;
    	}
    }
    // Select left to find a space
    for( ;; ) {
    	if( document.selection.GetActivePointX(eePosLogical) == 1 )  break;
    	document.selection.CharLeft(true,1);
    	if( /^\s/.test(document.selection.Text) ) {
    		document.selection.CharRight(true,1);
    		break;
    	}
    }

    よろしくお願い申し上げます。

1 件の投稿を表示中 (合計 6 個)
  • このトピックに返信するにはログインしてください。