AppleScriptもAutomatorも使わずにタグやカッコで囲うキーバインドの設定

  • AppleScriptAutomatorも使わずに、
  • AppleScriptAutomatorとは比較にならないほど軽快に、
  • テキストをタグやカッコで囲んだり、
  • 小文字・大文字・頭文字だけ大文字に変換する等の、
  • ショートカットの設定ができるのであった。

できること

以下、Cocoaアプリケーションのテキスト入力環境で有効。

  • 選択範囲を小文字に変換するよ。(control-/、l
  • 選択範囲を大文字に変換するよ。(control-/、u
  • 選択範囲の単語を頭文字だけ大文字に変換するよ。(control-/、c
  • 選択範囲を' 'で囲うよ。(control-/、'
  • 選択範囲を" "で囲うよ。(control-/、"
  • 選択範囲を[ ]で囲うよ。(control-/、[
  • 選択範囲を{ }で囲うよ。(control-/、{
  • 選択範囲を( )で囲うよ。(control-/、(
  • 選択範囲を< >で囲うよ。(control-/、<
  • 文字カーソル位置の行をすべて大文字タイトルにして改行するよ。(control-option-u
    • 例:This is a pen. → control-option-u → THIS IS A PEN.\n\n
  • 直前の単語をタグにするよ。(control-shift-h
    • 例:div → control-shift-h → <div></div>
  • 選択範囲の両端を1文字ずつ拡張するよ。(control-shift-+
読み方
  • 例:(control-/、u)
  • controlキーを押しながら/を押す。その後uキーのみ押す。

インストール

  • 以下のファイルをホームのライブラリに保存する。
    • ~/Library/KeyBindings/DefaultKeyBinding.dict
    • KeyBindingsフォルダが存在しない場合は自分で追加する。
  • 半角¥は、半角\に、変換する必要がある。
    • ちなみに自分の環境では、コピー&ペーストすると半角¥は半角\に変換された。(ブラウザ:Sfari)
{
  "^/" = {
/* 小文字・大文字・頭文字だけ大文字へ変換(control-/、l・u・c) */
    "l" = "lowercaseWord:";
    "u" = "uppercaseWord:";
    "c" = "capitalizeWord:";

/* 選択範囲を囲う */
    /* ''で囲う(control-/、') */
    "'" = (
            "setMark:",
            "deleteToMark:",
            "insertText:", "'", "yank:", "insertText:", "'",
          );
    /* ""で囲う(control-/、") */
    "\"" = (
            "setMark:",
            "deleteToMark:",
            "insertText:", "\"", "yank:", "insertText:", "\"",
           );
    /* []で囲う(control-/、[) */
    "[" = (
            "setMark:",
            "deleteToMark:",
            "insertText:", "[", "yank:", "insertText:", "]",
          );
    /* {}で囲う(control-/、{) */
    "{" = (
            "setMark:",
            "deleteToMark:",
            "insertText:", "{", "yank:", "insertText:", "}",
          );
    /* ()で囲う(control-/、() */
    "(" = (
            "setMark:",
            "deleteToMark:",
            "insertText:", "(", "yank:", "insertText:", ")",
          );
    /* <>で囲う(control-/、<) */
    "<" = (
            "setMark:",
            "deleteToMark:",
            "insertText:", "<", "yank:", "insertText:", ">",
          );
    /* 「」で囲う(control-/、control-[) */
    "^[" = (
            "setMark:",
            "deleteToMark:",
            "insertText:", "「", "yank:", "insertText:", "」",
           );
  };

/* カーソル位置の行をすべて大文字タイトルにする(control-option-u) */
    "^~u" = ("selectParagraph:",
             "uppercaseWord:",
             "moveToEndOfParagraph:",
             "insertNewline:",
             "insertNewline:");

/* 直前の単語をタグにする(control-shift-h) */
    "^H" = ("setMark:",
            "moveWordBackward:",
            "deleteToMark:",
            "insertText:", "<", "yank:", "insertText:", ">",
            "setMark:",
            "insertText:", "</", "yank:", "insertText:", ">",
            "swapWithMark:");

/* 選択範囲の両端を1文字ずつ拡張する(control-shift-=) */
    "^+" = (
            "setMark:",
            "moveForward:",
            "moveForward:",
            "selectToMark:",
            "moveBackwardAndModifySelection:",
           );

}

仕組み

あとは想像力で、さらなる自分仕様の便利キーバインドが出来るかもしれない。(きっと出来る!)