2016年12月19日月曜日

[Vim] あいまい補完プラグイン

いい加減な単語のつづりでも適当に補完してくれるプラグインを作っています。

作成したのはかなり前になりますが、私自身、今現在でも便利に使っていますので紹介します。

AmbiCompletion : Ambiguous completion



概要

バッファの中にある、補完対象の単語と「近い」単語を候補とします。

主に英単語や、プログラムの関数・変数の補完を目的としています。
長い名前の単語を入力する場合、単語の一部を入力して、このプラグインを使って補完するのがユースケースです。

補完前: ng_wd_tb_cpleted
→ 補完後: long_word_tobe_completed 
※補完後の単語が編集中のバッファに存在することが前提です。
気づかずに単語の途中をミスタイプしていて、思うように補完できずにイライラした経験があるのではないでしょうか?
AmbiCompletion を使う場合、上の例にあるように、多少文字が欠けていても補完がされます。
また、単語の先頭文字が一致している必要もありません。

日本語も補完対象になります。
その場合、Vim が単語を区切る単位(wやeといった移動で、その区切りが分かります)での補完になります。
おおよそ、ひらがな・カタカナ・漢字といった単位での補完になります。

補完のされ方

このプラグインのアイディアの元は、「Word Fuzzy Completion」という補完プラグインです。

レーベンシュタイン距離の考え方に沿って、同じバッファの中にある単語の中からある程度近いものを補完候補とします。

差異:

  • 評価方法を変更し、単語の先頭が一致していなくても候補とできる
  • また、連続して一致する文字が多い(似通った単語)ほど高い評価になる
  • +python が不要(全て Vim Script で実装)
  • 速度改善

補完する際のバッファ中にある単語を候補として保管をするため、どうしても速度が犠牲になります。
そのため、単語の集合をキャッシングしたり、単語の収集をカーソル周辺の行に限定したりできるような機能を設けています。

また、最近では、指定したバッファも補完候補の単語の収集対象とできるようになってきています。

まとめ

プログラミングで長い変数名・関数名をタイピングするのが面倒な方は、ぜひどうぞ。

AmbiCompletion : Ambiguous completion

2016年11月26日土曜日

pomi - ポメラSyncされたメモを操作するツール

タイトルにもあるように、ポメラSyncをしたメモを Windows や Mac や Linux から操作するツールを作っています。

軽く説明

ポメラSync

ポメラ DM200 の機能に、ポメラSyncというものがあります。
これは、ポメラのメモを Gmail の特定フォルダとの間で同期する機能です。

ポメラSync自体は、ポメラと iPad や iPhone のメモアプリとを同期することを想定しています。
ですが、要はメモを Gmail のフォルダにあるメールメッセージと相互変換する仕組みですので、メールを操作することができれば、別に iPad や iPhone でなくてもアクセスできます。

pomi

というわけで、ポメラSyncの同期先である Gmail フォルダ(Notes/pomera_sync)に同期されたメモを操作するツールを作りました。

実行ファイルと初期設定(大したことしません)と実行例は、以下の場所で説明しています。

https://shuheikubota.github.io/soft/pomi/

コマンドラインアプリケーションとして作っていますので、以下のように

  • pomi list
  • pomi get
  • pomi put
  • pomi delete
…などといったコマンドを入力することでポメラSyncされたメモをファイルとして保存したり、ファイルをメモとして格納したりすることができます。



pomi はソースも公開しています。
最近では身近なツールは Go言語でプログラミングするようになっているため、今回も Go言語で実装しています。

2016年10月25日火曜日

ポメラ DM200 使ってみて~キーボードの注意点~

Ctrl と CapsLock を入れ替えると

何故か、右の Ctrl も CapsLock になります。
まじか。

2016年10月24日月曜日

ポメラ DM200 使ってみて~ポメラSyncの注意点~

新しいポメラ、DM200を買って使っています。
周辺ツールを作るかも。

購入

ヨドバシ.com で購入。
翌日のお昼ころに配送されるのは良いですね。

ポメラSyncについて

本体の「pomera_sync」が同期対象

私は通常はSDカードに保存するようにしていますが、それだと同期されませんので注意しましょう。

本体メモリ内の「pomera_sync」にメモを保存した上でポメラSyncを実行しましょう。
(フォルダは、一度ポメラSyncを実行したときに作成された気がします)

メニューからポメラSyncすると、上記のフォルダに入っているもののみが同期されます。
現在編集中のファイルが同期されるように思えるかもしれませんが、そうではありません。

ファイルの削除は、同期先「Notes/pomera_sync」からも削除が必要。

ポメラSyncを、iOS との同期ではなくバックアップや別のツール向けに使っている場合には注意が必要です。

IMAPを使って、本体メモリとGmailの同期先「Notes/pomera_sync」を同期しているとのことです。

IMAPの同期の仕組みが不明ですが、「ファイルがない=新しいファイルができた」と判断するらしく、片方から消しただけでは駄目です。
ポメラSyncしたタイミングで、消したはずのファイルが復活することになります。

最後にポメラが同期した際のタイムスタンプを記録するようにはなっていないようですね。