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用
    }
    })();

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