URLの操作方法の設定変更値について

  1. 最近使い始めさせていただいております。

    URLの文字列に対して「CTRL+→(←)アロー」を押すと、URLの終点(または始点)まで一気に移動してしまいます。
    これをURL以外の移動時と同じ(単語単位?) にすることは可能でしょうか?

    URLの一部のみコピペしたい、変更したい等行う場合に文字選択がやりづらく困っております。
    始点・終点に移動する場合は「HOME(END)」キーを使うので、設定でOFFに出来ないかと探したのですが、見つける事が出来ませんでした。

    また、ダブルクリックで選択しようにも、URLが選択されてしまいます。
    「CTRL+ダブルクリックでブラウザ表示、通常ダブルクリックで文字選択」等でも構わないので、何か方法は無いでしょうか。

    なにとぞご教授願います。

    Ver2.6.3 (64bit)

     |  pianyi  |  返信
  2. Mery をお試しくださりありがとうございます。

    > 「CTRL+ダブルクリックでブラウザ表示、通常ダブルクリックで文字選択」等でも構わないので、何か方法は無いでしょうか。

    申し訳ございませんが、現在のところそういった機能はございません。プログラムを確認してみましたが、エディタエンジンの仕様上、構文解析処理で URL は一つの単語として処理されるようになってしまってますね。

    ご意見は今後の開発の参考にさせて頂きたいと思います。

     |  Kuro  |  返信
  3. そうでしたか。
    お手数をおかけしますが、ご検討のほどよろしくお願いいたします。

    > Mery をお試しくださりありがとうございます。

    > > 「CTRL+ダブルクリックでブラウザ表示、通常ダブルクリックで文字選択」等でも構わないので、何か方法は無いでしょうか。

    > 申し訳ございませんが、現在のところそういった機能はございません。プログラムを確認してみましたが、エディタエンジンの仕様上、構文解析処理で URL は一つの単語として処理されるようになってしまってますね。

    > ご意見は今後の開発の参考にさせて頂きたいと思います。

     |  pianyi  |  返信
  4. 前に TinySegmentor という分かち書きスクリプトで「少し賢い右移動」を作って
    遊んでいたのでその流用。
    RightWordEx.js あたりの名前を付けて Ctrl + → にマクロ割り当てすれば使えます。
    Ctrl + Shift + → が必要ならコメント通りに修正して別ファイルで保存。

    (function (){
      var reDelimit = new RegExp("[/\.:]","g");
      with (document.selection) {
        if(GetActivePos() >= document.text.length){
          Quit();
        }
        if (!isEmpty) { 
          Collapse(meCollapseEnd);
        }
        CharRight(true);
        var iChar = Text.charCodeAt(0);
        Collapse(meCollapseStart);
        if (iChar <= 0x7e) {
          WordRight(true);
          var selText = Text;
          Collapse(meCollapseStart);
          if(reDelimit.test(selText)){
            var words = selText.replace(reDelimit," ").split(" ");
            CharRight(false, words[0].length); //Ctrl + Shift + → に割り当てるなら true
          }else{
            WordRight(false); //同じく
          }
        } else {
          WordRight(false); //同じく
        }
      }
    })();

    エディタエンジンの単語認識は、全角スペースの連続をまとめてくれない(1文字ずつ移動する)けど省略。
    また海外製エディタのように次の単語まで移動(空白で止まらない)するか、多くの日本製エディタのように単語の末尾まで移動(空白で止まる)するかをオプションで選べる機能もつけてあったけど割愛。

    左移動もできたので追加
    (function (){
      var reDelimit = new RegExp("[/\.:]","g");
      with (document.selection) {
        if(GetActivePos() <= 0){
            Quit();
        }
        if (!isEmpty) { 
            Collapse(meCollapseEnd);
        }
        CharLeft(true);
        var iChar=Text.charCodeAt(0);
        Collapse(meCollapseStart);
        if(iChar==9 || iChar==32){
            WordLeft(false);
        } else if(iChar <= 0x7e){
          WordLeft(true);
          var selText = Text;
          Collapse(meCollapseStart);
          if(reDelimit.test(selText)){
            var words = selText.replace(reDelimit," ").split(" ");
            CharLeft(false, words[words.length-1].length);
          }else{
            WordLeft(false);
          }
        } else {
            WordLeft(false);
        }
      }
    })();

     |  久々に匿名で  |  返信
  5. Chtl + Shift + → は連続して実行したときの動作が意図したものにならないので false → true の書き変えは行わずに以下のマクロに差し換え。
    (function(){
      var readFile = function(FileName){
        var FOR_READING = 1 ;
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var sFile = fso.OpenTextFile(fso.GetParentFolderName(window.ScriptFullName) + "\\" + FileName, FOR_READING);
        var scripttext = sFile.ReadAll();
        sFile.Close();
        return scripttext;
      }
      with (document.selection) {
        if(GetActivePos() >= document.text.length){
          Quit();
        }
        var anchorpos = GetAnchorPos();
        var scripttext = readFile("RightWordEx.js"); //このマクロと同じフォルダに置く
        eval(scripttext);
        SetAnchorPos(anchorpos);
      }
    })();

    Ctrl + Shift + ← は 「var anchorpos = GetAnchorPos();」 と 「SetAnchorPos(anchorpos);」の2行を追加します。
    (function (){
      var reDelimit = new RegExp("[/\.:]","g");
      with (document.selection) {
        if(GetActivePos() <= 0){
            Quit();
        }
        var anchorpos = GetAnchorPos(); //Shift用
        if (!isEmpty) { 
            Collapse(meCollapseEnd);
        }
        CharLeft(true);
        var iChar=Text.charCodeAt(0);
        Collapse(meCollapseStart);
        if(iChar==9 || iChar==32){
            WordLeft(false);
        } else if(iChar <= 0x7e){
          WordLeft(true);
          var selText = Text;
          Collapse(meCollapseStart);
          if(reDelimit.test(selText)){
            var words = selText.replace(reDelimit," ").split(" ");
            CharLeft(false, words[words.length-1].length);
          }else{
            WordLeft(false);
          }
        } else {
            WordLeft(false);
        }
        SetAnchorPos(anchorpos); //Shift用
      }
    })();

     |  匿名です  |  返信
スポンサーリンク