✨ Smoothly navigate between neovim and multiplexer(s) ✨
Navigator.nvim
provides set of functions and commands that allows you to seamlessly navigate between neovim and different terminal multiplexers.
- With packer.nvim
use {
'numToStr/Navigator.nvim',
config = function()
require('Navigator').setup()
end
}
- With vim-plug
Plug 'numToStr/Navigator.nvim'
" Somewhere after plug#end()
lua require('Navigator').setup()
require('Navigator').setup()
- Keybindings
Note - This plugin doesn't provide any keybindings by default, feel free to use (and modify) the following or create your own keybindings.
vim.keymap.set({'n', 't'}, '<A-h>', '<CMD>NavigatorLeft<CR>')
vim.keymap.set({'n', 't'}, '<A-l>', '<CMD>NavigatorRight<CR>')
vim.keymap.set({'n', 't'}, '<A-k>', '<CMD>NavigatorUp<CR>')
vim.keymap.set({'n', 't'}, '<A-j>', '<CMD>NavigatorDown<CR>')
vim.keymap.set({'n', 't'}, '<A-p>', '<CMD>NavigatorPrevious<CR>')
Note - This plugin doesn't provide any configuration for multiplexers, feel free to use (and modify) the snippet for multiplexer of your choice by following the links below.
Note: for tmux, remember to add additional keybindings for tmux window switching if you wish to also smoothly switch tabpages with that:
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n 'M-p' if-shell "$is_vim" 'send-keys M-p' 'select-window -p'
bind-key -n 'M-n' if-shell "$is_vim" 'send-keys M-n' 'select-window -n'
bind-key -n 'M-|' if-shell "$is_vim" 'send-keys M-|' 'select-window -l'
Following options can be given when calling setup({config})
. Below is the default configuration
{
-- Save modified buffer(s) when moving to mux
-- nil - Don't save (default)
-- 'current' - Only save the current modified buffer
-- 'all' - Save all the buffers
auto_save = nil,
-- Disable navigation when the current mux pane is zoomed in
disable_on_zoom = false,
-- Multiplexer to use
-- 'auto' - Chooses mux based on priority (default)
-- table - Custom mux to use
mux = 'auto'
}
NavigatorLeft
- Go to left split/paneNavigatorRight
- Go to right split/paneNavigatorUp
- Go to upper split/paneNavigatorDown
- Go to down split/paneNavigatorPrevious
- Go to previous split/pane
Read
:h navigator.commands
for more info
require('Navigator').left()
require('Navigator').right()
require('Navigator').up()
require('Navigator').down()
require('Navigator').previous()
Read
:h navigator.api
for more info
- vim-tmux-navigator - Motivator and Vimscript cousin