himalaya-vim
Vim frontend for Himalaya CLI email client
📫 Himalaya Vim
Vim front-end for the email client Himalaya CLI
We are looking for new maintainer(s), feel free to contact us! (#28)
Table of contents
Installation
First you need to install and configure the Himalaya CLI. Then you can install this plugin with your favorite plugin manager:
packer.nvim
use "https://github.com/pimalaya/himalaya-vim"
:PackerSync
vim-plug
Plug 'https://github.com/pimalaya/himalaya-vim'
:PlugInstall
Configuration
It is highly recommanded to have those Vim options on:
syntax on filetype plugin on set hidden
g:himalaya_account_picker
Defines the provider used for selecting accounts (default keybind: gA):
native(default): a vim native inputfzf: https://github.com/junegunn/fzf.vimfzflua: https://github.com/ibhagwan/fzf-luatelescope: https://github.com/nvim-telescope/telescope.nvim
If no value given, the first loaded (and available) provider will be used (telescope > fzf > native).
let g:himalaya_account_picker = 'native' | 'fzf' | 'fzflua' | 'telescope'
g:himalaya_always_confirm
Defines whenever Himalaya Vim should always ask before moving or deleting a message. Defaults to 1.
g:himalaya_complete_contact_cmd
Defines the command to use for contact completion. When this is set, completefunc will be set when composing emails so that contacts can be completed with <C-x><C-u>.
The command must print each possible result on its own line. Each line must contain tab-separated fields; the first must be the email address, and the second, if present, must be the name. %s in the command will be replaced with the search query.
let g:himalaya_complete_contact_cmd = '<your completion command>'
g:himalaya_config_path
Override the default TOML configuration file.
g:himalaya_custom_email_flags
Defines the list of additional custom flags that himalaya-vim should be aware of. They should be specified as a list of strings:
let g:himalaya_custom_email_flags = ['custom1', 'custom2']
g:himalaya_executable
Defines a custom path for the himalaya binary. Defaults to himalaya.
g:himalaya_folder_picker_telescope_preview
Enables folder preview when picking a folder with the telescope.nvim provider.
let g:himalaya_folder_picker_telescope_preview = 1
g:himalaya_folder_picker
Defines the provider used for selecting folders (default keybind: gm):
native(default): a vim native inputfzf: https://github.com/junegunn/fzf.vimfzflua: https://github.com/ibhagwan/fzf-luatelescope: https://github.com/nvim-telescope/telescope.nvim
If no value given, the first loaded (and available) provider will be used (telescope > fzf > native).
let g:himalaya_folder_picker = 'native' | 'fzf' | 'fzflua' | 'telescope'
Usage
List accounts
:HimalayaAccounts
Opens an account picker to switch between configured accounts. The picker respects the g:himalaya_account_picker configuration or auto-detects available pickers (telescope > fzflua > fzf > native).
List folders
With the native picker (default):
With the telescope.nvim picker:
With the fzf.vim picker:
List, filter and sort envelopes
:Himalaya
| Function | Keybind |
|---|---|
| Change the current account | gA |
| Change the current folder | gm |
| Show previous page | gp |
| Show next page | gn |
| Read email under cursor | <Enter> |
| Write a new email | gw |
| Reply to the email under cursor | gr |
| Reply all to the email under cursor | gR |
| Forward the email under cursor | gf |
| Download all attachments of email under cursor | ga |
| Copy the email under cursor | gC |
| Move the email under cursor | gM |
| Delete email(s) under cursor or visual selection | gD |
| Add the specified flag to the selected email(s) | gFa |
| Remove the specified flag from the selected email(s) | gFr |
| Filter and sort envelopes according to the given query | g/ |
Keybinds can be customized:
nmap gA <plug>(himalaya-account-select) nmap gm <plug>(himalaya-folder-select) nmap gp <plug>(himalaya-folder-select-previous-page) nmap gn <plug>(himalaya-folder-select-next-page) nmap <cr> <plug>(himalaya-email-read) nmap gw <plug>(himalaya-email-write) nmap gr <plug>(himalaya-email-reply) nmap gR <plug>(himalaya-email-reply-all) nmap gf <plug>(himalaya-email-forward) nmap ga <plug>(himalaya-email-download-attachments) nmap gC <plug>(himalaya-email-copy) nmap gM <plug>(himalaya-email-move) nmap gD <plug>(himalaya-email-delete) nmap gFa <plug>(himalaya-email-flag-add) nmap gFr <plug>(himalaya-email-flag-remove) nmap g/ <plug>(himalaya-set-list-envelopes-query)
See himalaya envelopes list --help for more detailed information about the query API.
Read message
| Function | Keybind |
|---|---|
| Write a new email | gw |
| Reply to the email | gr |
| Reply all to the email | gR |
| Forward the email | gf |
| Download all email attachments | ga |
| Copy the email | gC |
| Move the email | gM |
| Delete the email | gD |
| Open the mail in the browser | go |
Keybinds can be customized:
nmap gw <plug>(himalaya-email-write) nmap gr <plug>(himalaya-email-reply) nmap gR <plug>(himalaya-email-reply-all) nmap gf <plug>(himalaya-email-forward) nmap ga <plug>(himalaya-email-download-attachments) nmap gC <plug>(himalaya-email-copy) nmap gM <plug>(himalaya-email-move) nmap gD <plug>(himalaya-email-delete) nmap go <plug>(himalaya-email-open-browser)
Write message
| Function | Keybind |
|---|---|
| Add attachment | ga |
Keybinds can be customized:
nmap ga <plug>(himalaya-email-add-attachment)
When you exit this special buffer, you will be prompted 4 choices:
send: sends the emaildraft: saves the email locallyquit: quits the buffer without savingcancel: goes back to the email edition
Sponsoring
Special thanks to the NLnet foundation and the European Commission that have been financially supporting the project for years:
- 2022: NGI Assure
- 2023: NGI Zero Entrust
- 2024: NGI Zero Core (still ongoing in 2026)
If you appreciate the project, feel free to donate using one of the following providers:
more like this
vim-dap
Vim/Neovim debugger plugin providing a terminal interface to the Debug Adapter Protocol
tobira.nvim
Open the next door in your Vim journey — personalized command discovery based on your actual usage


