uimのtext acquisition APIを使って、セレクションやクリップボード内の
文字列に対して処理を行うIMを作ってみました。

  + 外部フィルタ (uim-external-filter)
  + 外部エディタ起動 (uim-external-editor)
  + カタカナ・全角変換 (uim-japan-util)
  + 文書整形 (uim-fmt-ja)
  + 文字数カウント (uim-wordcount)

IMで行う利点としては、エディタやブラウザ等のプラグインを探したり、
アプリごとに異なる操作を調べなくても、IM側で統一した操作で行える、
という点があります。

text acquisition APIに対応しているブリッジ(uim-gtk,uim-qt4,uim-qt3)
でのみ使えます。
なお、外部フィルタや外部エディタに関しては、
出力のみを使う場合はこれら以外のブリッジでも使用可能です。
# また、uim-wordcountとuim-fmt-jaに関しては、
# コマンドラインから使用可能にするスクリプトもあります。
## uim-1.7.1でSEGVが発生する場合は、r7271の変更を適用してみてください。

* uim-external-filter
  https://github.com/deton/uim-external-filter
  セレクションを対象に、外部フィルタコマンドを適用した内容で置換。
  外部フィルタとして任意のコマンドを登録・実行可能です。

  コマンドの出力を候補ウィンドウに表示する機能もあります。
    + wcコマンドの出力のように結果を参照したいだけの外部フィルタ
    + 置換する前に、新しい内容を確認したい場合
  さらに、改行で区切って候補リストとして表示、選択した候補のcommitも可能です。
    + lookコマンドを使って補完(;;look $(read a; echo $a))
    + SKK形式辞書をgrepして、かな漢字変換候補を表示
    - ls ~の出力からファイル名を選んで挿入

  その他の使用例:
    + 文書整形(fmt)
    + 文書整形後、引用マーク"> "を行頭に付ける(nkf -w -f | sed -e 's/^/> /')
    + <blockquote>でくくる(echo '<blockquote>'; cat -; echo '</blockquote>')
    + JSON文字列を整形(python -mjson.tool)
    + ファイルに書き出してエディタを起動(cat ->~/aaa;leafpad ~/aaa>/dev/null&)
    - ファイル内容を読み込み(cat ~/aaa)
    - 現在の日時を挿入(date)
    - 明日の天気を表示(lynx)
# vimエディタの外部フィルタ(:!)に相当

* uim-external-editor
  https://github.com/deton/uim-external-editor
  外部エディタを起動。
# Google Chromeのように、拡張機能からは外部エディタを起動できない場合など用

* uim-japan-util
  https://github.com/deton/uim-japan-util
  以下の変換を行います。
  - ひらがな←→カタカナ
  - 全角英数←→半角英数
  - 半角カナ←→全角カナ
# 英数文字も全角での入力を求める入力フィールドがある場合用。
# Emacsのzenkaku-region等に相当。

* uim-fmt-ja
  https://github.com/deton/uim-fmt-ja
  文書整形。(fmtコマンドやnkf -f相当)

* uim-wordcount
  https://github.com/deton/uim-wordcount
  文字数等を数えて候補ウィンドウに表示。(wcコマンド相当)
# 文字数制限のある入力フィールドを使う場合用


# セレクションを対象に処理を行うIMとして、
# uim-wordcount, uim-fmt-ja, uim-japan-utilと作ってきて、
# やっぱりsedとかで加工したくなったので、外部フィルタを思いつきました。
-- 
木原 英人 / KIHARA, Hideto / de...@m1.interq.or.jp
http://www1.interq.or.jp/~deton/

-- 
Google Groups "uim-ja" group
uim-ja@googlegroups.com
http://groups.google.com/group/uim-ja/about

メールによる返信