キーバインド(KeyBindings)の設定でTextExpanderっぽいことができる

ザリガニが見ていた...。さんで書かれている、
以下の記事を読んでみたところ、
キーバインド(KeyBindings)の設定をすることで、
爆速でHTMLのタグ打ちができる

ということがわかった。
TextExpanderっぽいことを、無料でできるという感じ。

ただ、TextExpanderは、設定すれば日本語入力モードでも動作するが、
この方法は英数入力モードでないと動作しないっぽい。

タグで囲むキーバインド設定の方針

私がよくやるタグうちは、以下のようなもの。

  1. 選択範囲を<strong></strong> タグで囲む
  2. 選択範囲を<p></p> タグで囲む
  3. 選択範囲を<blockquote><div></div></blockquote> タグで囲む
  4. 選択範囲を<ul></ul>タグで囲む。できれば各行を<li></li>タグで囲みたい
  5. 選択範囲を<ol></ol>タグで囲む。できれば各行を<li></li>タグで囲みたい

3. までは、AppleScriptもAutomatorも使わずにタグやカッコで囲うキーバインドの設定 - ザリガニが見ていた...。のソースに「insertNewline:」を混ぜるだけで望みのものができた。

問題は4.と5.。
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には戻れない体になってしまいました!

皆さんの拍手が私のモチベーションです。
励ましのコメントも送れるよ!→

ガッツゴリラ

この最も大事な位置にガッツポーズをするゴリラが表示されていることに何の意味があるのだろうか?答え:何もありません。こんなところまでお読みいただきありがとうございました。

Macオンラインウエア情報検索

Loading
Macオンラインウエア情報検索についてはこちらを参照ください。 →「Macオンラインウエア情報検索」をアップデートしました2012

このブログ記事について

このページは、2010年11月 8日 01:30に書かれたブログ記事です。

ひとつ前のブログ記事は「WordPress3.0で画像アップロード(Flash)でエラーが出る件」です。

次のブログ記事は「α波が出る音楽を流しながらキレイな写真のスライドショーをながめてリラックスする」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

アーカイブ