Awesome
tmux-focus-events.vim
Update: this plugin is now obsolete and no longer needed as both neovim and
vim (since version 8.2.2345
) have native support for this functionality.
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
andFocusLost
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:
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<br/>
Plugin 'tmux-plugins/vim-tmux-focus-events'
-
vim-plug<br/>
Plug 'tmux-plugins/vim-tmux-focus-events'
-
Pathogen<br/>
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
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
- vim-tmux - vim plugin for
tmux.conf
- tmux-resurrect - restore tmux environment after system restart
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.