Lesson25.スニペット起動を使ってみる
サンプル動画
ワークフロー
スニペットは定型的なテキストを短縮語で呼び出す機能
即ち、キーボードから短縮語を入力すると、予め準備していたテキストに置き換えます
Alfredの場合2つの特色があります
・Alfred入力バーにスニペットを入力しても反応しない
・スニペットでワークフローを起動することができる
(スニペットとしてテキストの置き換えをしないロジックも可能)
スニペットを使えばAlfred入力バーを利用せずに、テキスト入力でワークフローを起動
できることになります
ただし、短縮語は固定文字列なので、引数は受け取ません
便利なような、使える場面が少ないような。。。
Alfredのスニペット起動の使い道を考えたのですが
まず浮かんだのが、文字入力中に日本語入力と英字入力の切り替えをする機能
私はUK配列のキーボードなのですが、
OSXとしてCapsLockキーに『入力ソースを切り替える』機能を割り当てることができます
ただ、CapsLockキーが微妙に押しにくい場所にあったり、
左手小指で押すキーが多かったりするので、ちょっと使いにくいのです
スニペットであればキーワードなので自由に設定できそうです
とりあえず『..』で、入力ソースの切り替えをすることにしました
ところが、入力ソース切り替えのスクリプトがわかりません
仕方なく、Alfredワークフローのキーコンボを使って入力ソース切り替えを実装
でもあまり思ったように動きません。
なぜかというと、英字入力中の『.』は、文末のピリオドと解釈されるのか、3連続の
ピリオドでないと反応しません。そもそも日本語入力では半角のピリオドも打ちにくい
ちょっと待てよ、キーストロークだけを考えると
CapsLockの場合、1プッシュ。OSXのショートカットでは⌥+スペースの2プッシュ。
Alfredスニペットでは最大3プッシュ。
1プッシュで実装が必要と考え、何かよいキーがないか探したら、ありました
左上の『§』
最終的にはAlfredではなく、OSXのショートカット設定で対応できました
(fnキーと『§』キーを同時押しして登録ができ、単独キーで使えます)
『§』や『±』(シフト+§)は入力できなくなりましたが、使わない文字ですからね
自分的には満足ですが、Alfredを使わずに解決してしまいました
次に考えたのが、時候の挨拶
月や二十四節気にあわせて、動的にスニペットするみたいな
でも、時候の挨拶を書くようなことはまずない
そうだ、今日の日付にしよう
.nowと入力すると、日付フォーマットを表示して、使いたいものを選ぶという流れ
日付、日付+時刻、時刻という感じでいくつかパターンを作ればOK
ロジックは簡単です
dateコマンドで日付を取得して、表示フォーマットを出力用のJSONにセットするだけ
なお、どの程度発生するのかわかりませんが、処理中に秒が進むのが嫌だったので
現在時刻は1回だけの取得しています
修正がしやすいようにベタベタのロジックで、配列をどんどん追加していき
最後にループでJSONを作成するという感じです
具体的には、現在の配列全体[@]にブランクと追加要素を書いて括弧でくくっています
これは配列の最後に要素を追加する手法です
ご自身がよく使う日付を出すのもよいでしょう
今月末みたいなものや、一定の締切日も作れます
ここまで書いて、ちょっと気になり、日付のフォーマットを出力したAlfredバーに文字を
入力してみると、その文字列をワークフローで受け取ることができました
(スニペット起動のワークフローでも引数が受け取れるようにできるのです)
そこで、”d”と入力したら、日付のバリエーションを表示するように制御を変更
とりあえず、月始や月末を作っています
zshだと、日付のプラスマイナスは『-v』オプションを使います
dateコマンドのmanにあるexamplesが参考になるかも
ScriptFilter(前半ロジック)
ScriptFilter(後半ロジック)
スニペットでのワークフロー起動があったので試してみました
スニペットは引数が取れないのが辛いと思いましたが
ScriptFileterを後続に置けるので引数が取り込めました
Alfred恐るべし
現在の日時をフォーマット整形する
1.Alfredworkflowをダウンロード
2.ファイルをダブルクリックしてワークフローに登録
スニペット(.now)を入力すると現在の日付と時刻の様々なフォーマットで表示
オプションとしてAlfredバーに”d”を入力すると日付のバリエーションを表示
トップページに戻る