Mac用の人気のアプリケーションランチャー「Alfred」。
単にアプリケーションを起動できるだけでなく、複雑な機能を組み立てることができるWorkflowやクリップボード履歴、スニペット展開機能など多彩な機能を利用できるところが魅力です(PowerPackライセンスが必要な機能もあります)。
そんなAlfredですが、キーワードを利用したスニペット展開機能を利用したあと、クリップボードの貼り付けに失敗する場合があることに気がつきました。
例えば以下のような現象です。
- クリップボードに「ハローワールド」という文字列をコピー
- 「,h」で「Hello World」を展開。「Hello World」が貼り付けられる
- Cmd + Vを実行。何故かもう一度「Hello World」が貼り付けられる
クリップボードの内容がスニペットの内容に置き換えられているようにも見えます。
今回はこの問題を解決する方法を説明します。
タイミングの問題
今回は、公式サポートフォーラムの「snippet followed by paste causes outputs snippet again instead of clipboard content」のやりとりが参考となりました。
質問主は「キーワードを利用したスニペットの展開を利用したあと、クリップボードの内容を貼り付けようとすると、再度スニペットの内容が貼り付けられてしまう」と質問しています。
回答を確認していくと、Alfredのスニペットの貼り付けには、クリップボードが利用されていて、スニペットの展開後0.5秒経過後に、クリップボードの内容が復元されるとの情報が見つかります。
Currently, this delay is set to 0.5 second and is fixed, but this may be configurable in the future. I've added a note for consideration in a future update.
現在この遅延は0.5秒で固定。将来的には変更可能になるかも。将来のアップデートのためにメモを追加しましょう。
すなわち0.5秒まったあとならば、クリップボードの内容を貼り付けることができるというものです。手元で確認してみたところ、確かにこのちょっと待つ方法で問題が解決することが確認できました。
設定で遅延時間を短くする
実は問題を解決するもっと良い方法が存在します。
サポートフォーラムのやりとりの時点(2016年9月)では、遅延時間は0.5秒固定と説明されていましたが、記事執筆時の最新版v3.4.1では、遅延時間の変更がすでに可能になっています。
Alfredの設定画面で「Features > Snippets」を選択し、歯車アイコンをクリックします。
「Restore after」の値を例えば0.5から例えば0.2に変更します。この値が先ほどの遅延時間に該当する模様。
スニペットの展開後もクリップボードの内容が正しく貼り付けられれば成功です。
まとめ
遅延時間をあまり短くしすぎると、スニペットの展開がうまく働かなくなるようです。自分の環境に合わせ0.5から少しずつ減らしていけばよいかもしれません。
Alfredのスニペット展開機能の妙な挙動に困っていた方はお試し下さい。