Skip to content
Make terminal vim and tmux work better together.
Branch: master
Clone or download
Latest commit 0f89b1a Apr 19, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
autoload Remove now-superfluous cursor_in_cmd_line check Apr 17, 2019
plugin Use the <nomodeline> argument in all 'doautocmd' invocations Sep 21, 2017
CHANGELOG.md v1.0.0 Mar 21, 2015
LICENSE.md
README.md Update README.md Apr 19, 2019
vim_e813.png Add a readme Mar 21, 2015

README.md

tmux-focus-events.vim

FocusGained and FocusLost autocommand events are not working in terminal vim. This plugin restores them when using vim inside Tmux.

Here's where that matters:

  • vim-fugitive plugin uses FocusGained for refreshing git branch in status line
  • vim-gitgutter uses FocusGained for refreshing ... (wait for it) git gutter
  • vim-tmux-clipboard uses FocusGained and FocusLost for refreshing clipboard.
  • (get in touch if you know other popular plugins that get improved)

Also, vim-tmux-focus-events makes the autoread option work properly for terminal vim. So far, this was only working in a GUI version.

The autoread feature comes handy when files are changed outside vim, for example when resolving merge conflicts. When you come back to vim and try saving a changed file you'll likely be interrupted with E813:

vim E813

Improved autoread prevents this by automatically reading a file from disk if it was changed. Works only if autoread option is set (enable it with set autoread in .vimrc).

Installation & Configuration

Vim plugin installation

  • Vundle
    Plugin 'tmux-plugins/vim-tmux-focus-events'

  • vim-plug
    Plug 'tmux-plugins/vim-tmux-focus-events'

  • Pathogen
    git clone git://github.com/tmux-plugins/vim-tmux-focus-events.git ~/.vim/bundle/vim-tmux-focus-events

Tmux configuration

In order for Tmux to do its magic focus-events option has to be set to on.

Enable that by installing tmux-sensible plugin, or by setting this line in tmux.conf:

set -g focus-events on

Testing

Tested and working on:

  • OS X

    • Terminal.app
    • iTerm2
  • Linux

    • GNOME Terminal
    • Terminator
    • XTerm
    • Konsole
    • st

It works both on vim and neovim.

Usage

Once installed, the plugin should "just work".

It will have no effect when running GUI vim or inside plain terminal (without Tmux).

Other goodies

Credits

Big chunk of code was taken and adapted from vitality.vim.

Other

In April 2013 a patch was submitted to vim_dev mailing list that enables this functionality natively in vim. Once merged, the functionality from the patch will make this plugin obsolete. I hope that day comes soon.

Licence

MIT

You can’t perform that action at this time.