Automatorで半角スペースをタブ記号に変換する
承前。
半角スペース×4をタブに変換するワークフローを作成しました。
参考
- macのAutomatorについての質問です。テキストファイルの文章の一部を検索/置換し... - Yahoo!知恵袋
- シェルスクリプトの参考
- のったりでMac: 頑張る小人は発展途上。WriteRoom用Automator
- ペーストをAppleScriptとして実行する方法
ワークフロー概要
- シェルスクリプトで取得したテキストを置換
- クリップボードにコピー
- AppleScriptでペースト(⌘V)を実行
シェルスクリプトコードを以下に記します。
for f in "$@" do echo "$f" | sed -e "s/ / /g" done
Automatorにはペースト(または⌘V)を実行するアクションがありません。しかし、キーボード操作を記録してからAppleScriptとして展開することで、アプリを問わず「⌘Vを押す」操作を実行させることができます。そのスクリプトコードは以下の通りです。
(修正:2014-07-09)
えらく時間がかかるのでdelayおよびtimeoutSecondsを0に。けっこう速くなった。とりあえずちゃんと動いている。
-- ⌘Vを押す delay 0 set timeoutSeconds to 0 set uiScript to "keystroke \"v\" using command down" my doWithTimeout(uiScript, timeoutSeconds) on doWithTimeout(uiScript, timeoutSeconds) set endDate to (current date) + timeoutSeconds repeat try run script "tell application \"System Events\" " & uiScript & " end tell" exit repeat on error errorMessage if ((current date) > endDate) then error "Can not " & uiScript end if end try end repeat end doWithTimeout
Automatorのスクリーンショットは以下の通りです。 (img)(http://cl.ly/WMHS/4Space2TabService3.workflow%202014-07-02%2022-40-50.jpg)
また、ワークフローファイルを以下にリンクします。解凍して「Library/Services」に置くことで利用できます。テキストを選択した状態で、メニューバーまたはコンテクストメニュー内の「サービス」から実行できます。
4Space2Tab.workflow(前バージョン:4Space2Tab.workflow)
注意
なぜか一部アプリで正常に機能しない(1行しかペーストされない)ことがありました。(miなど)
バージョン2(2014-07-09)
もうテキスト選択とかコンテクストメニューから実行とかめんどくさいので、ワークフローに⌘A+⌘Cも含めてみた。
ワークフロー概要
入力なしにして、
- AppleScriptで全文選択(⌘A)を実行
- AppleScriptでコピー(⌘C)を実行(delay1秒)
- クリップボードの内容を取得
- シェルスクリプトで取得したテキストを置換
- クリップボードにコピー
- AppleScriptでペースト(⌘V)を実行
ワークフローファイルは以下。
テキスト未選択状態で、メニューバーの「サービス」から実行できます。「システム環境設定>キーボード>ショートカット」で割り振りしておくと楽です。
さすがに、delayを多少取っておかないと、コピー処理が間に合わず失敗する模様。