VimからSkype

(追記)
昔書いた記事ですけどいろいろ酷いので参考にしない方がいいです。。




自分は普段ターミナルからVimを使っているので、VimShellを利用することがなったんですが、今日使ってみたら普通にすごいですね。
VimShellを使うには(というかVimShellで非同期実行させるには)まずVimProcという物が必要なので、ダウンロードしてからインストールします。コンパイルしないとだめです。それからVimShellをインストールしましょう。あんまり日本語の情報が多いとはいえないですが、まぁdocやpresenに詳しく書いてあります。

このVimShellでSkyshを使えば、VimからSkypeチャットができます。但し、そのままだと不具合があるので少しVimShell用に次の箇所を変更しました。
・何故かプロンプトが上手く表示できなかったので、自分のユーザー名を表示するようにしました。ただし、これだと自分のいるチャットが分からなくなるので、membersコマンドの先頭にチャット名を表示させるようにしました。
・VimShellだと\rとかは当然上手く扱えないので、メッセージを受信したときは改行して新しい行に表示するようにしました。自分が入力中に話しかけられた場合はエンターを押さないと相手のメッセージは表示されません。



ということで変更したもの。 > http://gist.github.com/418312
使い方は、VimからVimShellを起動して、

% iexe ./skysh.py

みたいな感じで。

スクリーンショット


少し色がおかしくなってしまうことがありますが、なかなかいい感じで素晴しい!…と思ったら一つ大きな問題がありました。それは、長文を打つと(というか日本語5文字以上で)なぜが入力した文字が変にリピートされてしまうことです。

うーんこれがなければ普通に使えるんですが‥。ちょっと残念ですね。ちなみに、どうやらこれはPythonのcmd.CmdとVimShellとの相性が悪い?みたいで、例えば、

import cmd

class Test(cmd.Cmd):
  def __init__(self):
    cmd.Cmd.__init__(self)

  def default(self,arg):
    print '> ' + arg

  def emptyline(self):
    pass


if __name__ == '__main__':
  Test().cmdloop()

というプログラムをVimShellから実行させても同じことが起こります。うーんなんでだろ…。
まぁとりあえずVimShellすごいですね。これならWindowsでも使えるかも!?