Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save stakiran/a8565a247638d63329b500bfa3bd563d to your computer and use it in GitHub Desktop.

Select an option

Save stakiran/a8565a247638d63329b500bfa3bd563d to your computer and use it in GitHub Desktop.
170905_100956 Text Expansion の諸概念や用語

TE

Text Expansion の略。

パターン, トリガーワード, テキスト

パターンはトリガーワードとテキストの組。

TE はトリガーワードが入力されると、対応するテキストを挿入するという仕組み。

たとえば トリガーワード li[、テキストが <li></li> とすると、li[ と打った時点で <li></li> が挿入される。この時、既に入力済の li[ 部分は BackSpace 消去される。

以降、パターンは「li[<li></li>」のように記述する。

発動

あるトリガーワードが完全に入力され、テキストが挿入されること。

終端(トリガー終端)

TE はトリガーワードが入力されたらテキストを挿入するものだが、では何を以て「トリガーワードが入力された」とみなすのか。実は色んなやり方がある。

  • (1)Tab, Space, Enter などの Whitespace を常に終端として使う
    • ⭕ 意図通りに発動させやすい
    • ❌ 一文字分余分な入力が必要
  • (2)トリガーワードの最後の文字を終端にする
    • ⭕ 余分な入力がない
    • ❌ 誤発動しやすい

ここで「トリガーワードの最後の文字を Whitespace にすること」と (1) は何が違うのか?という疑問が生じるが、前者は各トリガーワード中に Whitespace を含めるのに対し、(1) は TE によってシステム的に「最後には(たとえば)Enterを打ちなさい」としている。なのでトリガーワードが 100 個あれば、前者だと 100 回分の設定が必要で、後者だとシステム設定一つで済む。

マクロ

テキスト中に記載可能な、特別な意味を持つ文字列。

  • テキスト挿入後にキャレットを移動させる
    • 例: li[<li></li> を挿入する場合
    • <li>(ここにキャレットを移動させる)</li>
  • 現在の日付時刻を所定フォーマットで挿入する
    • dt[[2017/09/05 10:14:28 を挿入する

キャンセル(トリガーキャンセル)

TE は、「このトリガーワードの n 文字目までは既に入力されている(あとこれとこれと打てば発動する)」といった情報をリアルタイムに記録している。キャンセルとは、この記録情報をクリアすること。

たとえばパターン「li[<li></li>」があるとして、li まで入力済の場合、次に [ を打てば発動するが、ここでキャンセルを実行すると「li まで入力した」という記録がクリアされるため、[ を打っても発動しない。

キャンセルは誤発動を意図的に防ぐために適宜用いる操作である。

バック調整

発動時に入力済のトリガーワードを BackSpace で消去すること。

侵食

バック調整が失敗すると、以下のいずれかが起こる。

  • トリガーワードの前の文章まで消去している( 侵食。こちらについて言及する)
  • トリガーワードを消去しきれていない

侵食は日本語入力モード(「ひらがな」)中に発動させると生じる。

たとえば「ari/ありがとう」があるとして、全角入力中に 誠にari/ と打ったとする。結果は「誠ありがとう」となる(「に」が消えている)。この時、バック調整で消去するのは a r i / の四文字であるが、日本語入力モード中だと の三文字になっている。一文字分が余計に BackSpace されてしまうのである。

侵食を回避するためには、母音を含まないトリガーワードを使うなり、日本語入力モード中に発動させないなどの対策が必要である。

崩れ(テキスト崩れ)

発動後、挿入されるテキストが一部崩れる(余計な空白や改行が入る、意図しない文字が入る)現象。

崩れは

  • テキストが複数行文字列であり、
  • かつ挿入先のテキストエディタで自動インデント(など入力支援機能)が働いている

場合に起こる。

スマートトリガー

直感的に、自然に発動させるための仕組み全般を指す。

たとえば「BackSpaceを考慮したトリガー判定」が挙げられる。これは、l i a <BackSpace> [ と入力した時に、li[ が入力された、と解釈する方式であり、「li[ → 」のパターンを発動できる。(もしこの機能が無い場合、lia[ と解釈されるため発動しない)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment