ザリガニが見ていた...。さんで書かれている、
以下の記事を読んでみたところ、
キーバインド(KeyBindings)の設定をすることで、
爆速でHTMLのタグ打ちができる
ということがわかった。
TextExpanderっぽいことを、無料でできるという感じ。
ただ、TextExpanderは、設定すれば日本語入力モードでも動作するが、
この方法は英数入力モードでないと動作しないっぽい。
- テキスト編集のキー操作を自在にコントロールする - ザリガニが見ていた...。
- AppleScriptもAutomatorも使わずにタグやカッコで囲うキーバインドの設定 - ザリガニが見ていた...。
- AppleScriptもAutomatorも使わずにタグやカッコで囲うキーバインドの設定
タグで囲むキーバインド設定の方針
私がよくやるタグうちは、以下のようなもの。
- 選択範囲を<strong></strong> タグで囲む
- 選択範囲を<p></p> タグで囲む
- 選択範囲を<blockquote><div></div></blockquote> タグで囲む
- 選択範囲を<ul></ul>タグで囲む。できれば各行を<li></li>タグで囲みたい
- 選択範囲を<ol></ol>タグで囲む。できれば各行を<li></li>タグで囲みたい
3. までは、AppleScriptもAutomatorも使わずにタグやカッコで囲うキーバインドの設定 - ザリガニが見ていた...。のソースに「insertNewline:」を混ぜるだけで望みのものができた。
AppleScriptを使えれば、繰り返し処理とか置換とかできるが、
scriptじゃないのでできなさそう。困ったなぁ。 しょうがないので、次のようなステップを踏む。
・選択範囲を<ul></ul>タグで囲む ・各行を<li></li>タグで囲む 確かに5秒はかからずできそうな気がするが...うーん、微妙。
改善の余地あり。
成果物
"^:" = {
/* 選択範囲を<strong> </strong> で囲う(control-:、s) */
"s" = (
"setMark:",
"deleteToMark:",
"insertText:", "<strong>", "yank:", "insertText:", "</strong>",
);
/* 選択範囲を<ul> </ul>で囲う(control-:、u) */
"u" = (
"setMark:",
"deleteToMark:",
"insertText:", "<ul>",
"insertNewline:",
"yank:",
"insertNewline:",
"insertText:", "</ul>",
);
/* 選択範囲を<ol> </ol>で囲う(control-:、o) */
"o" = (
"setMark:",
"deleteToMark:",
"insertText:", "<ol>",
"insertNewline:",
"yank:",
"insertNewline:",
"insertText:", "</ol>",
);
/* 選択範囲を<p> </p>で囲う(control-:、p) */
"p" = (
"setMark:",
"deleteToMark:",
"insertText:", "<p>",
"insertNewline:",
"yank:",
"insertNewline:",
"insertText:", "</p>",
);
/* 選択範囲を<blockquote><div> </div></blockquote>で囲う(control-:、q) */
"q" = (
"setMark:",
"deleteToMark:",
"insertText:", "<blockquote>",
"insertNewline:",
"insertText:", "<div>",
"insertNewline:",
"yank:",
"insertNewline:",
"insertText:", "</div>",
"insertNewline:",
"insertText:", "</blockquote>",
"insertNewline:",
);
/* カーソルがある行を<li> </li>で囲う(control-:、l) */
"l" = (
"selectParagraph:",
/* selectLineだと複数行にまたぐ行が分解されてしまう */
"setMark:",
"deleteToMark:",
"insertTab:",
"insertText:", "<li>", "yank:",
"deleteBackward:","insertText:", "</li>",
"insertNewline:",
);
};
}
インストール方法は以下の通り。
この内容を、文字コードUTF-8のテキストファイルとしてとして、
以下のパスに保存する。
既にファイルがある場合は、一番外側の{}の中身を、以下のファイルをホームのライブラリに保存する。
~/Library/KeyBindings/DefaultKeyBinding.dict
KeyBindingsフォルダが存在しない場合は自分で追加する。
デフォルト設定でテキストシステムの底力を引き出す - ザリガニが見ていた...。
ファイルの一番外側の{}の中に付け加える。
細かいコツなど
・呼び出しを「Ctrl+/」ではなく「Ctrl+:」にした
「:」の方がホームポジションに近いので、コンマ何秒か早い
・半角英数入力モードでしか効かない
日本語入力モードでは効かない。地味に大きな制約。
・DefaultKeyBinding.dictの変更を反映させるには?
使っているアプリを再起動でOK
・繰り返し設定
全ユーザーにオススメ。ぜひやるべき。アプリ再起動で反映される?
NSRepeatCountBinding
# 任意設定:control-u にする場合
defaults write -g NSRepeatCountBinding -string "^u"
# デフォルト設定:なし
defaults delete -g NSRepeatCountBinding
デフォルト設定でテキストシステムの底力を引き出す - ザリガニが見ていた...。
ただし、Ctrl-u , 5 , Ctrl-d とかやっても、10文字削除されない。 その後aとか入力すると、aが10個入力される。 「Ctrl押しながらのキー操作」は繰り返し処理できないっぽい?
まとめ:
- キーバインドの設定により、とてもすばやいタグ整形が可能
- スクリプト言語ではないので複雑なことはできない
- 設定したキーバインドは英数入力モードでないと効かない
制約はあるものの、この圧倒的な速度は魅力。
もうAutomatorには戻れない体になってしまいました!