A simple mail client for Vim.
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
autoload add vim8 support Jan 12, 2019
doc init doc Sep 25, 2018
ftplugin add keybind to change folder Jan 12, 2019
imapclient @ 580dc67 init repo Sep 23, 2018
plugin add name config Jan 12, 2019
syntax refactor edit email Jan 7, 2019
.gitignore add send email function Jan 3, 2019
.gitmodules init repo Sep 23, 2018
license.txt rename license and readme Jan 2, 2019
readme.md update roadmap thanks to reddit Jan 12, 2019
server.py add vim8 support Jan 12, 2019



A simple email client for Vim.


Iris is a simple email client for Vim, inspired by (Neo)Mutt and Alpine.

(Neo)Mutt and Alpine are very good terminal email clients, but they lack of Vim mappings. You can emulate, but it requires a lot of time, patience and configuration. Why trying to emulate, when you can have it in Vim? VimScript and Python are strong enought to do so. I hope you will enjoy it, feel free to contribute!



If it's your first connection, you will be prompted your IMAP password, then your SMTP password (this last one can be skipped, the IMAP password will be used instead).

Change folder



From email list interface

Function Keybind
text preview <Enter>
html preview gp (for go preview)
new email gn (for go new)
change folder gf (for go folder)

From email preview interface

Function Keybind
reply gr (for go reply)
reply all gR (for go reply all)
forward gf (for go forward)

From email edition interface

Function Keybind
save draft :w
send gs (for go send)


Define your name:

g:iris_name = <string>

Default: Iris

Define your email address:

g:iris_email = <string>

Default: iris@localhost


Define host:

g:iris_imap_host = <string>

Default: localhost

Define port:

g:iris_imap_port = <number>

Default: 993

Define login:

g:iris_imap_login = <string>

Default: user


Define host:

g:iris_smtp_host = <string>

Default: same as g:iris_imap_host

Define port:

g:iris_smtp_port = <number>

Default: 587

Define login:

g:iris_smtp_login = <string>

Default: same as g:iris_imap_login



  • List emails from INBOX
  • Preview text/plain emails
  • Preview text/html emails in browser
  • Set imap server as daemon (via sockets)
  • Send a new email
  • Reply to an email
  • Forward email
  • List and change folder (mailbox)
  • Support Vim8+


  • Save password in GPG encrypted file
  • Add list pagination
  • Preview / download attachments
  • Delete emails
  • Cache emails
  • Cache contacts
  • Auto-complete contacts to, cc, bcc
  • Fetch new emails in background (idle mode)
  • Save draft on server (instead of Vim memory)
  • Manage more than one account
  • Setup thread view
  • Support Gmail labels


Git commit messages follow the Angular Convention, but contain only a subject.

Use imperative, present tense: “change” not “changed” nor “changes”
Don't capitalize first letter
No dot (.) at the end

Code should be as clean as possible, variables and functions use the snake case convention. A line should never contain more than 80 characters.

Tests should be added for each new functionality. Be sure to run tests before proposing a pull request.