Vmail
Vim Advent Calendar 2012 の 25 日目の記事です。
これ、参加=記事を書くってことだったんですね。
ちゃんとみてなかったので気づかず、今日連絡もらって気がつきました。。。
Vim暦は長いけど、Advent Calenderに書くほど使いこなしてない(- -;;)
でもさすがにドタキャンは出来ないので、Hacker Newsから最近の記事でポイント高いVim関連のものを翻訳しました。
全部訳してると明日になりそうなので、特に重要なポイントだけ翻訳しています。
これでお許しを。。。
Vmailは、GmailをVimから操作可能とするツールです。
CUI操作を好む多くのユーザーのために、Vmailは開発されています。
前提条件
- Gmailアカウント
- 新しいバージョンのVim (VmailはVim 7.3を対象として開発されています)
- SSLサポートでコンパイルされたRuby 1.9.0以上 (VmailはRuby 1.9.2を使用して開発)
- libsqlite3-devとsqlite3 (apt-get、brew、yum、emerge等で導入)
- text-only-mode web browser (w3m, elinks, or lynx) (HTMLメールを表示するために必要)
Ruby 1.9.2の導入には、RVM Version Managerの使用を推奨。
現在最新のVmailは、Unix環境を想定。
GmailアカウントはIMAP-enabledであること。
HTMLの表示にelinksを使いたいのであれば、こちらを参照。
インストール
gem install vmail
"vmail -h"とタイプして、Vmailのヘルプが表示されればインストール成功です。
もしPATHの問題でvmailコマンドを呼べなければ、システム環境を添えて報告していただけると幸いです。
sudo gem install vmail
sudoで実施することで、もしかしたらうまくいくかもしれません。また、rbenyを使っていると、rbeny rehashが問題を起こすことにご注意下さい。
# sudoからrbenyまでの訳は怪しいです。
gem install vmail
Vmailは鋭意開発中です。最新のVmailを入手するには、上記のように再度"gem install vmail"コマンドを実行するだけです。
gem uninstall vmail
上記コマンドで、簡単にVmailの削除が実行されます。
ただし、一部のファイルは削除されません。これについては後述します。
構成定義
Vmailの構成定義ファイルは、.vmailrcという名前で作成します。YAMLフォーマットとし、~/.vmail/defaults/に保存して下さい。
ホームディレクトリに作成しても構いません。この場合、Vmail実行時に構成定義ファイルは~/.vmail/defaultsに移動(move)されます。
以下に、.vmailrcのサンプルを示します。
username: dhchoi@gmail.com
password: password
name: Daniel Choi
signature: |
--
Sent from Vmail. http://danielchoi.com/software/vmail.html
.vmailrcへの定義で、通常使用しない文字(unusual characters?)を使用する場合は、クォーテーションで囲って下さい。
パスワードは記入しなくても構いません。この場合、Vmail起動ごとに手動でパスワードを入力して下さい。
メール送信時に、必ずccに入れたいアドレスがある時は、always_cc:をご使用下さい。同様に、必ずbccに入れたいアドレスがある時は、always_bcc:をご使用下さい。
shell scriptで署名を入れたい場合は、以下に示すようにsignature_script:をご使用下さい。
username: dhchoi@gmail.com
password: password
name: Daniel Choi
signature_script: /home/choi/bin/vmail_signature.sh
vim_opts:を使用すれば、Vmail起動時に任意のVimコマンドを実行できます。例えばカーソル行にフォーカスを当てたい時は、以下のように.vmailrcを作成します。
vim_opts: set cursorline
複数のGmailアカウントを使用したいときの構成定義の指定方法については、こちらを参照下さい。
FirewallによりIMAPがブロックされる時の対応方法については、こちらを参照下さい。
日付フォーマットを変更するには、date_format:を指定下さい。以下は、strptime互換(strptime-compatible)の日付フォーマット例です。フォーマットをクォーテーションで囲むことにご注意下さい。
date_format: '%b %d %I:%M%P'
date_format_previous_years: '%b %d %Y'
連絡先の入力補完機能
VmailはVimのオートコンプリーション機能を使って、メールアドレスの入力補完を行います。この機能を使用するために、連絡先一覧を補完するvmail-contacts.txtファイルを作成します。"-g"オプションを付けてVmailを実行すると、最新500通のメールの受信者とccより連絡先を集め、vmail-contacts.txtを作成します。"-g"オプションに数値を指定することで、対象とするメール数を指定出来ます。
Vmailの起動
構成定義ファイル(と必要であれば連絡先ファイル)を作成しましたら、Vmailを開始出来ます。
以下のコマンドでVmailを起動します。
vmail
Vmailが起動すると、Gmailの受信ボックスより最新100通が表示されます。
Vmail起動時にラベル名を指定すれば、指定したラベルのメールのみ表示されます。
vmail starred
以下のように、ラベル指定に加えて、検索パラメータの指定も可能です。
vmail important from barackobama@whitehouse.gov
メッセージの閲覧
Vmailを起動すると、受信メッセージの一覧が表示されます。カーソルを移動して、表示したいメールを指定する(ENTERを押す)ことで、メールの中身を確認出来ます。メールを指定すると、Vmailの画面は2分割され、メールの中身は下半分に表示されます。メールの指定にENTERキーを押すと、カーソルがメール本文に移動してしまいます。ENTERの代わりに"l"(Look)でメールを指定すれば、カーソルはメール一覧をさしたままとなります。
メール本文にカーソルがある状態で、スペースキーを押すと、メール本文が画面全体に表示されます。スペースキーの代わりに、"C-w"もしくは"C-o"でも構いません。全画面表示から抜けるには、スペースキーかENTERキーを押して下さい(ENTERキーを押した場合は、カーソルがメール一覧に移動します)。
リスト一覧にカーソルがある状態で、スペースキーを押すと、2分割画面から抜けてメール一覧のみの表示となります。スペースキーの代わりに、"C-w"もしくは"C-o"でも構いません。
2分割画面で、メール一覧とメール本文とでカーソルを移動するにはENTERキーを押して下さい。ENTERキーの代わりに、"C-w"もしくは"C-o"でも構いません。
メッセージ一覧ビューで、次のメッセージにカーソル移動するには"
Vmail起動時に全メールを受信しきらなかった時は、以下のようなメッセージが、メッセージ一覧の最下部に表示されます。
> Load 100 more messages. 156 remaining.
読み込めなかったメールのロードには、上記メッセージにカーソルを合わせてENTERキーを押して下さい。
参考情報:"G"と打てば、メッセージ一覧の最下部にジャンプします。
未読メッセージには"+"マークがつきます。
RFC822バージョンのメッセージを閲覧するには、"R"と打ってメールを閲覧下さい。
メールの送信
"c."と打つと、新規メールの作成画面にうつります。
受信メールへの返信は"r"と打って下さい。
全員に返信する場合は、"a"と打って下さい。
メールの転送には、"f"と打って下さい。
上記コマンドでメール作成画面を開くと、以下のようなメールヘッダが表示されます。
from: Daniel Choi
to:
subject:
from:欄は、作成した.vmailrcからアドレスが自動的に記入されます。必要であれば、cc:欄とbcc:欄を追加可能です。
前述のvmail-contacts.txtファイルを作成していれば、送信先アドレスの入力補完機能が使えます。名前かメールアドレスを途中まで記入し、"C-x"もしくは"C-u"をタイプすることで、入力補完が実行されます。"C-n"か"C-p"か"C-u"と打ち、意図するメールアドレスを選択してください。さらに送信先アドレスを記入するには、スペースキーを打つか、何か文字を打って下さい。
Make sure your email addresses are separated by commas and that they all ultimately appear on the same, unbroken line for each field. Rejoin the lines if breaks get inserted.
# すみません、この一文の意味がわかりませんでした。
# 自分のメールアドレスが途中で意図せず分割されていたりしないよう注意ってことでしょうか??
ヘッダを書いたら、メール本文を書いて下さい。ヘッダとメール本文の間に空白行を挟むことを忘れないようご注意下さい。
When you're done writing, send the message by typing ,vs in normal mode.
メールを書き終わったら、ノーマルモードで",vs"と打ち、送信して下さい。
メール作成中に、":w"と打てば下書き保存されます。
:w my_draft_filename.txt
メールを下書き保存する場合は、*.txtとして下さい。それ以外のフォーマットはメールと認識されません。
":wq"と打つと、メールを下書き保存してVmailを抜けます。メールを下書き保存した後、ノーマルモードで",q"と打つと、メール一覧画面に戻ります。
下書き保存したメールを再度編集する時は":e my_draft_filename.txt"と打って下さい。既にメール作成画面にいる時は、":e!"と打って下さい。また、2分割画面の状態で下書き保存したメールを編集したい時は":sp"と打って下さい。
どの状態でも、ノーマルモードで",q"と打てばメール作成画面から抜けられます。
下書きメッセージを直接送信するには、vmailsendコマンドw実行して下さい。
vmailsend < my_message.txt
vmailsendコマンドの使用には、正しい.vmailrcの設定がされており、かつ.vmailrcにパスワードが保存されている必要があります。
Vmailの終了
どの画面でも構わないので、",qq"と打てばVmailは終了します。":qall!"も同様です。
ヘルプ
",?"と打つと、ヘルプ画面がブラウザに開きます。
まったく予期してなかったので、仕事の合間に書いてます。
検証していないところが多いので、確認して随時更新していく予定です。