diff --git a/nvim/plugin-config.vim b/nvim/plugin-config.vim index 761df35..e8d316b 100644 --- a/nvim/plugin-config.vim +++ b/nvim/plugin-config.vim @@ -28,4 +28,5 @@ source ~/.config/nvim/plugins/treesitter.lua source ~/.config/nvim/plugins/trouble.lua source ~/.config/nvim/plugins/ultisnips.vim source ~/.config/nvim/plugins/vim-easymotion.vim +source ~/.config/nvim/plugins/vimux.vim source ~/.config/nvim/plugins/web-devicons.lua diff --git a/nvim/plugins.vim b/nvim/plugins.vim index a6eeb7d..50ea55e 100644 --- a/nvim/plugins.vim +++ b/nvim/plugins.vim @@ -77,6 +77,11 @@ Plug 'hoob3rt/lualine.nvim' Plug 'akinsho/bufferline.nvim' Plug 'kyazdani42/nvim-web-devicons' +" TMUX +Plug 'christoomey/vim-tmux-navigator' +Plug 'preservim/vimux' +Plug 'tyewang/vimux-jest-test' + " Tpope Plug 'tpope/vim-abolish' Plug 'tpope/vim-commentary' diff --git a/nvim/plugins/vimux.vim b/nvim/plugins/vimux.vim new file mode 100644 index 0000000..0b43c2b --- /dev/null +++ b/nvim/plugins/vimux.vim @@ -0,0 +1,14 @@ +" Vimux +" https://github.com/preservim/vimux + +let g:VimuxHeight = "30" +let g:VimuxOrientation = 'h' +let g:VimuxUseNearestPane = 0 + +" Mappings +nmap vt :VimuxTogglePane +nmap vp :VimuxPromptCommand +nmap vl :VimuxRunLastCommand +nmap vj :RunJest +nmap vjb :RunJestOnBuffer +nmap vjf :RunJestFocused diff --git a/tmux.conf b/tmux.conf index b96189d..1174315 100644 --- a/tmux.conf +++ b/tmux.conf @@ -71,6 +71,25 @@ bind-key -T copy-mode-vi Enter send-keys -X copy-selection bind p run "tmux paste-buffer" +# Smart pane switching with awareness of Vim splits. +# See: https://github.com/christoomey/vim-tmux-navigator +is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ + | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" +bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L' +bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D' +bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U' +bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R' +tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")' +if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \ + "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'" +if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \ + "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'" + +bind-key -T copy-mode-vi 'C-h' select-pane -L +bind-key -T copy-mode-vi 'C-j' select-pane -D +bind-key -T copy-mode-vi 'C-k' select-pane -U +bind-key -T copy-mode-vi 'C-l' select-pane -R + set -g @shell_mode 'vi' # List of plugins (prefix + I to install, prefix + U to update)